the incredible Leitman
Erfahrenes Mitglied
Hallo Leute ^^
Jetzt bin ich schon ziemlich lange alleine zurechtgekommen und mein Projekt wächst und gedeiht
Doch nun stehe ich wieder vor einem Problem, bei dem ich nicht weiß, wie ich es lösen kann
Also, ich habe eine Windows Form (ZLSClientApplication),
diese enthält einen Haufen TabControls inklusive TabPage.
Eine dieser Pages verfügt über ein Panel, in dem sich CustomControls befinden.
Ein Butten eines dieser Controls löst bei Click ein Event aus, das einen Dialog aufruft...
...hoffe, das war einigermaßen verständlich erklärt...
Nun möchte ich, wenn dieses Event ausgelöst wird, (also der Dialog geöffnet wird)
das gesamte TabPage inactive machen...
Dazu habe ich eine Methode geschrieben, die alle Controls in der Page deaktiviert...
Doch leider kann ich in einem Control nicht auf diese Funktion zugreifen...
Ich bäuchte also irgendetwas, womit ich in die übergeordneten Instanzen zugreifen könnte...
also von der Überlegung her wie folgt:
this->Parent oder this->Parentform oder this->Owner->IsActive(false)
vl zu näheren Erklärung: (in wirklich seeeeehr einfach gehaltenem Pseudocode)
Somit erstelle ich 4 TabControls mit jeweils 8 TabPages in denen sich in der ersten Page immer ein Statusschirm Control befindet..
weiter:
Soweit sogut, nun habe ich den Statusschirm mit einem Custom Control, das wie folgt aussieht:
Ich komm langsam nicht mehr zurecht,
vl auch, weil ich mich schon so darin verfangen hab, dass ich nicht mehr durchseh *lol*
Aber wie könnte ich mein Problem umgehen?
Also wegen der Abhängigkeiten wäre
ZLSClient::ZLSClientApplication abhängig von
ClientTabPages::Statusschirm, da ich ja die Controls brauche...
welcher wiederum Abhängigkeit von UtilityControls::ButtonControl hat
was die Klasse Dialog1 verwendet :-O
Aber (wie?) kann ich auf Properties oder Methoden zugreifen, die in einer oder mehreren übergeordneten Klassen in ganz anderen Namespaces sind?
Vielleicht ist das für euch nun richtig einfach und ich steh jetzt voll blöd da,
aber ich habe grade so echt meine Probleme mit dem Dateisystem von C++
das inkludieren von namespaces, Headern und cpp files, Aufrufen von Funktionen oder Properties in anderen Klassen in anderen Namespaces, über Projektgrenzen hinaus usw... :-O
Mein Kopf raucht schon, werde mal noch etwas googlen
hoffe vl kann mir in der Zwischenzeit jemand weiterhelfen...
nur ein bisschen ^^
Biiiiitte
thx
mfG
der Leitman
Jetzt bin ich schon ziemlich lange alleine zurechtgekommen und mein Projekt wächst und gedeiht

Doch nun stehe ich wieder vor einem Problem, bei dem ich nicht weiß, wie ich es lösen kann

