![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли обратиться к свойствам компонента через форму? [D5, 95/98]
Pil © (2005-12-01 16:11:00)Уважаемые мастера!
Допустим на форме несколько компонентов Edit(edtA, edtB, edtC). Мне нужно написать универсальную функцию для них, которая бы проверяла введенный текст.
Как можно обратиться к свойству Text активного компонента Edit через форму, на которой он расположен (чтобы не писать edtA.Text, edtB.Text, edtC.Text)? Возможно ли такое?
Pil (2005-12-01 17:15:00) [1]Ega23, спасибо большое, теперь все прояснилось! ))
Pil (2005-12-01 17:14:00) [2]Господа, внимание! Вопрос состоит не в том, когдавызывается обработчик, а какобратиться к свойству Text активного Edit!
procedure TForm1.edtFromExit(Sender: TObject);
Var S: string;
begin
S := Sender.Text;// Undeclared identifier: 'Text'
end;
Ega23 (2005-12-01 17:13:00) [3]
> procedure TForm1.edtFromExit(Sender: TObject);
> Var S: string;
> begin
> S := Sender.Text;//здесь ошибка Undeclared identifier:
> 'Text'
> end;
>
if (Sender is TEdit) then s:=TEdit(Sender).Text;
Pil (2005-12-01 17:09:00) [4]
> У TEdit есть событие OnExit
> Там единственный параметр - Sender. Это тот объект, который
> вызвал обработчик, т.е. твой Edit. Если одну и ту же процедуру
> повесить на OnExit всех Edit-ов, получишь требуемый результат
Хорошо, пусть будет так:
procedure TForm1.edtFromExit(Sender: TObject);
Var S: string;
begin
S := Sender.Text;// здесь ошибка Undeclared identifier: 'Text'
end;
Плохиш (2005-12-01 17:06:00) [5]
> Pil © (01.12.05 16:47) [5]
> нужен именно активный контрол, т.к. проверка осуществляется
> перед выходом из Эдита.
TEdit.OnExit + F1
Vlad (2005-12-01 17:03:00) [6]У TEdit есть событие OnExit
Там единственный параметр - Sender. Это тот объект, который вызвал обработчик, т.е. твой Edit. Если одну и ту же процедуру повесить на OnExit всех Edit-ов, получишь требуемый результат
Pil (2005-12-01 16:47:00) [7]
> ты уверен что тебе нужен именно активный контрол?
> Или тебе нужно в цикле перебрать все Editы на форме и проверить
> их текст?
нужен именно активный контрол, т.к. проверка осуществляется перед выходом из Эдита. Цикл тут не подходит.
Vlad (2005-12-01 16:41:00) [8]ты уверен что тебе нужен именно активный контрол?
Или тебе нужно в цикле перебрать все Editы на форме и проверить их текст?
Pil (2005-12-01 16:32:00) [9]
> TEdit(FindComponent( Твой эдит)).Text
Что значит "мой эдит"? Вы имеете ввиду:
TEdit(FindComponent(Form1.ActiveControl.Name)).Text?
FindComponent требует параметр типа строка, а через ActiveControl.Name типа TComponentName.
begin...end (2005-12-01 16:16:00) [10]ActiveControl
stone (2005-12-01 16:14:00) [11]TEdit(FindComponent(Твой эдит)).Text