Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

Обращение к объекту   Найти похожие ветки 

 
SergeyAKM ©   (2006-08-18 21:51) [0]

В Delphi работаю недавно. До этого был Omnis. Так вот там был интересных ход.
На форме два Edit"та : Edit1 и Edit2
И код, где i: integer

i:=1;
Edit(i).Text:="";
i:=2;
Edit(i).Text:="";


исполнялся.
Есть ли такая возможность на Delphi.


 
Джо ©   (2006-08-18 21:54) [1]

> Есть ли такая возможность на Delphi.

Такой нету.


 
Джо ©   (2006-08-18 21:56) [2]

> [1] Джо ©   (18.08.06 21:54)

Но вполне можно искать по имени, используя метод FindComponent.


 
SergeyAKM ©   (2006-08-18 21:58) [3]

Благодарю за ответ и оперативность.


 
Германн ©   (2006-08-19 00:25) [4]


> Но вполне можно искать по имени, используя метод FindComponent.

Или при создании этих компонент заполнять массив Edits = array of TEdit, если они создаются в рантайме. Или заполнять сей массив в обработчике формы OnCreate, OnShow, если они созданы в дизайнтайме.


 
Ketmar ©   (2006-08-19 00:26) [5]

> [4] Германн ©   (19.08.06 00:25)
или не делать новый велосипед и использовать Controls[]. %-)


 
Германн ©   (2006-08-19 00:42) [6]


> Ketmar ©   (19.08.06 00:26) [5]
>
> > [4] Германн ©   (19.08.06 00:25)
> или не делать новый велосипед и использовать Controls[].
>  %-)
>

Ну так, "осторожно говоря" (не дай бог опять дать тебе повод "размазать" меня "по полной"), а ты учёл сколько может быть на форме контроллов? С учётом наличия на вышеописанной TTabControl, TPageControl, TTabSet, TTabbedNotebook?
Не проще ли в данной ситуации "скляпать велосипед"?


 
Германн ©   (2006-08-19 00:44) [7]

Да, "и не лучше ли в данной ситуации его скляпать?


 
Ketmar ©   (2006-08-19 00:44) [8]

> [6] Германн ©   (19.08.06 00:42)
дык как раз всё от ситуации зависит. я же сказал "или", а не "только так". %-)


 
palva ©   (2006-08-19 00:44) [9]


> Есть ли такая возможность на Delphi.

Есть. Только скобки должны быть квадратными.


 
Германн ©   (2006-08-19 00:48) [10]


> Ketmar ©   (19.08.06 00:44) [8]

А palva ©   (19.08.06 00:44) [9] нас всех обскакал. :-)


 
Джо ©   (2006-08-19 01:04) [11]

> [9] palva ©   (19.08.06 00:44)
> Есть. Только скобки должны быть квадратными.

И получится уродливая конструкция, ломающая здравое naming convention: называть массив Edit"ов — Edits. :)


 
Германн ©   (2006-08-19 01:16) [12]


> Джо ©   (19.08.06 01:04) [11]
>
> И получится уродливая конструкция, ломающая здравое naming
> convention: называть массив Edit"ов — Edits. :)

Серёга. А чем она "уродлива"?


 
Джо ©   (2006-08-19 01:24) [13]

> [12] Германн ©   (19.08.06 01:16)
> Серёга. А чем она "уродлива"?

Конструкция
var
 Edit: array of TEdit;

мне кажется уродливой в сравнении с

var
 Edits: array of TEdit;

из-за потенциальной путаницы, которую она может привнести.


 
Германн ©   (2006-08-19 02:09) [14]

Понял суть. Согласен в некоторых деталях.
Токмо и ты разберись с
> Джо ©   (19.08.06 01:04) [11]
>
> > [9] palva ©   (19.08.06 00:44)
> > Есть. Только скобки должны быть квадратными.
>
> И получится уродливая конструкция, ломающая здравое naming
> convention: называть массив Edit"ов — Edits. :)
>


 
Джо ©   (2006-08-19 02:12) [15]

> [14] Германн ©   (19.08.06 02:09)
> Токмо и ты разберись с

Ну, опечатался я, опечатался. :) Точнее, неуклюже выразился и не прочитал свой пост перед отправкой...


 
Джо ©   (2006-08-19 02:21) [16]

Впрочем, в порядке шутки, такой синтаксис как в [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:23) [17]


> Джо ©   (19.08.06 02:12) [15]

Бывает. А уж у меня - так вообще вылазит за все разумные рамки :-)


 
Германн ©   (2006-08-19 02:30) [18]


> Джо ©   (19.08.06 02:21) [16]

5-ть с плюсом!
Не, ну кто-бы сомневался в твоих способностях! Только не
я!



Страницы: 1 вся ветка

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.031 c
2-1157962037
IGray
2006-09-11 12:07
2006.10.01
Я рехнулся или Delphi?


15-1157786112
Копир
2006-09-09 11:15
2006.10.01
Исламизм как новый тоталитаризм


1-1155923508
SergeyAKM
2006-08-18 21:51
2006.10.01
Обращение к объекту


8-1141629901
JaspeR
2006-03-06 10:25
2006.10.01
Проблема с TrackBar и Timer одновременно


9-1136410330
AKMTT
2006-01-05 00:32
2006.10.01
Анимация объекта