Форум: "Начинающим";
Текущий архив: 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