AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Seitenverhältnisse von Formularen beim Resize belassen
Thema durchsuchen
Ansicht
Themen-Optionen

Seitenverhältnisse von Formularen beim Resize belassen

Ein Thema von ThoPos · begonnen am 15. Nov 2007 · letzter Beitrag vom 15. Nov 2007
Antwort Antwort
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Seitenverhältnisse von Formularen beim Resize belassen

  Alt 15. Nov 2007, 06:37
Hallo,

ich möchte ein vermutlich triviales Problem lösen - finde aber keinen Lösungsansatz.

Ich habe eine Form, in der ich JPG-Bilder formatfüllend anzeige. In zwei Integer-Variablen habe ich das Seitenverhältnis der Image-Komponente vorgegeben, z.B. 4:3 (Width:Height).
Jetzt möchte ich, daß wenn ich die Größe dieser Form durch ziehen mit der Maus verändere, daß
1. das Seitenverhältnis der Form immer gemäß der beiden Integervariablen anpaßt.
2. das Bild sich erst nach Beendigung der Größenveränderung neu aufbaut.

Kann mir jemand einen Lösungsansatz aufzeigen?

Gruß aus Köln
Thomas
Thomas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Seitenverhältnisse von Formularen beim Resize belassen

  Alt 15. Nov 2007, 06:49
Reagiere doch auf Größenänderungen und passe dann die Größe an
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Seitenverhältnisse von Formularen beim Resize belassen

  Alt 15. Nov 2007, 07:13
schau mal hier:
Größenverhältnis der Form bei Größenänderung beibehalten
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Seitenverhältnisse von Formularen beim Resize belassen

  Alt 15. Nov 2007, 07:37
Zitat von ThoPos:
2. das Bild sich erst nach Beendigung der Größenveränderung neu aufbaut.
Hi,

dafür eignet sich dann aber besser das Ereignis onResize des Formulars.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: Seitenverhältnisse von Formularen beim Resize belassen

  Alt 15. Nov 2007, 18:26
@SirThornberry:
Vielen Dank für den Tipp. Funktioniert prima.
... verstehe nur nicht, warum ich dieses Artikel nicht gefunden habe. Vermutlich: PEBKAC
Edit: Hast Du auch 'ne Lösung für Deine offene Frage: Änderung über einen Eckpunkt des Rahmen?

@bitsetter:
Mit dem Event OnResize bin ich bereits am experimentieren. Nur muß ich beim Beginn des Resize das automatische Aktualisieren des Bildes abschalten und am Ende wieder einschalten. Aber wie? Denn die Routine wird ja bei der Größenänderung permanent aufgerufen. Und woran erkenne ich "Beginn" und "Ende" des Resize-Vorgang?

Gruß aus Köln
Thomas
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Seitenverhältnisse von Formularen beim Resize belassen

  Alt 15. Nov 2007, 19:16
Zitat von ThoPos:
Mit dem Event OnResize bin ich bereits am experimentieren. Nur muß ich beim Beginn des Resize das automatische Aktualisieren des Bildes abschalten und am Ende wieder einschalten. Aber wie? Denn die Routine wird ja bei der Größenänderung permanent aufgerufen. Und woran erkenne ich "Beginn" und "Ende" des Resize-Vorgang?
[oh]Mit Hilfe einer Ereignisbehandlungsroutine für OnResize können Sie nach dem Ändern der Größe eines Steuerelements abschließende Anpassungen vornehmen.[/oh]

onResize wird also nach dem Ändern ausgelöst.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

Registriert seit: 26. Mär 2007
Ort: Klingenstadt
541 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Seitenverhältnisse von Formularen beim Resize belassen

  Alt 15. Nov 2007, 19:31
[quote="bitsetter"]
Zitat von ThoPos:
[oh]Mit Hilfe einer Ereignisbehandlungsroutine für OnResize können Sie nach dem Ändern der Größe eines Steuerelements abschließende Anpassungen vornehmen.[/oh]

onResize wird also nach dem Ändern ausgelöst.
Jein, OnResize wird auch während der Größenänderung aufgerufen, wenn man das Fenster mit der Mouse vergrößert/verkleinert und länger als n Millisekunden verharrt.

btw. hätte ich ebenfalls Interesse an OnBeginResize und OnEndResize-Callbacks, welche wirklich erst nach dem kompletten Resize-Vorgang (EndResize: Mousetatste wird losgelassen) gefeuert werden.
Es ist zu wahr um schön zu sein...
  Mit Zitat antworten Zitat
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

Re: Seitenverhältnisse von Formularen beim Resize belassen

  Alt 15. Nov 2007, 19:38
Hallo BitSetter,

leider kennt meine Form2 diesen Satz aus der Hilfe nicht oder hält sich zumindestens nicht daran:

Ich habe folgende Procedue in meiner Form2, welche nur zwei Objekte enthält,
ein TPanel und darin ein TImage, beide Align := alClient:

Delphi-Quellcode:
procedure TForm2.FormResize(Sender: TObject);
begin
  Form1.EditWidth.Text := IntToStr(Image.Width);
  Form1.EditHeight.Text := IntToStr(Image.Height);
end;
Während der gesamten Größenänderung werden meine beiden Textfelder in der Form1 permanent aktualisiert und nicht erst am Ende (also wenn ich die Maus nicht mehr bewege bzw. die Maustaste loslasse). Daraus schließe ich, daß die Routine OnResize nicht erst am Ende des Resize aufgerufen wird.

Edit: Dunkel scheint meine Erkenntnis zu bestätigen, oder?

Gruß aus Köln
Thomas
Thomas
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#9

Re: Seitenverhältnisse von Formularen beim Resize belassen

  Alt 15. Nov 2007, 19:42
Moin, Moin Zusammen!
Wenn ich das richtig verstehe, dann wäre für euch doch die Message WM_ExitSizeMove die Richtige - oder? Zitat : "The WM_EXITSIZEMOVE message is sent once to a window after it has exited the moving or sizing mode."
Und dann gibt es noch , Zitat : "The WM_ENTERSIZEMOVE message is sent once to a window when it enters the moving or sizing mode."
Gruß Ralph
Ralph
  Mit Zitat antworten Zitat
ThoPos

Registriert seit: 30. Jun 2004
Ort: Köln
69 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

Re: Seitenverhältnisse von Formularen beim Resize belassen

  Alt 15. Nov 2007, 20:18
Hi Ralph,

super

Zitat von taaktaak:
Moin, Moin Zusammen!
Wenn ich das richtig verstehe, dann wäre für euch doch die Message WM_ExitSizeMove die Richtige - oder? Zitat : "The WM_EXITSIZEMOVE message is sent once to a window after it has exited the moving or sizing mode."
Und dann gibt es noch , Zitat : "The WM_ENTERSIZEMOVE message is sent once to a window when it enters the moving or sizing mode."
Gruß Ralph
Die beiden Messages WM_ENTERSIZEMOVE und WM_ExitSizeMove sind genau das, was ich suchte. Wenn ich jetzt noch den optisch elegantesten Weg finde, das permanente Neuzeichnen des Bildes zu verhindern, wären alle Probleme diesbezüglich beseitigt.

Dank aus Köln
Thomas
Thomas
  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 10:38 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