AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale
Thema durchsuchen
Ansicht
Themen-Optionen

Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale

Ein Thema von CodeX · begonnen am 30. Nov 2017 · letzter Beitrag vom 1. Dez 2017
Antwort Antwort
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#1

Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale

  Alt 30. Nov 2017, 17:14
Ich würde gerne ChangeScale verwenden, um die Programmoberfläche bei Bedarf vergrößern zu können. Das funktioniert auch erstaunlich gut (mit diversen manuellen Anpassungen).

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?
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.

Geändert von CodeX (30. Nov 2017 um 20:10 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.900 Beiträge
 
Delphi 12 Athens
 
#2

AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale

  Alt 1. Dez 2017, 05:56
Versuch mal ob das hier funktioniert, müsste man vielleicht an neuere DelpiVersionen anpassen.

Rollo
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale

  Alt 1. Dez 2017, 07:38
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.
Peter
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#4

AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale

  Alt 1. Dez 2017, 11:48
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:
http://delphi.about.com/od/adptips20...controlpos.htm
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.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale

  Alt 1. Dez 2017, 12:09
Vielleicht klingt das jetzt banal, aber merke dir doch einfach die Start-Werte und verwende diese an der richtigen Stelle.
Peter
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#6

AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale

  Alt 1. Dez 2017, 12:19
Vielleicht klingt das jetzt banal, aber merke dir doch einfach die Start-Werte und verwende diese an der richtigen Stelle.
Bei einer handvoll Komponenten würde ich das ja machen. Sind aber schon ein paar mehr und über Panels und Groupboxes verschachtelt. Wenn, dann müsste ich da rekursiv alle Komponenten durchgehen und mir ein System zurechtlegen, alle deren Werte zu speichern. Das erscheint mir dann nicht mehr so banal.

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?
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.337 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Main-Form zurücksetzen bzw. neuerstellen nach ChangeScale

  Alt 1. Dez 2017, 13:25
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.
Peter
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz