Главная страница
    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.51 MB
Время: 0.007 c
3-1235132173
AK-87
2009-02-20 15:16
2010.02.21
Редактирование данных в визуальном компоненте без связи с БД


2-1261232671
Pup
2009-12-19 17:24
2010.02.21
Движение по синусоиде


15-1260782130
Максимильянов
2009-12-14 12:15
2010.02.21
кодировка в Opera


2-1261392187
Труженик
2009-12-21 13:43
2010.02.21
Мастера подскажите по Acces mdb


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