Hallo,
ich wende mich mal wieder an euch, weil ich nicht weiter komme .
Ich habe ein Programm, bei dem das Fenster in der Grösse von 800x600 zentriert dargestellt wird. In dem Fenster befinden sich einige Buttons, SLE's, usw. Das läuft auch ohne Probleme. Jetzt will ich aber, dass wenn der Anwender auf den Maximize Button klickt, dass Fenster im Vollbildschirmmodus angezeigt wird und demensprechend auch die Buttons und SLE's wieder richtig dargestellt werden und nicht nur untern links, wobei bis jetzt der rest den Fensters leer ist. Wenn der Anwender dann wieder auf den Maximize Button klickt, soll das Fenster wieder in der Standardgrösse von 800x600 angezeigt werden. Wie kann man das am besten realisieren?
Jan
Xbase++ Anwendung im Vollbildschirmmodus
Moderator: Moderatoren
- Martin Altmann
- Foren-Administrator
- Beiträge: 16508
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jan,
ich gehe mal davon aus, dass Du kein XbpCrt(), sondern ein echtes XbpDialog() nutzt, oder?
Nun, in diesem Fall mußt Du die Positionen Deiner Xbaseparts berechnen. Du mußt Dir vorher überlegen, ob Deine Xbaseparts beim Vergrößern des Fensters auch vergrößert oder nur woanders positioniert werden sollen.
War mir zu viel Aufwand, darum habe ich es bei mir nicht gemacht. Insofern kann ich Dir leider auch keinen Source posten, nur Anregungen geben.
Wenn also Deine normale Fenstergröße 800X600 ist, mußt Du die momentane Fenstergröße ermitteln und diese mit der Standardfenstergröße in Relation zueinander setzen (für x- und y-Ausrichtung getrennt). Mit diesen Faktoren mußt Du sowohl die Startpunkte als auch die Breiten/Höhen multiplizieren.
So sollte das im Prinzip gehen.
Viele Grüße,
Martin
ich gehe mal davon aus, dass Du kein XbpCrt(), sondern ein echtes XbpDialog() nutzt, oder?
Nun, in diesem Fall mußt Du die Positionen Deiner Xbaseparts berechnen. Du mußt Dir vorher überlegen, ob Deine Xbaseparts beim Vergrößern des Fensters auch vergrößert oder nur woanders positioniert werden sollen.
War mir zu viel Aufwand, darum habe ich es bei mir nicht gemacht. Insofern kann ich Dir leider auch keinen Source posten, nur Anregungen geben.
Wenn also Deine normale Fenstergröße 800X600 ist, mußt Du die momentane Fenstergröße ermitteln und diese mit der Standardfenstergröße in Relation zueinander setzen (für x- und y-Ausrichtung getrennt). Mit diesen Faktoren mußt Du sowohl die Startpunkte als auch die Breiten/Höhen multiplizieren.
So sollte das im Prinzip gehen.
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14651
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Hallo jan,
ich versuche das wenn möglich so zu lösen, daß ich alles, was skalierbar ist (etwa ein browse) an die Bildschirmgröße anpasse. Also in der Höhe mehr Zeilen, in der Breite die Spalten breiter. Die SLE, Buttons, etc. lasse ich wie sie sind.
Und auch wenn ich jetzt wegen dem Punkt wegen ständiger Wiederholung gelyncht werde: Ich hasse BottomLeft. Ich habe alle meine Programm auf TopLeft umgestellt. Was den Nebeneffekt hat daß bei einer anderen Bildschrimauflösung nicht alles nach unten rutscht sondern oben bleibt, und unten ist einfach mehr freier Platz. Sieht einfach besser aus.
Jan
ich versuche das wenn möglich so zu lösen, daß ich alles, was skalierbar ist (etwa ein browse) an die Bildschirmgröße anpasse. Also in der Höhe mehr Zeilen, in der Breite die Spalten breiter. Die SLE, Buttons, etc. lasse ich wie sie sind.
Und auch wenn ich jetzt wegen dem Punkt wegen ständiger Wiederholung gelyncht werde: Ich hasse BottomLeft. Ich habe alle meine Programm auf TopLeft umgestellt. Was den Nebeneffekt hat daß bei einer anderen Bildschrimauflösung nicht alles nach unten rutscht sondern oben bleibt, und unten ist einfach mehr freier Platz. Sieht einfach besser aus.
Jan
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9356
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Hallo, Jan.
Mit GetPos() und GetSize() die neue Größe und Position des Fensters abfragen, dann alle Objekte auf diesem Fenster mit SetPos() und SetSize() skalieren. Im Drop-Sample der Alaska-Goodies sind Resize-Methoden angerissen. Ist aber rechnerisch kein Ding. Allerdings kann ich kein Beispiel liefern, weil ich eXPress++ benutze, das eine Option "AUTORESIZE" für alle Fenster beinhaltet.
Mit GetPos() und GetSize() die neue Größe und Position des Fensters abfragen, dann alle Objekte auf diesem Fenster mit SetPos() und SetSize() skalieren. Im Drop-Sample der Alaska-Goodies sind Resize-Methoden angerissen. Ist aber rechnerisch kein Ding. Allerdings kann ich kein Beispiel liefern, weil ich eXPress++ benutze, das eine Option "AUTORESIZE" für alle Fenster beinhaltet.
Herzlich,
Tom
Tom