Witam!
Proszę o pomoc w rozwiązaniu następującego problemu:
- Definiuję sobie wskaźnik na tablicę wskaźników komponentów TRadioButton:
TRadioButton **tabodp;
- Podczas działania programu tworzę tablicę wskaźników na komponenty TRadioButton, której rozmiar jest dynamiczny i zależy od zmiennej ileodp, której wartość powstaje w trakcie działania programu:
tabodp = new TRadioButton*[ileodp];
- W pętli wyświetlam wszystkie komponenty (l,t,k - zmienne pomocnicze, atrtab - tablica obiektów, get_atrciag() - metoda klasy):
for(k=0;k<ileodp;k++)
{
t+=30;
tabodp[k]=new TRadioButton(this);
tabodp[k]->Parent=this;
tabodp[k]->Left=l;
tabodp[k]->Top=t;
tabodp[k]->Caption = atrtab[k]->get_atrciag();
}
- Tworzę dynamiczne zdarzenie dla komponentu TRadioButton:
projekt.h
private:
void __fastcall klik(TObject *Sender); // User declarations
projekt.cpp
void __fastcall TForm1::klik(TObject *Sender)
{
... // pewne instrukcje po wywolaniu zdarzenia klik
}
- Do tej pory wszystko jest dla mnie zrozumiałe :)
Problem pojawia się w poniższym fragmencie, gdy chcę się odwołać do dynamicznego zdarzenia:
for(k=0;k<ileodp;k++)
tabodp[k]->OnClick=klik;
Zdarzenie klik będzie wykonywało w każdym przypadku bardzo podobną rolę, tylko że potrzebuję wiedzieć, na którym k zostało wywołane, tzn. który komponent został kliknięty.
Ponieważ ilość komponentów, w trakcie trwania programu, ulega dynamicznej zmianie, więc nie mogę na sztywno zdefiniować żadnych zdarzeń, bo nie wiem, ile będzie komponentów.
Wykombinowałem zatem sposób, w którym jedno zdarzenie może obsłużyć wszystkie komponenty (zdarzenie klik), tylko że w tym zdarzeniu ważne jest, żeby wiedzieć, który komponent został kliknięty (przy którym k nastąpiło wywołanie zdarzenia OnClick).
-
Wiem, że podczas definiowania zdarzenia dynamicznego nie wolno go przeciążać (w zasadzie to nie wiem, czy w ogóle wolno przeciążać zdarzenie), dlatego nie mogę dorzucić sobie zmiennej k jako argumentu zdarzenia.
-
Jednym zdaniem pisząc - skąd będę wiedział, który komponent został kliknięty? Są tworzone dynamicznie, więc nie mogę określić z góry ani ich liczby, ani ich właściwości, natomiast k jest mi potrzebne, bo będzie przekazane do tablicy atrtab i tam będą wykonywane dalsze czynności.
Dziękuję z góry za wszelkie pomysły i pozdrawiam!