Form skalieren
Form skalieren
Hallo,
mein Programm ist jetzt von der Funktion her fertig. Jetzt geht es an die Optik. Ich möchte, dass man das Programmfenster mitsamt dem ganzen Inhalt (Buttons, Schrift, Menüleiste usw.) skalieren, also in der Größe verändern kann.
Ich habe schon im Internet geschaut, aber nur Anleitungen für Delphi gefunden. Die funktionieren aber bei Lazarus nicht, weil es die Eigenschaft "scaled" nicht gibt. Ich habe auch nichts anderes, vergleichbares gefunden.
Ich wäre sehr dankbar, wenn mir jemand auf die Sprünge helfen könnte.
mein Programm ist jetzt von der Funktion her fertig. Jetzt geht es an die Optik. Ich möchte, dass man das Programmfenster mitsamt dem ganzen Inhalt (Buttons, Schrift, Menüleiste usw.) skalieren, also in der Größe verändern kann.
Ich habe schon im Internet geschaut, aber nur Anleitungen für Delphi gefunden. Die funktionieren aber bei Lazarus nicht, weil es die Eigenschaft "scaled" nicht gibt. Ich habe auch nichts anderes, vergleichbares gefunden.
Ich wäre sehr dankbar, wenn mir jemand auf die Sprünge helfen könnte.
Re: Form skalieren
Vielen Dank für die Antwort.
Ich habe versucht, den Text zu übersetzen, aber leider ist mir das nicht gelungen. Gibt es für das Skalieren vielleicht auch irgendwo etwas auf deutsch?
Ich habe versucht, den Text zu übersetzen, aber leider ist mir das nicht gelungen. Gibt es für das Skalieren vielleicht auch irgendwo etwas auf deutsch?
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Form skalieren
Was willst du genau skalieren ?
Sollen z.B. die Buttons proportional zum Form vergrössern ?
Oder willst du einfach haben, das ein Button immer rechtsbündig ist ?
Oder soll ein Label grösser werden, wen das Form wächst ?
Sollen z.B. die Buttons proportional zum Form vergrössern ?
Oder willst du einfach haben, das ein Button immer rechtsbündig ist ?
Oder soll ein Label grösser werden, wen das Form wächst ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Form skalieren
Ja, eigentlich will ich alles propotional zum Formular skalieren, also Buttons, Panels, Schrift, Labels, Edits, Menüs, Statuszeile usw. Oder geht das nicht?
Auch wenn es viel Arbeit macht, das würde ich auf mich nehmen. Wenn ich nur wüsste, wie. Mir würde eine grobe Beschreibung reichen.
Auch wenn es viel Arbeit macht, das würde ich auf mich nehmen. Wenn ich nur wüsste, wie. Mir würde eine grobe Beschreibung reichen.
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Form skalieren
Ein kleiner Anhaltspunkt, verwende Onresize des Forms
Das sieht dann etwa so aus, ohne rechnen geht nichts.
Das sieht dann etwa so aus, ohne rechnen geht nichts.
Code: Alles auswählen
procedure TForm1.FormResize(Sender: TObject);
begin
Button1.Left := Width div 20;
Button1.Top := Height div 20;
Button1.Width := Width * 90 div 100;
Button1.Height := Height * 90 div 100;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- willi4willi
- Lazarusforum e. V.
- Beiträge: 170
- Registriert: Sa 1. Nov 2008, 18:06
- OS, Lazarus, FPC: Lazarus 3.8 FPC 3.2.2 x86_64-win64-win32/win64 x86_64-linux-gtk2
- CPU-Target: i386, win64, arm
Re: Form skalieren
Hallo,
ich hatte mal vor, ein ganzes Formular auf Bildschirmgröße zu vergrößern.
Vielleicht hilft Dir das weiter, wenn Du es für Deine Bedürfnisse anpasst?
ich hatte mal vor, ein ganzes Formular auf Bildschirmgröße zu vergrößern.
Vielleicht hilft Dir das weiter, wenn Du es für Deine Bedürfnisse anpasst?
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
scalfactor:real;
begin
left:=0; Top:=0;
scalfactor:=screen.Height/Height;
if (screen.Height/Height)<(screen.Width/Width)
then scaleby(screen.Height,Height)
else scaleby(screen.Width,Width);
Height:=screen.Height;
Width:=screen.Width;
end;
Viele Grüße
Willi4Willi
------------
Re: Form skalieren
Hallo,
ich habe im Internet Lazarus-Code gefunden, der eigentlich das macht, was ich will. Wenn ich diesen Code in das OnCreate-Ereignis des Formulars packe, werden alle Buttons, Panels, Schriften, Labels und Edits beim Starten des Programms im Verhältnis zur Formulargröße angepasst, nur die Status- und Menüleiste nicht. Aber leider funktioniert das nur im OnCreate-Ereignis und nicht im OnResize-Ereignis. Warum funktioniert das im OnResize-Ereignis nicht?
ich habe im Internet Lazarus-Code gefunden, der eigentlich das macht, was ich will. Wenn ich diesen Code in das OnCreate-Ereignis des Formulars packe, werden alle Buttons, Panels, Schriften, Labels und Edits beim Starten des Programms im Verhältnis zur Formulargröße angepasst, nur die Status- und Menüleiste nicht. Aber leider funktioniert das nur im OnCreate-Ereignis und nicht im OnResize-Ereignis. Warum funktioniert das im OnResize-Ereignis nicht?
Code: Alles auswählen
procedure TFormHaupt.FormResize(Sender: TObject);
const
breite = 1144; //{Monitorauflösung, bei der das Fenster erstellt wurde}
hoehe = 699;
var
schrift: integer;
begin
schrift := pixelsperinch-96;
if screen.width>breite then begin
if schrift>0 then
{für große Schriften}
ScaleBy(round(((screen.width/breite)*100)-((screen.width/breite-1)*100)),100)
else
{für kleine Schriften}
ScaleBy(round(((screen.width/breite)*100)),100);
end
else begin
if screen.width=breite then
ScaleBy(round(((screen.width/breite)*100)-schrift),100)
else begin
if schrift>0 then
{für große Schriften}
ScaleBy(round((100-(breite/screen.width-1)*100)-(breite/screen.width-1)*100),100)
else
{für kleine Schriften}
ScaleBy(round((100-(breite/screen.width-1)*100)),100);
end;
end;
end;
-
- Beiträge: 6918
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Form skalieren
Ich habe noch nie eine Anwendung gesehen, bei der das grösser ist, als die Vorgabe des Betriebssystems.nur die Status- und Menüleiste nicht.
So wie ich dich verstehe, willst du ein Games schreiben, bei dem alles grösser ist.
Einer Alternative wäre, wen du die Auflösung des Bildschirmes änderst.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot