Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Formularinhalte bei OnResize neu skalieren (https://www.delphipraxis.net/182030-formularinhalte-bei-onresize-neu-skalieren.html)

LokutusvB 25. Sep 2014 08:09

Delphi-Version: 5

Formularinhalte bei OnResize neu skalieren
 
Guten Morgen,

mir ist zwar bekannt, wie ich bei FormCreate ein Fenster auf die Bildschirmgröße anpassen und den Inhalt skalieren kann, aber ich bastel nun schon eine Zeit lang an einer Lösung, wie ich bei onResize den Formularinhalt neu skalieren kann, komme aber auf keine brauchbare Lösung. Zudem erzeugt ScaleBy bei OnResize einen "Flackereffekt", der negativ auffällt. Geht das auch anders? Hat jemand eine Lösung oder einen Lösungsansatz?

TiGü 25. Sep 2014 09:35

AW: Formularinhalte bei OnResize neu skalieren
 
Lade hier ein kleines Beispielprojekt hoch, um dein Problem zu verdeutlichen!

In der Regel (!) muss man sehr selten visuelle Komponenten über das OnResize-Event des Formulars neu ausrichten und in der Größe anpassen.
Oft sind viele Probleme mit den Propertys Anchors, Constraints und Align der jeweiligen Komponente gut zu lösen.

LokutusvB 25. Sep 2014 10:00

AW: Formularinhalte bei OnResize neu skalieren
 
Danke dir. Wo finde ich dein kleines Beispielprojekt?

Der schöne Günther 25. Sep 2014 10:09

AW: Formularinhalte bei OnResize neu skalieren
 
Du solltest ein Beispielprojekt hochladen um zu verdeutlichen was dein Problem ist ;-)

Bitte nicht krumm nehmen, aber eine ganz dumme Frage: Layout-Helfer wie TGridPanel und Eigenschaften wie Align (die jedes Control hat) kennst du aber, oder?
Weil ich kann mir eigentlich nur wenige Fälle vorstellen, wo einem das Resize des Formulars sonst überhaupt kümmern würde...

LokutusvB 25. Sep 2014 10:52

AW: Formularinhalte bei OnResize neu skalieren
 
Ja, das Panel und die Eigenschaft Align kenne ich. Nur nützt mir das nichts, weil durch das Nutzen dieser Eigenschaften die Größe der Komponenten nicht bei einer Größenänderung der Form geändert werden. Aber genau das möchte ich erreichen.

Viel beinhaltet mein Beispielprojekt noch nicht. Das ist ein Formular mit ein paar Buttons und einer Procedure bei OnCreate, die man häufig im Netz findet:

Code:
procedure TF_Form1.FormCreate(Sender: TObject);
var
  x, y : Integer;
begin
  x := Screen.Width;
  y := Screen.Height;
  if (x <> breite) or (y <> hoehe)then begin
    F_Form1.width := (F_Form1.ClientWidth * x DIV breite)
                  + F_Form1.Width - F_Form1.ClientWidth;
    F_Form1.height := (F_Form1.ClientHeight * y DIV hoehe)
                  + F_Form1.Height - F_Form1.Clientheight;
    Scaleby(x, breite);
  end;
end;
Den nicht funktionierenden Code bei OnResize habe ich immer wieder verwurfen. War ja eh fehlerhaft.

Der schöne Günther 25. Sep 2014 11:12

AW: Formularinhalte bei OnResize neu skalieren
 
Ich stelle mich da beim Verstehen immer dumm an. Deswegen das Beispielprojekt- Was ist das konkrete Problem: Das ein Memo, ein ListView sich mit in der Größe ändern soll?

Ich habe immer alles in Gridpaneln und 90% meiner Komponenten sind immer alClient- Skalieren also in ihrem Bereich (das Gridpanel-Feld) mit. Und das Gridpanel sorgt immer dafür dass die Felder immer relative oder absolute Größen haben.

LokutusvB 25. Sep 2014 12:14

AW: Formularinhalte bei OnResize neu skalieren
 
Ja, die Form soll später mal eine ListView, ein paar Buttons und ein PageControl bekommen. Diese Komponenten, sollten wenn möglich bei Größenänderung der Form auch ihre Größe ändern, inklusive der Schrift.

Mit der Procedure des FormCreate klappt das zumindest beim Anpassen an die Bildschirmgröße, abgesehen von der Breite der Tabsheets und der Breite der Spalten der ListView. Diese müßte man dann wieder manuell anpassen.

hathor 25. Sep 2014 13:56

AW: Formularinhalte bei OnResize neu skalieren
 
Liste der Anhänge anzeigen (Anzahl: 2)
Nimm doch die Komponente EASYSIZE (Torry.net):
http://www.delphipraxis.net/74959-fo...skalieren.html

LokutusvB 25. Sep 2014 15:01

AW: Formularinhalte bei OnResize neu skalieren
 
EasySize funktioniert leider nur teilweise. Das Pagecontrol z.B. wird nicht skaliert und eine ListView leider auch nicht. Allerdings wurde das EasySize, so wie es aussieht, auch nur bis Delphi 3 getestet. Die Version, die man laden kann, ist von 1999.

hathor 25. Sep 2014 16:52

AW: Formularinhalte bei OnResize neu skalieren
 
Funktioniert mit XE2 und WINDOWS 8.
Wahrscheinlich hast Du nicht die ReadMe gelesen!

Setze alles auf ein Panel.

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
begin
    FormResizer1.InitializeForm;
    FormResizer1.EnforceMinSize:= true;
    FormResizer1.ResizeFonts:= true;
    Panel1.align:= alClient;
end;

procedure TForm2.FormResize(Sender: TObject);
begin
    FormResizer1.ResizeAll;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:55 Uhr.
Seite 1 von 3  1 23      

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