Dynamiczne tworzenie komponentów PDF Drukuj Email
Wpisał doctor   
Środa, 14. Luty 2007 00:58
Dynamiczne tworzenie komponentów oraz podpinanie zdarzeń


   W tej lekcji nauczymy się, jak dynamicznie tworzyć komponenty.
Jest to bardzo wygodne w przypadku, gdy na formularzu trzeba ich umieścić mnóstwo
(a jakże), często w określonym porządku geometrycznym.
Zamiast robić to ręcznie, można sobie uprościć ten proces.

Do tworzenia komponentów w sposób dynamiczny posłuży nam operator new.
Aby utworzyć nowy komponent potrzebuemy znać nazwę jego klasy bazowej.
Musimy także podać "rodzica" utworzonego komponentu, a więc Form1;
Pamiętać należy, aby po skończonej pracy usunąć komponent operatorem delete.



Przykład
Na formularzu co sekundę będzie tworzony 1 button aż do momentu gdy na formie
będzie 10 buttonów. Kładziemy na formę 1 Label oraz 1 Timer. Na Label 2 będzie wyświetlana ilość
aktywnych komponentów na formie. Kto mi powie dlaczego jest ich 12, skoro utworzyliśmy tylko 10 buttonów?

 void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
ilosc_przyciskow++;
        if(ilosc_przyciskow < 10)
{
TButton *Button = new TButton(this);
Button->Parent = Form1;
Button->Name = "Button" + (String)ilosc_przyciskow;
Button->Caption = "Button" + (String)ilosc_przyciskow;
int left = random(Form1->Width - Button->Width);
int top = random(Form1->Height - Button->Height);

Button->Left = left;
Button->Top = top;

Button->OnClick = OnClick; //podpięcie obsługi zdarzenia
// pod dynamiczny komponent
int CC = ComponentCount; //ilosc komponentow na formie
Label1->Caption = IntToStr(CC);
}
        else
Timer1->Enabled = false;
}

 

HE HE HE

Gdy klikniemy na jakiś button, pojawi się okienko z nazwą tego przycisku.

 void __fastcall TForm1::OnClick(TObject *Sender)
{
ShowMessage(ActiveControl->Name);
}

 

W zdarzeniu OnClose aplikacji pamiętać należy o zwolnieniu jej zasobów za pomocą

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;  //zwalnianie zasobow aplikacji
}

 Dla leniwych do pobrania skompilowana aplikacja oraz pliki projektu.

Komentarze
Dodaj nowy Szukaj
+/-
Napisz komentarz
Nick:
E-mail:
 
Strona www:
Tytuł:
UBBCode:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Proszę wpisać kod antyspamowy widoczny na obrazku.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

Ostatnia aktualizacja: Piątek, 10. Lipiec 2009 14:02
 
 

Losowy obraz

b7.jpg

Gościmy

Naszą witrynę przegląda teraz 8 gości 




| | | |