Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обращение к компонентам в цикле [WinXP]


Страницы:   1 2

Sergei LM ©   (2010-08-11 17:37:00) 

Уважаемые мастера, на форме есть N Lable, поименованных от L1 до LN соответственно. Можно ли избавиться от множества кострукций L1.Caption := AnyThing, а все сделать в цикле от 1 до N ?


kukuikar   (2010-08-16 16:31:00) [1]


> brother ©   (16.08.10 12:14) [24]
>
> > нарушил главное правило форума?
>
> какое?

отвечать по формальному признаку


Anatoly Podgoretsky   (2010-08-16 14:42:00) [2]

Он думает, что он знает волшебный код.


brother   (2010-08-16 12:14:00) [3]

> нарушил главное правило форума?

какое?


kukuikar   (2010-08-13 13:55:00) [4]


> Плохиш ©   (12.08.10 13:06) [20]
>
>
> > kukuikar ©   (12.08.10 10:59) [11]
>
> И как это отвечает на вопрос автора ветки?

а Вы хотите чтобы я написал точный ответ на вопрос и нарушил главное правило форума?


Anatoly Podgoretsky   (2010-08-12 16:04:00) [5]

> Игорь Шевченко  (12.08.2010 13:24:21)  [21]

AV


Игорь Шевченко   (2010-08-12 13:24:00) [6]


>  ко мне только свидетели иеговские приходили...


Это явный Exception


Плохиш   (2010-08-12 13:06:00) [7]


> kukuikar ©   (12.08.10 10:59) [11]

И как это отвечает на вопрос автора ветки?


KilkennyCat   (2010-08-12 12:40:00) [8]


> А вот если и почтальон, и весёлый молочник, и клоуны и проститутками
> и ещё пионеры для сбора макулатуры

везет же некоторым! ко мне только свидетели иеговские приходили...


12   (2010-08-12 12:33:00) [9]


> А ты представь, что к тебе должен приходить ТОЛЬКО почтальон,
>  и никто более. Всех остальных должно КГБ расстреливать
> на месте.
>


ну тогда так надо :)

>  if Sender is TButton then
>    TButton(Sender).Caption := 'qwqwq'
  else KGB.Create(Sender);


brother   (2010-08-12 12:14:00) [10]

> [16] Ega23 ©   (12.08.10 12:03)

Супер! Прям так наглядно ;) +5!


Ega23   (2010-08-12 12:03:00) [11]


> Не..
> Это как я сижу дома, а ко мне приходят. Гербалайфщик и почтально
> в первом - да и не надо приходить, раз я тебя не жду. Просто
> не слышу когда гербалайф звонит
>
> во втором - приходит гербалайфщик, я -о! и подставляю руки
> для письма, а туда реклама, реклама, реклама, реклама,


А ты представь, что к тебе должен приходить ТОЛЬКО почтальон, и никто более. Всех остальных должно КГБ расстреливать на месте.
Во тогда - as. Пришло что-то не то - отпись в лог и разбирайся, что же тебе там такое пришло.
А вот если и почтальон, и весёлый молочник, и клоуны и проститутками и ещё пионеры для сбора макулатуры - вот тогда is. А, типа, все иначе - Error. Собственно, так TPersistent.Assign устроен.


kukuikar   (2010-08-12 11:14:00) [12]

12 ©   (12.08.10 11:06) [14]
да пожалуйста, это был просто копи/паст, самый простой пример


12   (2010-08-12 11:06:00) [13]


>        if Components[i] is TLabel then  
>          Memo1.Lines.Add((Components[i] asTLabel).Caption);
>  

тут лишнее as
уже проверил is до этого
быстрее будет
>        if Components[i] is TLabel then  
>          Memo1.Lines.Add(TLabel(Components[i])).Caption);


Игорь Шевченко   (2010-08-12 11:06:00) [14]


>        if Components[i] is TLabel then  
>          Memo1.Lines.Add((Components[i] as TLabel).Caption);
>  


Он себе и лоб разобьет


12   (2010-08-12 11:05:00) [15]


> в первом случае ты не узнаешь, что к тебе что-то не то пришло.
>  А вот втором - сразу.

Не..
Это как я сижу дома, а ко мне приходят. Гербалайфщик и почтально
в первом - да и не надо приходить, раз я тебя не жду. Просто не слышу когда гербалайф звонит

во втором - приходит гербалайфщик, я -о! и подставляю руки для письма, а туда реклама, реклама, реклама, реклама,


kukuikar   (2010-08-12 10:59:00) [16]


   var  
     i:integer;  
   begin  
     for i:=0 to ComponentCount-1 do  
       if Components[i] is TLabel then  
         Memo1.Lines.Add((Components[i] as TLabel).Caption);  
   end;  


http://parsers.info/2009/12/perechislenie-vsex-komponentov-na-forme/


Ega23   (2010-08-12 10:54:00) [17]


> никогда не вызовет исключения
> а
> (Sender as TButton).Caption := 'ererer';
> может


И в первом случае ты не узнаешь, что к тебе что-то не то пришло. А вот втором - сразу.


12   (2010-08-12 10:48:00) [18]

понятное дело, просто к чему -
 if Sender is TButton then
   TButton(Sender).Caption := 'qwqwq';
никогда не вызовет исключения

а
(Sender as TButton).Caption := 'ererer';
может

procedure TForm1.Button1Click(Sender: TObject);
begin
 if Sender is TButton then
   TButton(Sender).Caption := 'qwqwq';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 (Sender as TButton).Caption := 'ererer';
end;

procedure TForm1.Image1Click(Sender: TObject);
begin
 Button1.OnClick(Sender);
 Button2.OnClick(Sender);
end;


Palladin   (2010-08-12 10:36:00) [19]

As нужен программисту для самотестирования. Когда контейнер по определению должен содержать объекты определенного типа. В этом случае вызываемое исключение абсолютно оправдано.

Is нужен программисту для выбора как поступить с объектом.

Вот и все.


MBo   (2010-08-12 09:09:00) [20]

>почему не is?
Если проверка is делается, то простого приведения типа достаточно, а если не делается, то лучше as использовать


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо