Probleme mit FormularStyle fsStayOnTop bei MDI-Anwendung
-
Ich habe eine MDI-Anwendung erstellt diese enthält ein paar Anzeigeformulare vom Typ MDI-Child. Und ein Formular welches ich den Style fsStayOnTop zugeordnet habe, weil ich es immer im Vordergrund benötige. Diese zeigt Daten des aktiven MDI-Child an.
Um bestimmte Aktionen auszuführen benutzte ich nun in den MDI-Childformularen die Methoden Activate und Deactivate (bekommen bzw. verlassen des Focus vom Formular).
Mein Problem tritt nun auf, wenn ich mit dem Focus auf das Formular wechsel welches StayOnTop ist, um dieses zum Beispiel zu verschieben. In diesem Fall verliert das Child-Fenster zwar den Focus aber die Methode Deactivate wird nicht ausgeführt.
Wenn ich nun das StayOnTop-Fenster auch als MDIChild anlege, funktioniert dies einwandfrei, allerdings steht dann das Formular nicht mehr immer oben. Und das ist aber wichtig.
Kann mir da jemand weiterhelfen?
-
Habe gerade nochmal debuggt und muss deshalb meine vorherige Aussage korrigieren. OnDeactivate wird doch ausgeführt, allerdings wird der Status "Active" des ChildForms nicht auf false gesetzt wenn man mit dem Focus auf ein nicht Childform wechselt.
Aber das bekomme ich jetzt gelösst, das ist kein Ding.
-
Bigwill schrieb:
Ich habe eine MDI-Anwendung erstellt diese enthält ein paar Anzeigeformulare vom Typ MDI-Child. Und ein Formular welches ich den Style fsStayOnTop zugeordnet habe, weil ich es immer im Vordergrund benötige. Diese zeigt Daten des aktiven MDI-Child an.
Kannst du für diese Statusanzeige nicht einfach ein Panel auf die Form packen, Align = alLeft oder so?
-
Naja, jetzt wo dus ansprichst, das wäre wahrscheinlich auch möglich gewesen. Aber nun habe ich das Problem ja bereits gelösst.
-
Es ging mir dabei nicht wirklich um deine OnDeactivate- bzw. Active-Problematik sondern mehr um den gesamten GUI-Entwurf. Für eine Statusanzeige scheint eine fest in die Parentform eingebundene Fläche irgendwie "logischer" als ein loses Child-Fenster.
-
Nunja ist nicht direkt eine Statusanzeige.
Also das ganze wird ein HExeditor. Die Childforms enthalten die einzelnen Dateien zur Anzeige. Die Anzeige-Form sollte immer für das entsprechend aktuelle ChildForm die Daten(Werte) für die markierte Dateiposition anzeigen.
Also so Byte, short, long, float, double, etc.
Und da ich mir, wäre das mit so einem Extra Fenster ganz praktisch.
-
Naja, aber so eine Anzeige erwartet man doch eigentlich immer am selben Platz, nicht in einem (beweglichen) Fenster. Die meisten Hexeditoren, die ich kenne, zeigen diese Info in der Statusleiste an.
Wobei ich dich natürlich nicht davon abhalten will, etwas neues zu probieren. Aber viele Sachen sind so wie sie sind, weil es so gut funktioniert (manchmal natürlich auch nur, weil "wir machen das schon immer so" ;)).
-
Also für die Statusleiste sind das zu viele Infos, die bekomme ich da nicht unter. Ich hatte aber schon daran gedacht das Ins MDI-MainFormular fest auf der rechten Seite (im Bild roter Rahmen) einzubauen. Nur mein Problem ist dann, dass ich nicht weiß, wie ich dem BCB klarmache, das er zum Anzeigen der ChildForms nur noch den linken Bereich (gelber Rahmen ) benutzen darf.
Hab mal als Anschauung ein aktuelles Bild geschossen, 54 kb.
http://www.heatware.de/bsp.gif
Uih, da hatte ich das Problem wohl überschätzt. Habe gerade festgestellt, dass es reicht da ein Panel mit alRight reinzupappen. Jetzt bin ich wirklich hin und hergerissen, wie ich das nun machen soll.
-
Bigwill schrieb:
Habe gerade festgestellt, dass es reicht da ein Panel mit alRight reinzupappen.
Sag ich doch.

Ggf. kannst du das externe Fenster ja als Option anbieten. Ich glaube aber nicht, dass das viel Sinn macht.
-
Ok, du hast mich bekehrt.
