zaprzyjaznienie klas

0

Mam taki problem. Powiedzmy ze mam takie przykladowe klasy:


class okno1 {                   //klasa okna glownego

okno1(.....)                     //jakis tam konstruktor
wxTextCtrl* WxEdit1;         //deklarujemy jakas kontrolke Edit   

void CreateGUIControls();  //To jest metoda ktora powola wszystkie kontrolki do zycia. 
                                        // Bedzie ona wywoływana z konstruktora
};                                     //czyli w momencie pojawienia sie okna wyrysuje wszystkie panele i kontrolki
      

//Mam tez druga klase, drugiego okna, ktore pojawia sie po wcisnieciu przycisku na pierwszym oknie.
class okno2{


okno2(.....)                     //jakis  konstruktor
wxButton* Button1;         //deklarujemy jakas kontrolke Button  

void CreateGUIControls(); // ta sama metoda co w poprzedniej klasie do wyrysowania okna.
};

Chcialbym aby po wcisnieciu przycisku Button1 modyfikowal zawartosc Edit1. Lecz kiedy pisze akcje dla Przycisku Button1 nie widzi on obiektów klasy okno, na ktorej jest kontrolka Edit1. Moje pytanie jest wiec nastepujace: Co zrobic, aby moc z tej drugiej klasy ingerowac w obiekty klasy pierwszej?

void okno2::Button1Click(wxCommandEvent& WXUNUSED(event))
{

    WxEdit1->SetValue(wxT("kupsko"));
 }
0
// plik okno2
....
#include "okno1.h"
...

void okno2::Button1Click(wxCommandEvent& WXUNUSED(event))
{
    okno1->WxEdit1->SetValue(wxT("kupsko"));
}

jeśli dobrze pamiętam to żadne przyjaźnie nie są potrzebne. Coś pewnie pokręciłem z nazwami zmiennych, ale nie wszystko widać w twoim kodzie.

0

no wlasnie robilem tak

okno1->WxEdit1->SetValue(wxT("kupsko"));

nie mam pojecia czemu okno1-> nie rozwija mi zadnych list z podpowiedziami jakich moge metod uzyc. Kiedy napissze to samo w ciele jakiejs metody z klasy okno1 to rozwija sie normalnie ale juz z poza niej nie da rady:/

0

Coś namieszałeś. Jak tworzysz okno C++ builder tworzy zmienną globalną wskażnik do typu okna.
Zwykle, klasa okna generowana przez Buildera jest taka jak nazwa okna + "T" na początku np:
TOnkno1 (gdy okno nazwałeś Okno1). Zmienna globalna ma taką nazwę jak nazwa okna.
Żeby tą zmienną widzieć w innym module (w innym pliku cpp), należy inkludować (#include) plik nagłówkowy okienka.
Skoro, więc masz klasę okno1 (bez T) to znaczy, że coś Builderowi namieszałeś i stąd moje wątpliwości co do nazw zmiennych.

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