Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.014 c
2-1158223978
megasecure
2006-09-14 12:52
2006.10.01
Проблема с ADO


15-1157860374
vrem
2006-09-10 07:52
2006.10.01
Грузины, чего там у вас?


1-1156240254
Хам
2006-08-22 13:50
2006.10.01
Компонент Treeview


15-1157862068
так себе
2006-09-10 08:21
2006.10.01
С Днем танкиста! А есть ли среди нас танкисты?


3-1154352717
SergP.
2006-07-31 17:31
2006.10.01
Oracle. Импорт из дампа только таблиц с неким префиксом.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский