[VisualC++ / CLI] własne kontrolki, delegaty, eventy, zasięg klas
Ostatnio zmodyfikowano 2016-02-26 12:36
SmthIsNoYes Temat założony przez niniejszego użytkownika |
[VisualC++ / CLI] własne kontrolki, delegaty, eventy, zasięg klas » 2016-02-24 20:08:38 Witam wszystkich,
Mam tutaj mały problem z moim projektem - aplikacją C++\CLI.
Mój problem polega na tym, że mam główną klasę "Program" mojej głównej formy (gui programu), a w niej sporo własnych metod do komunikacji między jej kontrolkami i bazą danych. Moje rozwiązanie nie stanowi żadnego problemu, jeśli zdarzenia podstawowych kontrolek tej formy wywołują metody z głownej klasy "Program", działa świetnie. Byłem jednak zmuszony stworzyć kilka własnych kontrolek, takich rozszerzonych wersji DataGridView, TextBox, czy własny ToolBoxButton, ale wyraźnie mam tutaj problem z zasięgiem.
Niebardzo wiem co mam z tym zrobić. Czytałem, że delegaty mogą być rozwiązaniem takiego problemu ale nie udało mi się znaleźć gotowego przykładu jak np: przechwycić w klasie Program zdarzenie klasy TextBoxEx->TextBox1->KeyPress (TextBoxEx - moja kontrolka, TextBox1 - standardowa kontrolka, KeyPress - event).
Z drugiej strony, pomyślałem, może powinienem zostawić przechwytywanie zdarzeń w spokoju i obsługiwać metody klasy Program wewnątrz klasy TextBoxEx, brzmi nieźle... Tylko jak odnieść się do metod obiektu 'program' klasy 'Program' wewnątrz klasy TextBoxEx, której obiekt jest częścią klasy Program oO Instacja Program^ program została utworzona pośrednio w Main.cpp, wewmątrz jednej z metod klasy okna logowania 'Login', która w przypadku nowego logowania tworzy nowy obiekt klasy Program i wywołuje głowne okno programu.
Kolejny mój pomysł zakładał stworzenie klasy Helper, której instancje zawierałaby każda z moich kontrolek, dając mi dostęp do moich metod z klasy Program ale w trakcie pisania tej klasy uświadomiłem sobie, że to bez sensu bo moje metody, jak np: pobierzDane(DataGridView^ dg, String^ zapytanie) w dalszym ciągu nie będą miały zasięgu do obiektów kontrolek klasy Program.
Czy to co tu piszę w ogóle ma sens? :)
Ech, z góry dziękuję za każdą pomoc. |
|
DejaVu |
» 2016-02-26 12:36:54 musisz gdzieś trzymac uchwyty do kontrolek i potem Twoja klasa powinna na uchwycie umiec wykonac operacje. zazwyczaj sie tworzy pusty obiekt klasy, robi sie do niej obiekt.attach(uchwytkontrolki) a potem wywoluje sie co sie chce z poziomu obiekt.twojametoda(). |
|
« 1 » |