![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ссылка на контролы класса TCombobox и TEdit [D7, XP]
новичок2012 © (2012-04-17 18:25:00)Здравствуйте! На форме есть два компонента ComboBox1 и Edit1. Мне нужно обратиться к их свойствам Visible и Text.
Поиск осуществляется в цикле вида: for I := 0 to Form1.ControlCount -1 do. Когда найден контрол, нужно проверить его свойства Text и Visible.
Но тут возникла проблема: как это сделать вне зависимости от найденного контрола и не дублируя код?
Хотелось бы что-нибудь вида:
for I := 0 to Form1.ControlCount -1 do
if (Form1.Controls[I] is TComboBox) or (Form1.Controls[I] is TEdit) then
begin
некаяПеременная := Form1.Controls[I];
if (некаяПеременная.Visible) and (Length(некаяПеременная.Text)) then
...делаем что нужно
Как это реализовать?
новичок2012 (2012-04-17 19:03:00) [1]Спасибо, посмотрю!
begin...end (2012-04-17 18:50:00) [2]У TControl есть public-методы GetTextLen и GetTextBuf/SetTextBuf.
Влад (2012-04-17 18:48:00) [3]uses typinfo;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i: tcomponent;
begin
i := edit1;
if IsPublishedProp(i,'Text') then
SetPropValue(i,'Text','asdfg');
CRLF (2012-04-17 18:33:00) [4]Ну Visible вообще без проблем, он паблик на уровне TControl. Для доступа к защищённому свойству Text придётся провернуть небольшой хак...
type
TControlAccess = class(TControl);
TControlAccess(Form1.Controls[I]).Text := ...