CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Zdarzenia dla dynamicznie tworzonych obiektów

Zdarzenia dla dynamicznie tworzonych obiektów

dział ogólny

Zdarzenia dla dynamicznie tworzonych obiektów

Nowy postprzez swiezak » niedziela, 24 kwietnia 2011, 23:21

Witam,
Piszę gdyż nie poradziłem sobie z opisem na http://programowanie.cal.pl/cyfbar/differ3.html#differ6

Jak mam przypisać zdarzenie OnClick dla dynamicznie utworzonego RadioButtona ?

Wszystko zawarłem w przykładowym programie, ale też podam link do samego źródła .cpp
Przypisanie zdarzenia do dynamicznego obiektu.7z
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.
Avatar użytkownika
swiezak
Bladawiec
Bladawiec
 
Posty: 25
Dołączył(a): sobota, 25 grudnia 2010, 02:25
Podziękował : 13
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: Embarcadero C++ Builder 2010
Gadu Gadu: 0
    Windows 7Chrome

Re: Zdarzenia dla dynamicznie tworzonych obiektów

Nowy postprzez Cyfrowy Baron » poniedziałek, 25 kwietnia 2011, 08:55

Zwyczajnie. Tworzysz funkcję i przypisujesz ją jako zdarzenie do obiektu:

Plik nagłówkowy np. Unit1.h
KOD cpp:     UKRYJ  
private:
        TRadioButton *MyRadioButton;
        void __fastcall MyRadioButtonClick(TObject *Sender);


Plik źródłowy np. Unit1.cpp
KOD cpp:     UKRYJ  
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 MyRadioButton = new TRadioButton(this);
 MyRadioButton->Parent = this;
 MyRadioButton->Left = 8;
 MyRadioButton->Top = 8;
 MyRadioButton->Caption = "Kliknij w RadioButton";

 MyRadioButton->OnClick = MyRadioButtonClick; /* podłączenie funkcj jako zdarzenia */
}
//---------------------------------------------------------------------------
void __fastcall TForm1::MyRadioButtonClick(TObject *Sender)
{
  ShowMessage("Kliknięto w RadioButton");
}

.
Dokładnie to samo zostało napisane w serwisie Cyfrowy Baron. Jak można tego nie zrozumieć mając przykład?!? :o :shock: :lol:
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Zdarzenia dla dynamicznie tworzonych obiektów

Nowy postprzez swiezak » poniedziałek, 25 kwietnia 2011, 11:27

No dobra, ale jak zrobić by do funkcji został przekazana wartość i, aby ustawiło SPIN[i]->Visible = true;? Jakoś w parametrze, jak wtedy miałoby to wyglądać?
KOD cpp:     UKRYJ  
void __fastcall TForm2::MyRadioButtonClick(TObject *Sender)
{
  ShowMessage("Kliknięto w RadioButton");
  SPIN[i]->Visible = true;
}
Avatar użytkownika
swiezak
Bladawiec
Bladawiec
 
Posty: 25
Dołączył(a): sobota, 25 grudnia 2010, 02:25
Podziękował : 13
Otrzymał podziękowań: 0
System operacyjny: Windows 7 x64
Kompilator: Embarcadero C++ Builder 2010
Gadu Gadu: 0
    Windows 7Chrome

Re: Zdarzenia dla dynamicznie tworzonych obiektów

Nowy postprzez Cyfrowy Baron » poniedziałek, 25 kwietnia 2011, 12:18

A jak zrobiłbyś to w tym samym zdarzeniu, ale nie dla obiektu tworzonego dynamicznie, lecz normalnie, czyli umieszczasz RadioButton1 na formularzu i tworzysz mu zdarzenie OnClick na zakładce Events w Object Inspector???

Zdarzenie podpinana dynamicznie działa dokładnie tak samo jak zwykle zdarzenie, ni mniej ni więcej. Jak rozwiążesz powyższą zagadkę to już będziesz wiedział.
Od czego zależna jest wartość zmiennej i? Gdzie ustalana jest ta wartość? Może przekaż wartość poprze zmienną globalną, prywatną lub publiczną.

swiezak napisał(a):Jakoś w parametrze, jak wtedy miałoby to wyglądać?


A czy zdarzenie OnClick poza parametrem TObject *Sender posiada jakiś inny parametr? Nie! Nie posiada i posiadać nie może, gdyż taka jest konstrukcja tego zdarzenia.

Do czego służy parametr Sender? Odpowiedzi szukaj w serwisie Cyfrowy Baron dział: teoria -> rzutowanie typów, przypisanie polimorficzne.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 2 gości