![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение к объекту [D7, WinXP]
SergeyAKM © (2006-08-18 21:51:00)В Delphi работаю недавно. До этого был Omnis. Так вот там был интересных ход.
На форме два Edit'та : Edit1 и Edit2
И код, где i: integer
i:=1;
Edit(i).Text:='';
i:=2;
Edit(i).Text:='';
исполнялся.
Есть ли такая возможность на Delphi.
Германн (2006-08-19 02:30:00) [1]
> Джо © (19.08.06 02:21) [16]
5-ть с плюсом!
Не, ну кто-бы сомневался в твоих способностях! Только не
я!
Германн (2006-08-19 02:23:00) [2]
> Джо © (19.08.06 02:12) [15]
Бывает. А уж у меня - так вообще вылазит за все разумные рамки :-)
Джо (2006-08-19 02:21:00) [3]Впрочем, в порядке шутки, такой синтаксис как в [0] вполне можно воссоздать на Delphi:
TForm1 = class(TForm)
...
private
function Edit (Number: Integer): TEdit;
...
end;
implementation
function TForm1.Edit(Number: Integer): TEdit;
var
Cmp: TComponent;
begin
Cmp := FindComponent(Format('Edit%d',[Number]));
if Cmp is TEdit then
Result := TEdit(Cmp)
else
Result := nil
end;
Теперь воспроизводим синтаксис языка Omnis (что бы это ни было):
i:=1;
Edit(i).Text:='';
i:=2;
Edit(i).Text:='';
:)
Джо (2006-08-19 02:12:00) [4]> [14] Германн © (19.08.06 02:09)
> Токмо и ты разберись с
Ну, опечатался я, опечатался. :) Точнее, неуклюже выразился и не прочитал свой пост перед отправкой...
Германн (2006-08-19 02:09:00) [5]Понял суть. Согласен в некоторых деталях.
Токмо и ты разберись с
> Джо © (19.08.06 01:04) [11]
>
> > [9] palva © (19.08.06 00:44)
> > Есть. Только скобки должны быть квадратными.
>
> И получится уродливая конструкция, ломающая здравое naming
> convention: называть массив Edit'ов — Edits. :)
>
Джо (2006-08-19 01:24:00) [6]> [12] Германн © (19.08.06 01:16)
> Серёга. А чем она "уродлива"?
Конструкция
var
Edit: array of TEdit;
мне кажется уродливой в сравнении с
var
Edits: array of TEdit;
из-за потенциальной путаницы, которую она может привнести.
Германн (2006-08-19 01:16:00) [7]
> Джо © (19.08.06 01:04) [11]
>
> И получится уродливая конструкция, ломающая здравое naming
> convention: называть массив Edit'ов — Edits. :)
Серёга. А чем она "уродлива"?
Джо (2006-08-19 01:04:00) [8]> [9] palva © (19.08.06 00:44)
> Есть. Только скобки должны быть квадратными.
И получится уродливая конструкция, ломающая здравое naming convention: называть массив Edit'ов — Edit s. :)
Германн (2006-08-19 00:48:00) [9]
> Ketmar © (19.08.06 00:44) [8]
А palva © (19.08.06 00:44) [9] нас всех обскакал. :-)
palva (2006-08-19 00:44:00) [10]
> Есть ли такая возможность на Delphi.
Есть. Только скобки должны быть квадратными.
Ketmar (2006-08-19 00:44:00) [11]> [6] Германн © (19.08.06 00:42)
дык как раз всё от ситуации зависит. я же сказал "или", а не "только так". %-)
Германн (2006-08-19 00:44:00) [12]Да, "и не лучшели в данной ситуации его скляпать?
Германн (2006-08-19 00:42:00) [13]
> Ketmar © (19.08.06 00:26) [5]
>
> > [4] Германн © (19.08.06 00:25)
> или не делать новый велосипед и использовать Controls[].
> %-)
>
Ну так, "осторожно говоря" (не дай бог опять дать тебе повод "размазать" меня "по полной"), а ты учёл сколько может быть на форме контроллов? С учётом наличия на вышеописанной TTabControl, TPageControl, TTabSet, TTabbedNotebook?
Не проще ли в данной ситуации "скляпать велосипед"?
Ketmar (2006-08-19 00:26:00) [14]> [4] Германн © (19.08.06 00:25)
или не делать новый велосипед и использовать Controls[]. %-)
Германн (2006-08-19 00:25:00) [15]
> Но вполне можно искать по имени, используя метод FindComponent.
Или при создании этих компонент заполнять массив Edits = array of TEdit, если они создаются в рантайме. Или заполнять сей массив в обработчике формы OnCreate, OnShow, если они созданы в дизайнтайме.
SergeyAKM (2006-08-18 21:58:00) [16]Благодарю за ответ и оперативность.
Джо (2006-08-18 21:56:00) [17]> [1] Джо © (18.08.06 21:54)
Но вполне можно искать по имени, используя метод FindComponent.
Джо (2006-08-18 21:54:00) [18]> Есть ли такая возможность на Delphi.
Такойнету.