Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.168 c
15-1145869036
yaro
2006-04-24 12:57
2006.05.21
Помогите написать программу


2-1146743284
Andrey235
2006-05-04 15:48
2006.05.21
проблема с динамичным массивом


2-1146671776
Мурзилка
2006-05-03 19:56
2006.05.21
не работает программа на другом компе


15-1146022327
Vitaliy
2006-04-26 07:32
2006.05.21
TTryIcon


2-1146665368
asd
2006-05-03 18:09
2006.05.21
Как сортировать в DBGRID по дате?