Dynamiczne tworzenie RÓŻNYCH komponentów

0

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

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!

1 użytkowników online, w tym zalogowanych: 0, gości: 1