![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени всем.
Помогите разобраться: В рантайме динамически создаются компаненты TDBEdit Код:
var
editList: array of tDBEdit;
begin
if q=true then begin
form1.Table1.Open;
b:=form1.Table1.FieldCount;
form2.Table2.First;
SetLength(editList,b-1);
for i:=1 to high(editList)-1 do
begin
n:= form2.Table2.Fields[2].AsInteger;
editList[i]:=tDBEdit.Create(Form1);
editList[i].Left:=380;
editList[i].Top := 50+i*20;
editList[i].DataSource:=nil;
editList[i].DataSource:=form1.DataSource1;
editList[i].DataField:=form1.Table1.Fields.Fields[i+2].FieldName;
if editList[i].Field.AsDateTime <> 0 then begin
labelList[i].Caption :=DateToStr(editList[i].Field.AsDateTime+n*30);
if StrToDate(labelList[i].Caption) < Date then labelList[i].Font.Color:=clRed;
end;
editList[i].Visible:= true;
Form1.InsertControl(editList[i]);
form2.Table2.Next;
end;
end;
SetLength(editList,0);
end;
...
Далее програмно удаляется поле из таблицы
form1.table1.Close ;
form1.Query1.Close;
form1.Query1.SQL.Clear;
form1.Query1.SQL.Add('ALTER TABLE "C:\Курсовая\Data\Spisok"');
form1.Query1.SQL.Add('DROP Data_'+x);
form1.Query1.ExecSQL;
form1.table1.Open ; // Вот здесь возникает ошибка "Field 'Data_x' not found".Я так понимаю, что надо удалить конкретный компанент TDBEdit, но он создан динамически и как до него добраться не могу сообразить. Кто знает просветите НАЧИНАЮЩЕГО. Последний раз редактировалось Admin, 03.12.2009 в 22:31. |
|
#2
|
|||
|
|||
|
Варианты:
1. Сохранять ссылки на них в массиве или списке. 2. Создавать их с владельцем-формой. Тогда она их сама "прибъет", когда будет удаляться. |