AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fenstergröße anpassen?

Offene Frage von "rokli"
Ein Thema von Lerbermatt · begonnen am 6. Apr 2017 · letzter Beitrag vom 6. Apr 2017
Antwort Antwort
Lerbermatt

Registriert seit: 6. Apr 2017
1 Beiträge
 
#1

Fenstergröße anpassen?

  Alt 6. Apr 2017, 16:01
Hallo liebe Community,

ich habe ein Problem beim Anpassen der Fenstergröße. Die Idee wäre, dass die Breite des Fensters immer 1.3x grösser ist als die Höhe. Das heißt, dass wenn man nur eine Seite des Fensters vergrößert, wird die andere automatisch angepasst. Ich habe dies mit der "procedure TForm1.OnCanResize" gemacht. Es hat leider nicht so funktioniert, wie ich es wollte. Mir ist aber nicht bekannt, wo der Fehler liegt.

Code:
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
  if (NewHeight <> Form1.Height) then
    NewWidth := Round(NewHeight*1.3)
  else
    NewHeight := Round(NewWidth/1.3);
end;
Das Verhältnis wird nur zum Teil ausgeführt und es besteht ein Flackern beim Versuch das Fenster zu vergrößern. Zusätzlich besteht noch das Problem, dass die Größe nur ab und zu angepasst wird.
Wäre sehr nett von euch, wenn mir jemand dabei helfen könnte, das Programm funktionsfähig zu machen.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Fenstergröße anpassen?

  Alt 6. Apr 2017, 16:07
Bei OnCanResize kann man angeben, ob sich die Größe des Fensters weiter ändern darf.

Resize := true bzw. Resize := False;

Wenn etwas direkt bei der Größenänderung abgearbeitet werden soll, muß man OnResize verwenden.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Fenstergröße anpassen?

  Alt 6. Apr 2017, 16:15
Herzlich willkommen erst mal.

Ein Problem ist wohl auch, dass die Maus ja an der ursprünglichen Stelle bleibt und die Formulargröße sich dann wieder an der Mausposition ausrichten wird.

Es kann auch sein, dass die Größenänderung in FormCanResize wieder diese Ereignisbehandlung aufruft - also ein wiederholter Kreislauf entsteht.
Das müsste man ggf. mal z.B. mit OutputDebugString loggen.

Evtl. könnte man auch einen Timer starten, der die Größenanpassung etwa 1 Sekunde nach der letzten Mausschubserei durchführt.
Dann könnte man die Größe nach Wunsch einstellen und kurz danach wird das Seitenverhältnis korrigiert.

So eine unübliche Verfahrensweise kann aber auch dazu führen, dass die Nutzer dieses eher ablehnen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
rokli

Registriert seit: 21. Mär 2009
Ort: Rödinghausen
301 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Fenstergröße anpassen?

  Alt 6. Apr 2017, 16:23
Hallo Lebermatt,

neben dem Hinweis das im OnResize zu erledigen, musst Du den berechneten Wert auch noch der Breite (Form.Width) zuweisen.

Form.Width   := ROUND(Form.Height * 1.3);
Außerdem kannst Du die Form, z. B. mit der Maus, dann nur noch in der Höhe ändern. Wenn Du die Breite mit der Maus ziehst, schlägt OnResize wieder zu und passt die Breite wieder auf das vorgegebene Verhältnis an.

Gruß
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney
  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 04:49 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