![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение к компонентам в цикле [WinXP]
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 использовать