AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal Quadratisches Fenster auch während Resize
Thema durchsuchen
Ansicht
Themen-Optionen

Quadratisches Fenster auch während Resize

Ein Thema von DevilsCamp · begonnen am 23. Jun 2009 · letzter Beitrag vom 23. Jun 2009
Antwort Antwort
DevilsCamp
(Gast)

n/a Beiträge
 
#1

Quadratisches Fenster auch während Resize

  Alt 23. Jun 2009, 11:14
Servus.

Ich versuche gerade ein kleines Formular zu bauen, dessen Form ich immer quadratisch halten möchte (Inhalt ist eine analoge Uhr).
Über diesen Beitrag bin ich auch WM_SIZING gestoßen. Doch leider scheint Freepascal/Lazarus WM_SIZING nicht an das Formular weiter zu reichen (WM_SIZE wird empfangen).

Ich habe folgende Methoden getestet:
  • Überschreiben der WndProc-Methode
  • Abfangen vom WM_SIZING mit Hilfe von: procedure WMSizing(var Msg: TMessage); message WM_SIZING;
  • Bearbeiten von OnResize zum setzen des Seitenverhältnisses. Dabei entsteht ein komisches Flackern und die neue Größe wird nicht immer angenommen (zurücksetzen auf alte Größe).

Die ersten beiden Methoden waren ohne Erfolg.

Quellcode für Methode 3:
Delphi-Quellcode:
procedure TForm1.FormResize(Sender: TObject);
begin
  OnResize := nil;

  if (Width <> CurWidth) then
  begin
    CurWidth := Width;
    CurHeight := Width;
    Height := Width;
  end // if (Width <> CurWidth)
  else
  if (Height <> CurHeight) then
  begin
    CurWidth := Height;
    CurHeight := Height;
    Width := Height;
  end; // if (Height <> CurHeight)

  OnResize := @FormResize;
end;
Wie schon gesagt, hier entsteht ein Flackern, das wie folgt zu beschreiben ist:
Die Anzeige der neuen Größe ist erst die neue Größe (quadratisch). Wenn ich nun einen Pixel weitergehe mit der Maus, dann springt die Größe des Fensters auf die alte Größe zurück. Wieder einen Pixel weiter und ich erhalte wieder die neue Größe.

Kennt Ihr noch eine Methode um ein bestimmtes Seitenverhältnis mit Freepascal/Lazarus zu erzwingen?

Danke im Voraus.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Quadratisches Fenster auch während Resize

  Alt 23. Jun 2009, 11:17
Wie ist es damit?
Delphi-Quellcode:
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
  NewWidth := NewHeight;
  Resize := True;
end;
Verhältnis lässt sich darin entsprechend berechnen.

hab' zu spät gesehen, dass es um Lazarus geht, denke aber solche Basic's sollte da identisch sein.
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#3

Re: Quadratisches Fenster auch während Resize

  Alt 23. Jun 2009, 11:41
Zitat von Satty67:
Wie ist es damit?
Delphi-Quellcode:
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
  NewWidth := NewHeight;
  Resize := True;
end;
Verhältnis lässt sich darin entsprechend berechnen.

hab' zu spät gesehen, dass es um Lazarus geht, denke aber solche Basic's sollte da identisch sein.
Leider gibt es TForm.OnCanResize bei Lazarus (noch) nicht.

Ich habe jetzt auch mal WM_ENTERSIZEMOVE und WM_EXITSIZEMOVE getestet. Kommen ebenfalls nicht bei der Form an.
Entweder ich gewöhne mich an dieses "Flackern" oder ich schreibe das Programm in Delphi...
  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:36 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