Załóżmy, że mam kilka obiektów stworzonych dynamicznie.
W jaki sposób mogę przypisać do nich zdarzenie (załóżmy OnClick)?
Chodzi o to, żeby po kliknieciu któregoś z obiektów wywoływana była funkcja (najlepiej by w parametrach miała wartość wskaźnika do obiektu, który został kliknięty).
Próbowałem użyć metody OnClick dla owego obiektu, ale nie do końca wiem jak jej używać. W helpie jest tylko napisane o zdrzeniach dla obiektów niedynamicznych.
Dodajesz do klasy formatki metode wygladajaca (w sensie parametrow i roznych modyfikatorow) tak samo jak jej wersja tworzona przez srodowisko dla tych samych elementow, i tylko przypisanie i gotowe.
Czyli jeśli np. mam wskaźniki do tych obiektów w tablicy powiedzmy element[]
to powinienem wpisać element[1]Click, element[2]Click itd??
I dla każdego pisać osobną procedurkę?? Coś podobnego próbowałem, ale nie wychodziło. Poza tym co jeśli takich obiektów chcę stworzyć 100, albo 500???
Ten sposób nie będzie chyba zbyt fajny?? :|
Nie o to mi chodzilo.
Do sekcji public dodja sobie:
void __fastcall Kliknieto(TObject *obiekt);
a do pliku cpp cos takiego:
void __fastcall TForm1::Kliknieto(TObject *obiekt)
{
ShowMessage("Kliknieto przycisk " + IntToStr(((TButton *)obiekt)->Tag));
}
void __fastcall TForm1::FormCreate(TObject *Sender)//dodane przez srodowisko
{
TButton *b;
for (int i = 0; i < 100; i++)
{
b = new TButton(this);
b->Parent = this;
b->Tag = i;
b->Caption = i;
b->Left = random(500);
b->Top = random(500);
b->OnClick = Kliknieto;
}
}
To takie proste??
Kurna próbowałem już coś podobnego.. i pomyśleć, że tak blisko byłem [sciana]
Dziekuję foflik
[green] [green] [green]
Witam,
Mam podobny problem co do dynamicznie tworzonych obiektow , a mianowicie chodzi o tworzenie i niszczenie(lub ukrywanie) wielu obiektow typu TImage. Tworzenie i podpinanie funkcji dziala OK, ale w momecie kiedy w funkcji chce ukryc zniszczyc\elemet (delete Sender; lub Sender->Free();) wywala blad ochrony pamieci:/
Reasumujac, moje pytanie brzmi: W jaki sposob niszczyc (TImage) podpinajac funkcje ( moze byc ta sama, to samo bedzie sie dzialo z komponentem) do dynamicznie tworzonych obiektow.
Pozdro
Sierpik@gl.pl
Sierpik napisał(a)
Witam,
[...] ale w momecie kiedy w funkcji chce ukryc zniszczyc\elemet (delete Sender; lub Sender->Free();) wywala blad ochrony pamieci:/
Spróbuj
delete (TImage*)Sender;