![]() |
Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale
Ich würde gerne
Delphi-Quellcode:
verwenden, um die Programmoberfläche bei Bedarf vergrößern zu können. Das funktioniert auch erstaunlich gut (mit diversen manuellen Anpassungen).
ChangeScale
Das Problem ist, wenn ich es danach dann doch wieder auf die ursprüngliche Größe setzen möchte. ChangeScale bezieht sich immer auf die aktuellen Abmessungen und nicht auf die ursprünglichen. Wenn man also mehrfach hin und her skaliert, sieht alles ziemlich kaputt aus, da Kommawerte jedes Mal abgeschnitten, wodurch sich Rundungsungenauigkeiten aufschaukeln. Die einfachste Lösung wäre doch, bei jedem Skalieren die Form in den Ursprungszustand zu versetzen und dann davon ausgehend ChangeScale anzuwenden. Aber wie bekommt man das am besten hin? Da es sich um die Main-Form handelt, kann ich diese nicht einfach freigeben und wieder erstellen, da sich dann ja das gesamte Programm beendet. Gibt es einen anderen Weg, die gesamte Form entsprechend der Ressourcen wieder zurückzusetzen? |
AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale
Versuch mal ob
![]() Rollo |
AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale
Such mal nach TResizeKit. Man muss das Rad ja nicht neu erfinden und das funktioniert eigentlich ganz gut. Fehlendes Verhalten kann man über ein Ereignis leicht nachrüsten. Die Komponente ist allerdings kostenpflichtig.
Ich habe das mal in ähnlicher Form nachprogrammiert mit ein paar speziellen hausinternen Anpassungen. Waren auch nur 500 Zeilen Code. |
AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale
Also meine Hoffnung ist ja, dass es einfach eine Möglichkeit gibt, die MainForm per VCL oder Windows-API in den Ursprungszustand zu versetzen. Dann wäre mein Problem ja schon gelöst, denn das Hochskalieren funktioniert ja bereits.
Weder TResizeKit2 noch EasySize/TFormResizer scheinen für mich geeignet zu sein, weil es bei meinem Programm standardmäßig möglich sein soll, die Formgröße zu ändern, ohne dass alles darin skaliert (die relevanten Komponenten passen sich per Align und Anchors an). Nur bei Bedarf soll der Anwender "zoomen" können. Das funktioniert ja alles mit ChangeScale bereits wunderbar in eine Richtung. Aufgrund der abgeschnittenen Kommawerte aller Abmessungen aber nicht sonderlich gut zurück. Vielleicht ist es irgendwie möglich, diese Komponenten für meinen Zweck umzubiegen, aber ich bin mir recht sicher, dass ich mir damit nur andere Probleme reinhole. Der Link in der zweiten Antwort bei SO führt leider ins Leere: ![]() Sonst hätte ich das gerne gelesen und ggf. ausprobiert. Das klingt von der Beschreibung her eigentlich genau danach, was ich bräuchte. Die dritte Antwort bei SO verstehe ich nicht wirklich. Die Maße der Komponenten werden dadurch ja trotzdem mehrfach neu berechnet und jedes Mal werden die Größen und Positionen ganzzahlig abgeschnitten. Das macht die Werte doch trotzdem kaputt. |
AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale
Vielleicht klingt das jetzt banal, aber merke dir doch einfach die Start-Werte und verwende diese an der richtigen Stelle.
|
AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale
Zitat:
Mal ganz davon abgesehen: Die Werte sind doch schonin den Resourcen gespeichert. Ich glaube, der 404-Link hat beschrieben, wie man diese ausliest und wieder anwendet. Ich bin halt der Meinung, dass wenn die Anwendung sich beim ersten Mal richtig aufbauen konnte, warum dann nicht auch erneut? |
AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale
Wenn ich den Kommentar unter dem 404-Link richtig interpretiere, werden dort auch alle Werte beim Start gespeichert.
Ich mache es genauso mit meiner Komponente. Möglicherweise kann man tatsächlich aus den Ressourcen die Start-Werte auslesen, aber auch dann musst du vermutlich alle Komponenten rekursiv durchgehen. Aber vielleicht kennt ja doch noch jemand eine andere Lösung. Ich werde das jedenfalls verfolgen und gegebenenfalls meine Komponente optimieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz