MDI Treeview Focus Problem
-
Hallo erstmal!
Ich habe folgenden Aufbau in meiner Software. Auf dem MDIHauptfenster habe ich einen Treeview. Dieser soll mir zur Naviation dienen.
Das MDIChild öffnen funktioniert hiermit auch ganz gut. Der Fokus liegt hier auf dem DBGird des MDIChilds.
Ich habe nur ein Problem, wenn ein MDIChild, das zu öffnen ist, schon offen und im Vordergrund steht. Hier behält der Treeview den Focus und gibt diesen auch nicht mehr ab. Erst wenn das Fenster Mini und Maximiert wird, steht der Focus auf dem DBGrid.
Hatte jemand schon dieses Problem und kann mir vielleicht nen kleinen Tipp geben.
MFG
Brosi
-
Wie rufst du die MDIChildren denn konkret auf?
Was bewirkt ein explizites SetFocus?
-
Hiermit mache ich beim Click im Treeview das MDIChild für die Benutzer auf, bzw. hole es in den Vordergrund, wenn es schon einmal in Hintergrund offen steht. Wahrscheinlich ist diese Funktion sowieso etwas chaotisch, da es mein erstes MDI Projekt in Borland ist.
void OpenBenutzerView() { bool is_open = false; if(MDIChildCount < 1) { TBenutzerForm* mform = new TBenutzerForm(this); mform->Show(); mform->BringToFront(); mform->SetFocus(); } else { for(int i = MDIChildCount-1; i >= 0; i--) { if(MDIChildren[i]->Name == "BenutzerForm") { MDIChildren[i]->BringToFront(); MDIChildren[i]->SetFocus(); TBenutzerForm* form = (TBenutzerForm*)MDIChildren[i]; form->m_gridBenutzer->SetFocus(); is_open = true; break; } } if(!is_open) { TBenutzerForm* mform = new TBenutzerForm(this); mform->Show(); mform->BringToFront(); mform->SetFocus(); } } }Das Problem liegt nun daran, das wenn praktisch den Treeview doppelklicke der Focus dorten hängen bleibt, trotz diesem form->....->SetFocus();
Ich kann in diesem Fall nicht mal mehr mit der Maus dem Fokus direkt an das DBGrid übergeben. Das funktioniert nur, wenn ich zuerst ein Editfeld auf der Form anklicke und danach dann das DBGrid!