Programowanie w języku Delphi » Artykuły

Dynamika

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

3 komentarze

unfa 2006-01-07 18:41

Ten artykuł jest jakiś %#*$&^#@$)(

a_s_f 2004-04-15 18:05

Usuwasz wywolujac buttonom(kazdemu elementowi tej taclicy) metode free a pozniej dajesz im  wartosc null

popol 2004-02-25 12:10

Gdyby było jeszcze dynamiczne usuwanie...