| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Отличить TWinControl от переменных !!! |
| Автор: AlexV1 5.3.2004, 10:25 |
| Всем привет! В ф-ю нужно передать объект любого типа (TEdit, integer, real, TForm и т.д) 1) Какого типа должени быть вх.параметр ? 2) В функции как-то нужно отделить тип от класса, т.е запрограммировать такую логику IF (вх.параметр от TWinControl) then действие0 else if (вх.параметр - обычная переменная, напр-р integer или string) then begin // Определяем тип этой переменной, например через VarType if тип=1 then действие1 if тип=2 then действие3 ... if тип=N then действиеN end; =С уважением, AlexV. |
| Автор: Illusion Dolphin 5.3.2004, 10:33 |
| procedure my_procedure(sender : tobject); begin if sender is TWinControl then showmessage(inttostr(Sender as Twincontrol).top)); if sender is TEdit then showmessage((Sender as TEdit).text); end; |
| Автор: Cashey 5.3.2004, 10:36 |
| Лажа какая-то, уж извените |
| Автор: Петрович 7.3.2004, 00:03 | ||||
Вот тебе пример из жизни, точнее из моей библиотеки:
TForm здесь не присутствует, однако, бывают случаи, когда требуются и универсальные манипуляции и с TForm. |
| Автор: Unregistered 10.3.2004, 01:56 |
| Cashey самый жизненный пример Sender:TObject. Было бы весело, если бы передавалось имя сендера (это вообще не всегда возможно!). :-D |
| Автор: p0s0l 11.3.2004, 23:28 | ||
Можно попробовать использовать перегрузку:
Например, если сделать вызов abc(StringGrid1), то вызовется вариант abc(p : TWinControl); |
| Автор: Петрович 12.3.2004, 09:43 |
| Перегрузка катит только когда тип компонента известен уже на этапе компиляции. |