Also, ich habe eine Windows Form (ZLSClientApplication),
diese enthält einen Haufen TabControls inklusive TabPage.
Eine dieser Pages verfügt über ein Panel, in dem sich CustomControls befinden.
Ein Butten eines dieser Controls löst bei Click ein Event aus, das einen Dialog aufruft...
...hoffe, das war einigermaßen verständlich erklärt...
Nun möchte ich, wenn dieses Event ausgelöst wird, (also der Dialog geöffnet wird)
das gesamte TabPage inactive machen...
Dazu habe ich eine Methode geschrieben, die alle Controls in der Page deaktiviert...
Doch leider kann ich in einem Control nicht auf diese Funktion zugreifen...
Ich bäuchte also irgendetwas, womit ich in die übergeordneten Instanzen zugreifen könnte...
also von der Überlegung her wie folgt:
this->Parent oder this->Parentform oder this->Owner->IsActive(false)
vl zu näheren Erklärung: (in wirklich seeeeehr einfach gehaltenem Pseudocode)
C++:
namespace ZLSClient
{
public ref class ZLSClientApplication : public System::Windows::Forms::Form
{
array<TabControl ^> ^m_tabControls;
array<TabPages ^> ^m_tabPages;
m_tabControls = gcnew array<TabControl ^>(4);
for (int i = 0; i <= m_tabControls->Length; ++i)
{
m_tabControls[i] = gcnew TabControl();
m_tabPages = gcnew array<TabPage ^>(8);
for (int ix = 0; ix <= m_tabPages->Length; ++ix)
{
m_tabPages[ix] = gcnew TabPage();
switch(ix)
{
case 0:
Statusschirm ^stat = gcnew Statusschirm();
this->m_tabPage[ix]->Controls->Add(Statusschirm);
}
}
}
};
}
Somit erstelle ich 4 TabControls mit jeweils 8 TabPages in denen sich in der ersten Page immer ein Statusschirm Control befindet..
weiter:
C++:
namespace ClientTabPages
{
public ref class ClientTabPagesBase : public System::Windows::Forms::UserControl
{
public:
property bool IsActive
{
void set (bool i_value)
{
for each(Control ^ctrl in this->Controls)
{
ctrl->enabled = i_value;
}
}
}
}
public ref class Statusschirm : public ClientTabPages::ClientTabPageBase
{
ButtonControl ^ctrl = gcnew ButtonControl();
this->Controls->add(ctrl);
}
}
Soweit sogut, nun habe ich den Statusschirm mit einem Custom Control, das wie folgt aussieht:
C++:
namespace UtilityControls
{
public ref class ButtonControl : public System::Windows::Forms::UserControl
{
Button ^m_Button1;
Button ^m_Button2;
Button ^m_Button3;
Button ^m_Button4;
m_Button1->Click += gcnew System::EventHandler(this, &UtilityControls::ButtonControl::Button_click);
void Button_Click(System::Object ^sender, System::EventArgs ^e)
{
Dialog1 ^dial = gcnew Dialog1();
// Während dieser Dialog offen ist, soll die TabPage Inactiv sein
// Aber ich kann:
// ClientTabPages::ClientTabPagesBaseClass::IsActive = false
// nicht aufrufen, das sich ich den namespace nicht includieren kann
// weil sich sonst eine ewige Dependency einstellen würde -.-
dial->Show();
// hier sollte die Tab Page wieder aktiv geschalten werden
}
}
public ref class Dialog1
{
// blablabla
}
}
vl auch, weil ich mich schon so darin verfangen hab, dass ich nicht mehr durchseh *lol*
Aber wie könnte ich mein Problem umgehen?
Also wegen der Abhängigkeiten wäre
ZLSClient::ZLSClientApplication abhängig von
ClientTabPages::Statusschirm, da ich ja die Controls brauche...
welcher wiederum Abhängigkeit von UtilityControls::ButtonControl hat
was die Klasse Dialog1 verwendet :-O
Aber (wie?) kann ich auf Properties oder Methoden zugreifen, die in einer oder mehreren übergeordneten Klassen in ganz anderen Namespaces sind?

Vielleicht ist das für euch nun richtig einfach und ich steh jetzt voll blöd da,
aber ich habe grade so echt meine Probleme mit dem Dateisystem von C++
das inkludieren von namespaces, Headern und cpp files, Aufrufen von Funktionen oder Properties in anderen Klassen in anderen Namespaces, über Projektgrenzen hinaus usw... :-O
Mein Kopf raucht schon, werde mal noch etwas googlen
hoffe vl kann mir in der Zwischenzeit jemand weiterhelfen...
nur ein bisschen ^^
Biiiiitte
thx
mfG
der Leitman