Главная страница
    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.018 c
15-1157823580
Другой
2006-09-09 21:39
2006.10.01
Мечты сбываются?


2-1157818314
!aLeXa!
2006-09-09 20:11
2006.10.01
Combining signed and unsigned types - widened both operands


15-1157898818
Дураг
2006-09-10 18:33
2006.10.01
А есть ли шаблоны проектирования в Delphi?


15-1157865825
vikont_semenov
2006-09-10 09:23
2006.10.01
От студента


2-1158135307
Chaser
2006-09-13 12:15
2006.10.01
Как определить скорость копирования файла по сети





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский