Mam taki problem. Dostaje z bazy tabele z nazwali pól i ich rodzajem. Za każdym razem może być inna ilość pól i ich rodzaj.
Moje pytanie więc brzmi:
W jaki sposób utworzyć dynamicznie kilka komponentów aby były w jednej tablicy (np. Jeśli pole=varChar(255) to Edit, text to Memo, set to CheckBox, enum to RadioGroup)?
0
0
zadeklaruj sobie tablicę TObject albo nawet TComponent lub wyżej (ważne aby było wspólne dla wszystkich komponentów które tam wrzucisz). Z przypisaniem nie będzie problemu, gorzej może być z odczytem, bo musisz rzutować na poprawny typ :>
0
Ok. Tworzenie działa
deklaracja:
var
Form1: TForm1;
pole: array of TComponent;
y:integer;
kod:
for a:=1 to query1.RecordCount do
begin
if (query1['type']='varchar(255)') or (query1['type']='datetime') or (query1['type']='int(4)') then
begin
setlength(pole,length(pole)+1);
pole[high(pole)]:=TEdit.create(ScrollBox1);
(pole[high(pole)] as TEdit).left:=150;
(pole[high(pole)] as TEdit).Top:=y;
(pole[high(pole)] as TEdit).Visible:=true;
(pole[high(pole)] as TEdit).Parent:=ScrollBox1;
(pole[high(pole)] as TEdit).Width:=121;
(pole[high(pole)] as TEdit).Height:=21;
y:=y+32;
end;
query1.Next;
end;
end;
Z odczytem będę męczył się później.
Pewnie będę sprawdzał przez warunek:
if (pole[a] is TEdit) then...
Wielkie Dziękuje!