Witam.
Pierwszy raz robię formę na której w zależności od sytuacji będę potrzebował w zależności od sytuacji różne komponenty (w różniej ilości), w związku z czym stawiam kolejne kroczki w dynamicznym tworzeniu komponentów.
Korzystając z rady @furious programming (z tematu: http://4programmers.net/Forum/Newbie/158490-dynamiczne_tworzenie_komponentow_-_niewidoczny_przycisk?p=1017984#id1017984) referencje do stworzonych komponentów przetrzymuje w tablicy (dzięki czemu zwalnianie i odwoływanie sie do nich jest bardzo wygodne).
Napisałem coś takiego:
TMojaKlasa = class
public
var
komponenty : array of TObject;
end;
/.../
TPom := TMojaKlasa.Create;
SetLength(TPom.komponenty,1);
TPom.komponenty[0] := TPanel.Create(Self);
TPanel(TPom.komponenty[0]).Parent := FRaport;
TPanel(TPom.komponenty[0]).Align := alBottom;
TPanel(TPom.komponenty[0]).Height := 60;
SetLength(TPom.komponenty, Length(TPom.komponenty)+1);
TPom.komponenty[1] := TButton.Create(Self);
TButton(TPom.komponenty[1]).Parent := TPanel(TPom.komponenty[0]);
TButton(TPom.komponenty[1]).Height := 40;
TButton(TPom.komponenty[1]).Width := 120;
TButton(TPom.komponenty[1]).Top := (TPanel(TPom.komponenty[0]).Height-TButton(TPom.komponenty[1]).Height) div 2;
TButton(TPom.komponenty[1]).Left := FRaport.Width-TButton(TPom.komponenty[1]).Width-20;
TButton(TPom.komponenty[1]).Caption := 'ZAMKNIJ';
TButton(TPom.komponenty[1]).OnClick := @ButtonCloseClick;
SetLength(TPom.komponenty, Length(TPom.komponenty)+1);
TPom.komponenty[2] := TStringGrid.Create(Self);
TStringGrid(TPom.komponenty[2]).Parent := FRaport;
TStringGrid(TPom.komponenty[2]).Align := alClient;
FRaport.ShowModal;
No i tutaj prośba do Was: powiedzcie mi czy taki kod jest poprawny? Czy powinienem podejść do tego inaczej ?
Oczywiście nie chodzi mi o to czy kod się skompiluje itp (bo to wiem: program działa zgodnie z zamierzeniem), tylko o to czy kod jest zgodny z "przyjętymi normami" :)