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

Вниз

Обход в цикле элементов (Edit1, Edit2, Edit3 и т.д.)одного класса   Найти похожие ветки 

 
Евгений11111   (2009-12-22 13:12) [0]

Добрый день.
Подскажите, пожалуйста, можно ли пробежать в цикле по элементам одного класса (Edit1, ..., Edit10)?
Например так
for i:=1 to 10 do
Edit(i).Text:=IntToStr(i);


 
Медвежонок Пятачок ©   (2009-12-22 13:13) [1]

ты же уже знаешь, что например так как написал пробежать нельзя.


 
Евгений11111   (2009-12-22 13:16) [2]

Поэтому и спрашиваю как можно (а наверняка можно).


 
Медвежонок Пятачок ©   (2009-12-22 13:17) [3]

Поэтому и спрашиваю как можно

нет, ты спросил другое


 
Германн ©   (2009-12-22 13:19) [4]

http://delphimaster.net/view/2-1261220565/


 
Медвежонок Пятачок ©   (2009-12-22 13:19) [5]

у эдитов есть какой-то оунер. у оунера есть массив Components и Controls.
вот по нему и бегай


 
Германн ©   (2009-12-22 13:20) [6]


> Медвежонок Пятачок ©   (22.12.09 13:19) [5]


> у оунера есть массив Controls

Не обманывай :)


 
Медвежонок Пятачок ©   (2009-12-22 13:23) [7]

да есть, я точно видел.


 
Anatoly Podgoretsky ©   (2009-12-22 13:23) [8]

Они находятся в одном из контейнеров Controls, вот по нему и делать иттерацию


 
Kyn66 ©   (2009-12-22 13:51) [9]

Если количество явно указано, то можно через FindComponent

 for i := 1 to 10 do
  TEdit(FindComponent("Edit" + IntToStr(i)).Text]) := IntToStr(i);


 
Kyn66 ©   (2009-12-22 13:54) [10]

Пардонс, скобка лишняя

for i := 1 to 10 do
 TEdit(FindComponent("Edit" + IntToStr(i)).Text) := IntToStr(i);


 
Ega23 ©   (2009-12-22 15:19) [11]


> Они находятся в одном из контейнеров Controls, вот по нему
> и делать иттерацию


begin
 for i := 1 to 10 do
   TEdit.Create(nil);
 ShowMessage("Превед, Мемлик!");
end;


 
AntonioBanderas   (2009-12-22 16:26) [12]


> Евгений11111   (22.12.09 13:12) 


if (controls[i] is TEdit) then TEdit(controls[i]).любое_поле&метод


 
Ega23 ©   (2009-12-22 16:38) [13]


> да есть, я точно видел.


procedure TForm1.CreateNewTimer(aOwner : TComponent; Iteration : Integer);
var
 tmr : TTimer;
begin
 if (Iteration >= 10) then Exit;
 if not Assigned(aOwner) then
   tmr := TTimer.Create(Self)
 else
   tmr := TTimer.Create(aOwner);
 CreateNewTimer(tmr, Iteration + 1);
end;

procedure TForm1.FormCreate(Sender : TObject);
begin
 CreateNewTimer(nil, 0);  
end;


 
Anatoly Podgoretsky ©   (2009-12-22 17:56) [14]

begin
 for i := 1 to 10 do
   TEdit.Create(nil).Parent := Self;
 ShowMessage("Прощай, Мемлик!");
end;


 
Григорьев Антон ©   (2009-12-22 18:04) [15]

http://www.delphikingdom.com/asp/answer.asp?IDAnswer=71458


 
Ega23 ©   (2009-12-22 18:45) [16]


> Anatoly Podgoretsky ©   (22.12.09 17:56) [14]


И это (на мой взгляд) неправильно.


 
Anatoly Podgoretsky ©   (2009-12-22 19:06) [17]

> Ega23  (22.12.2009 18:45:16)  [16]

