[BCB]Przypisanie zdarzenia do dyn. stworzonych obiektów

0

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.

0

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.

0

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?? :|

0

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;
  }
}
0

To takie proste??
Kurna próbowałem już coś podobnego.. i pomyśleć, że tak blisko byłem [sciana]
Dziekuję foflik
[green] [green] [green]

0

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
[email protected]

0
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;

1 użytkowników online, w tym zalogowanych: 0, gości: 1