Dynamika
werw0e
Po co komu dynamika??
Nie będę tego tłumaczył bo skoro tu wszedłeś to jednak myślisz, że ci się przyda :)
A więc tak najpierw zrobimy tablicę dynamiczną :
Tak wygląda jej deklaracja:
var tablica : array of integer;
Rozmiary zmienia się w inny prosty sposób:
SetLength(var S; NewLength: Integer);
S to tablica, a NewLength - zgadnijcie sami :P
Bym był zapomniał numeruje się w tablicy od 0.
Równie łatwe jest tworzenie tablicy np 2D:
var tablica2D : array of array of integer (albo cos innego:);
A zmienianie rozmiarów:
SetLength(var S; NewLength1: Integer; NewLength2: Integer);
Analogicznie dla trójwymiarowych i większych :)
DYNAMICZNE TWORZENIE KOMPONENTÓW
Teraz przejdziemy do trudniejszego zagadnienia czyli patrz wyżej.
Utworzymy teraz Buttona na formie:
uses StdCtrls;
var buttony : array of TButton; //Jako zmienna globalna
//Gdzieś w jakiejś prodedurze to co niżej :
begin
SetLength(buttony,Length(buttony)+1); //Zmienia wielkość tablicy buttonów o jeden
//Ach wreszcie tworzymy to co trzeba :)
Buttony[jakas_liczba] := TButton.Create(Self {np Form1,Panel1 itp}) ;
Buttony[jakas_liczba].Parent := Self {np Form1,Panel1 itp};
Buttony[jakas_liczba].Caption := 'Dynamika RLZ';
Buttony[jakas_liczba].inne_właściwości:=inne_wartości; :)
// A teraz zdarzenia do tego: //
Buttony[0].OnClick:= Procedura_typu_onClick //napisana wcześniej :)
Na przykład:
procedure TForm1.KlikDynamicznegoBatona(Sender: TObject);
begin
ShowMessage('Co mnie klikasz :>');
Buttony[0].visible:=false;
// I tym podobne //
end;
Odczytanie danych z tego jest bardzo łatwe (lepszy byłby w tym przypadku np TEdit :) )
IF buttony[0].caption='Dynamika RLZ' then ShowMessage('Prawidłowy text w Buttonie dynamicznym')
else ShowMessage('Nie prawidłowy text w Buttonie dynamicznym :(')
To tylko tyle
Ten artykuł jest jakiś %#*$&^#@$)(
Usuwasz wywolujac buttonom(kazdemu elementowi tej taclicy) metode free a pozniej dajesz im wartosc null
Gdyby było jeszcze dynamiczne usuwanie...