Текущий архив: 2006.05.21;
Скачать: CL | DM;
Вниз
Как обратиться к компонентам созданным в реалтайме Найти похожие ветки
← →
daimyo (2006-05-05 13:50) [0]вообщем вот )
я создал в реал тайме несколько DBedit`ОВ теперь мне необходимо обратиться к каждому из них кокретно
вот код:
for i:=0 to 10 do
begin
dbedit:=tdbedit.Create(form2);
with dbedit do
begin
Left:= 184;
Top:= 72+21*i+15;
Width:= 121;
DataField:= form2.DBGrid1.Columns.Items[i].Title.Caption;
DataSource:= Form2.DataSource1;
end;
dbedit.name:="DB"+inttostr(i) ;
dbedit.Parent:=form2;
dbedit.Show;
end;
вот как мне например обратиться к dbedit`y с именем DB1 что изменить у него напримерсвойство DataField, понятно что в массиве но вот как их перебирать то ?? )
← →
balepa © (2006-05-05 14:03) [1]FindComponent
Или создавай массив из DBEdit"ов и обращайся к ним
for i:= 1 to n do
DB[i].XXX:= XXX
Поройся тут таких вопросов была куча.
← →
Vasiliy (2006-05-05 14:04) [2]ссылку на контрол можно получить так:
Function GetDBEdit(Name:String):TDBEdit;
Var I:Integer;
begin
Result:=Nil;
For I:=0 to form2.ControlCount-1 do
If (form2.Controls[I] is TDBEdit) and (form2.Controls[I].Name=Name) then
Result:=TDBEdit(form2.Controls[I]);
end;
Предварительно в цикле нужно назначить каждому контролу своё имяfor i:=0 to 10 do
begin
dbedit:=tdbedit.Create(form2);
with dbedit do
begin
Name:="DB"+IntToStr(i);
Left:= 184;
Top:= 72+21*i+15;
Width:= 121;
DataField:= form2.DBGrid1.Columns.Items[i].Title.Caption;
DataSource:= Form2.DataSource1;
end;
dbedit.name:="DB"+inttostr(i) ;
dbedit.Parent:=form2;
dbedit.Show;
end;
Обращаться так: GetDBEdit("DB1").DataSource:= ...
← →
balepa © (2006-05-05 14:11) [3]Если фиксированое количество DBEdit"oв Лучше массив использовать, ИМХО
← →
Vasiliy (2006-05-05 14:16) [4]Для фиксированного количества конечно массив лучше, но я както привык писать так, чтобы не ограничивать себя на будущее ...
← →
balepa © (2006-05-05 14:19) [5]
> Vasiliy (05.05.06 14:16) [4]
Правильно нечего себя ограничивать :)
← →
Amoeba © (2006-05-05 15:45) [6]Используй не массив, а TObjectList, раз количество не фиксированное.
← →
Daimyo (2006-05-06 11:11) [7]Спасибо :)
← →
Ega23 © (2006-05-06 11:21) [8]
> Vasiliy (05.05.06 14:04) [2]
> Function GetDBEdit(Name:String):TDBEdit;
> Var I:Integer;
> begin
> Result:=Nil;
> For I:=0 to form2.ControlCount-1 do
> If (form2.Controls[I] is TDBEdit) and (form2.Controls[I].
> Name=Name) then
> Result:=TDBEdit(form2.Controls[I]);
> end;
>
Функция написана только для частного случая. Если DBEdit лежит на панели, которая лежит на Form2, то его не найдут.
← →
balepa © (2006-05-06 11:23) [9]
> Ega23 © (06.05.06 11:21) [8]
Если надо будет Найдут только др. способом :)
← →
ANB © (2006-05-06 15:44) [10]
> Для фиксированного количества конечно массив лучше, но я
> както привык писать так, чтобы не ограничивать себя на будущее
> ...
Никто не мешает использовать динамический массив. Впрочем, у формы уже есть такой массив : Components.
Страницы: 1 вся ветка
Текущий архив: 2006.05.21;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.012 c