event mit mdi child auslösen
-
hallo
ich möchte feststellen wenn eine mdiform den fokus erhält. in der mainform gibt es eine toolbar und die funktionen darin möchte ich auf das momentan aktive mdichild anwenden. nun habe ich das problem, dass nicht alle werkzeuge auf da aktuell ausgewähle mdi angewendet werden können. wenn also ein mdichild den focus erhält soll die mainform überprüfen um welches es sich handelt und die entsprechenden funktionen aktivieren oder deaktivieren. gibt es hierfür ein event? habe bisher nur die eigenschaft ActiveMDIChild gefunden, dann müsste man aber dauernd überprüfen welches aktiv ist.
ich habe das bisher so gelöst:
TFormMain *FormMain; TFormMdiTyp1 *Child1 = new TFormMdiTyp1(Application); TFormMdiTyp1 *Child2 = new TFormMdiTyp1(Application); TFormMdiTyp2 *Child3 = new TFormMdiTyp2(Application); ... void FormMain::MDIFeststellen (void) { if (ActiveMDIChild != NULL) { if (ActiveMDIChild->Caption == "Child1" || ActiveMDIChild->Caption == "Child2") { ToolBarAnpassen("MDITyp1"); } if ((ActiveMDIChild->Caption == "Child3") { ToolBarAnpassen("MDITyp2"); } } }dies ist nur pseudocode um mein problem zu verdeutlichen, also nicht über die allgemeine schreibweise wundern.
mein problem ist jetzt, dass mein programm nicht weiß wann es die funktion MDIFeststellen() aufrufen soll.
weiters möchte ich anschließen auf die mdichilds zugreifen. da ActiveMDIChild nur die funktionen der TForm anbietet habe ich für jedes vorhergesehene unterfenster ein eigenes objekt angelegt. ist dies die einzige methode oder gibt es eine bessere lösung.
beschäftige mich erst seit kurzem mit mdi programmen, deswegen habe ich die kniffs noch nicht so herausen.kurti
-
OnActivate !?
-
danke für die schnelle antwort. OnActivate hat mich erst irritiert, da dies im child aufgerufen wird, aber so sollte es funktionieren
[cpp]
TFormMdiTyp1::OnActivate(...)
{
FormMain->AktivesChildFeststellen();
}
-
Vielleicht wäre es eleganter, im OnActivate gleich MainForm->ToolbarAnpassen aufzurufen und als Parameter das aufrufende MDIChild oder dessen Caption zu übergeben. Die Auswertung wird dann direkt in ToolbarAnpassen mit vorgenommen.