Вопрос № 143045: Уважаемые эксперты, привидите плиз пример кода, в котором бы использовалось перечисление на форме контролов типа Edit. В VBA я это делал так: for i=1 to 9 x=Form1.Controls("TextBox" & i).Value А как такой же фокус провернуть ...
Вопрос № 143.045
Уважаемые эксперты, привидите плиз пример кода, в котором бы использовалось перечисление на форме контролов типа Edit. В VBA я это делал так: for i=1 to 9 x=Form1.Controls("TextBox" & i).Value
А как такой же фокус провернуть в Дельфи?
Отправлен: 04.09.2008, 12:13
Вопрос задал: Maximus777 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Denisss
Здравствуйте, Maximus777!
В Delphi это делается примерно так:
Код:
var i: Integer; x: String; begin for i:= 1 to 9 do begin x:= TEdit(Self.FindComponent('Edit' + IntToStr(i))).Text; // Делаем что-нибудь с х end; end;
Функция
FindComponent ищет компоненты по их именам. По умолчанию компоненты типа TEdit так и обозначаются в Delphi: Edit1, Edit2, ..., Edit9. IntToStr преобразует число в текст. TEdit() преобразует класс TComponent в TEdit, что дает доступ к его функциям и свойствам.
Удачи! --------- Все должно быть сделано настолько просто, насколько это возможно. Но не проще. (с) А.Эйнштейн
Ответ отправил: Denisss (статус: Профессор) Россия, Москва ICQ: 281599577 ---- Ответ отправлен: 04.09.2008, 12:45 Оценка за ответ: 5 Комментарий оценки: Спасибо. То что надо! Надо признать что в VBA это делается намного проще.
Отвечает: Кэр Лаэда
Здравствуйте, Maximus777!
Код:
procedure AllControls;
function rec(Par: TComponent): Boolean; var i: Integer; begin for I := 0 to Par.ComponentCount - 1 do begin if Par.Components[i] is TEdit then begin //что сделать с компоненттом
end;
end else Rec(Par.Components[i]);
end; end;
var
par: TWinControl; begin
par := Form1; rec(Par);
end;
;
этот код должен найти все эдиты те которые находятся на форме даже если они на панелях или на других компонентах
--------- Я знаю что ничего не знаю, но я знаю больше, чем тот кто думает что знает все
Ответ отправил: Кэр Лаэда (статус: Практикант)
Ответ отправлен: 04.09.2008, 13:06 Оценка за ответ: 4 Комментарий оценки: Я примерно так и сделал, нарыв где-то в сети такой пример. Но это немного не то. В VBA примере я просто перебираю нужные мне контролы (а ведь общее кол-во может быть больше) и всё. Пример Denisss\'а ближе к теме, буду пробовать его внедрять.