Xbase++ Anwendung im Vollbildschirmmodus

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
JanR
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 129
Registriert: Di, 18. Okt 2005 14:44

Xbase++ Anwendung im Vollbildschirmmodus

Beitrag von JanR »

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
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

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
:grommit:
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.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14651
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

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
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
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:

Beitrag von Tom »

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. 8)
Herzlich,
Tom
JanR
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 129
Registriert: Di, 18. Okt 2005 14:44

Beitrag von JanR »

Vielen Dank für eure Hilfe. Werde dann mal beginnen das zu implementieren :).
Antworten