Hallo,
ich nehme die CBuilder
MDI Beispielanwendung, starte sie und öffne zwei MDIChild Fenster. Die Child Fenster enthalten ein Memo. Durch einen Click in das MDIChild1 bekommt es den Focus.
Jetzt wird es komisch:
Wenn ich mit der rechten Maustaste in das zweite MDIChild clicke, dann blinkt der Cursor im Memo von MDIChild2, aber an der FensterCaption sieht man dass eigentlich noch MDIChild1 den Focus hat und nicht MDIChild2.
Der OnActivate Event des MDIChilds wird durchlaufen; Wenn man im Falle des RightClick auf Memo des MDIChild2 dort auf Application->MainForm->ActiveMDIChild prüft steht das (fälschlicherweise) auf MDIChild1; und im Falle des LeftClick auf MDIChild2 ist ActiveMDIChild gleich MDIChild2, so wie ich es erwarten würde.
Als Workaround mache ich jetzt im OnActivate folgendes:
Delphi-Quellcode:
if(Application->MainForm->ActiveMDIChild != this)
Show(); // OnShow wird nicht durchlaufen wenn das Fenster schon erzeugt wurde und sichtbar ist,
// aber so kann ich wenigstens den Focus setzen.
Sollte das mit dem Focus des MDIChilds nicht anders laufen???
Getestet habe ich das mit CBuilder6 und RadStudio 2007 unter WinXP.
mfg,
Matmok