AGB  ·  Datenschutz  ·  Impressum  







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

Formularinhalte bei OnResize neu skalieren

Ein Thema von LokutusvB · begonnen am 25. Sep 2014 · letzter Beitrag vom 1. Okt 2014
Antwort Antwort
Seite 1 von 3  1 23      
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#1

Formularinhalte bei OnResize neu skalieren

  Alt 25. Sep 2014, 09:09
Delphi-Version: 5
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?
MFG
LokutusvB
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Formularinhalte bei OnResize neu skalieren

  Alt 25. Sep 2014, 10:35
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.
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#3

AW: Formularinhalte bei OnResize neu skalieren

  Alt 25. Sep 2014, 11:00
Danke dir. Wo finde ich dein kleines Beispielprojekt?
MFG
LokutusvB
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Formularinhalte bei OnResize neu skalieren

  Alt 25. Sep 2014, 11:09
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...
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: Formularinhalte bei OnResize neu skalieren

  Alt 25. Sep 2014, 11:52
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.
MFG
LokutusvB
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Formularinhalte bei OnResize neu skalieren

  Alt 25. Sep 2014, 12:12
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.
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#7

AW: Formularinhalte bei OnResize neu skalieren

  Alt 25. Sep 2014, 13:14
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.
MFG
LokutusvB
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#8

AW: Formularinhalte bei OnResize neu skalieren

  Alt 25. Sep 2014, 14:56
Nimm doch die Komponente EASYSIZE (Torry.net):
http://www.delphipraxis.net/74959-fo...skalieren.html
Angehängte Dateien
Dateityp: zip EASYSIZE.zip (13,2 KB, 63x aufgerufen)
Dateityp: zip EASYSIZE-Demo.zip (834,1 KB, 65x aufgerufen)

Geändert von hathor (25. Sep 2014 um 15:11 Uhr)
  Mit Zitat antworten Zitat
LokutusvB

Registriert seit: 18. Jul 2006
277 Beiträge
 
Delphi XE6 Enterprise
 
#9

AW: Formularinhalte bei OnResize neu skalieren

  Alt 25. Sep 2014, 16:01
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.
MFG
LokutusvB
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#10

AW: Formularinhalte bei OnResize neu skalieren

  Alt 25. Sep 2014, 17:52
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;

Geändert von hathor (25. Sep 2014 um 17:58 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:29 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