Почему неправильно?
Вот наоборот точно будет неправильно.


 
Ega23 ©   (2009-12-22 19:55) [18]


> Почему неправильно?


Ну потому, что я Owner-а "не заказывал", оперировал только Parent-ом.


 
Anatoly Podgoretsky ©   (2009-12-22 20:04) [19]

> Ega23  (22.12.2009 19:55:18)  [18]

Это я оперировал Parent-ом, а ты оперировал Owner-ом.


 
Ega23 ©   (2009-12-22 20:22) [20]


> Это я оперировал Parent-ом, а ты оперировал Owner-ом.


Я в курсе. Просто мне крайне не нравится то, что если я создам контрол без Owner и назначу ему Parent - ему и Owner тоже назначится.


 
Aleks   (2009-12-22 20:31) [21]

var
A: array [1..MaxEditCount] of TEdit;
Begin
if(Form1.ActiveControl is TEdit) then
Edit21.Text:=(Form1.ActiveControl as TEdit).Text;
End;


 
Ega23 ©   (2009-12-22 20:41) [22]


> Aleks   (22.12.09 20:31) [21]


Какой ужас....


 
Anatoly Podgoretsky ©   (2009-12-22 20:57) [23]

> Ega23  (22.12.2009 20:22:20)  [20]

Owner ему не назначается.


 
Плохиш ©   (2009-12-22 21:21) [24]


> Aleks   (22.12.09 20:31) [21]

О, что это?


 
Германн ©   (2009-12-23 01:29) [25]


> Anatoly Podgoretsky ©   (22.12.09 20:57) [23]
>
> > Ega23  (22.12.2009 20:22:20)  [20]
>
> Owner ему не назначается.
>

Я тоже удивился ответу Ёжки. Наверно он что-то не договаривает.


 
Джо ©   (2009-12-23 04:10) [26]


> Ega23 ©   (22.12.09 20:22) [20]
> Просто мне крайне не нравится то, что если я создам
> контрол без Owner и назначу ему Parent - ему и Owner тоже
> назначится.


procedure TForm1.Button1Click(Sender: TObject);
var
 Ctrl: TControl;
begin
 Ctrl := TControl.Create(nil);
 Ctrl.Parent := Self;
 if Ctrl.Owner <> nil then
   ShowMessage ("Хм")
end;



 
Ega23 ©   (2009-12-23 08:09) [27]


> Anatoly Podgoretsky ©   (22.12.09 20:57) [23]
> Германн ©   (23.12.09 01:29) [25]
> Джо ©   (23.12.09 04:10) [26]


Гхм... Хотел сказать одно, а ляпнул другое. Сорри.

destructor TWinControl.Destroy;
var
 I: Integer;
 Instance: TControl;
begin
 Destroying;

 ........

 I := ControlCount;
 while I <> 0 do
 begin
   Instance := Controls[I - 1];
   Remove(Instance);
   Instance.Destroy;
   I := ControlCount;
 end;


Просто вот это в своё время крайне неприятно удивило.


 
Anatoly Podgoretsky ©   (2009-12-23 12:12) [28]

> Ega23  (23.12.2009 08:09:27)  [27]

А тебя бы не удивила гигантская утечка, если бы это не было сделано. Чем тебя не устраивает удаление по Controls, а не Components, в котором может не быть всех контролов на форме?



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

Форум: "Начинающим";
Текущий архив: 2010.02.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.007 c
15-1260820725
Юрий Зотов
2009-12-14 22:58
2010.02.21
Ответ на вопрос о стиле кодинга


3-1235132173
AK-87
2009-02-20 15:16
2010.02.21
Редактирование данных в визуальном компоненте без связи с БД


15-1260401856
Германн
2009-12-10 02:37
2010.02.21
Маленькая offtop шутка.


6-1212670677
leonidus
2008-06-05 16:57
2010.02.21
Добавление в программу функции скачивания совоих обновлений


15-1260478295
antonn
2009-12-10 23:51
2010.02.21
Определение ресурсоемких расчетов в методах





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