Komponentengröße
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Komponentengröße
Hallo Forum,
wie kann man die Größe von: z.B. TEdit, TLabel, TImages usw. einer Formgröße anpassen lassen.
Wenn man z.B. eine Form kreiert und dort irgendwelche Komponenten platziert und das Programm
in den Vollbildschirm - Modus schaltet, dann sehen die einzelnen Komponenten ziemlich verloren aus und die Schrift ist auch zum Bildschirmverhältnis dann ziemlich klein.
Gibt es keine Möglichkeit, die Komponenten Proportional zur Bildschirmgröße mit wachsen zu lassen.
Bei einem TEdit oder TLabel natürlich auch die Schriftgröße und z.B. bei einem TStringgrid auch den Inhalt.
Halt alle Komponenten.
Wie immer, für eine Antwort Dankbar.
Gruß
wie kann man die Größe von: z.B. TEdit, TLabel, TImages usw. einer Formgröße anpassen lassen.
Wenn man z.B. eine Form kreiert und dort irgendwelche Komponenten platziert und das Programm
in den Vollbildschirm - Modus schaltet, dann sehen die einzelnen Komponenten ziemlich verloren aus und die Schrift ist auch zum Bildschirmverhältnis dann ziemlich klein.
Gibt es keine Möglichkeit, die Komponenten Proportional zur Bildschirmgröße mit wachsen zu lassen.
Bei einem TEdit oder TLabel natürlich auch die Schriftgröße und z.B. bei einem TStringgrid auch den Inhalt.
Halt alle Komponenten.
Wie immer, für eine Antwort Dankbar.
Gruß
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: Komponentengröße
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Komponentengröße
Danke,
aber das funktioniert ja gar nicht.
Die Schrift eines TLabels bleibt immer gleich groß.
Ich habe ein SeitenPanel: TPairSplitterSide mit jeweils einem TImage (Stretch-True).
Dort Positionierte TLabels behalten immer ihre eingestellte Schriftgröße.
Wie kann man die Schriftgröße proportional zur Form bzw. Bildgröße(TImage) verändern?
aber das funktioniert ja gar nicht.
Die Schrift eines TLabels bleibt immer gleich groß.
Ich habe ein SeitenPanel: TPairSplitterSide mit jeweils einem TImage (Stretch-True).
Dort Positionierte TLabels behalten immer ihre eingestellte Schriftgröße.
Wie kann man die Schriftgröße proportional zur Form bzw. Bildgröße(TImage) verändern?
-
- Beiträge: 6204
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Komponentengröße
Man könnte es so lösen, aber elegant finde ich es nicht.
Code: Alles auswählen
procedure TForm1.FormResize(Sender: TObject);
begin
Label1.Font.Height := Height div 10;
Label1.Top := Height div 4;
Label1.Left := Left div 8;
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 285
- Registriert: Mi 20. Feb 2013, 10:30
- OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
- CPU-Target: 32/64,ARM(RPi)
Re: Komponentengröße
Danke,
Seltsam, also wenn Size auf 0 steht und nur Label1.Font.Height := Height div 28; in FormResize verwendet wird funktioniert es mit meinem Hintergrundbild Perfekt.
Sogar bei selbst Definierten Textgrößen in Windows(110, 120, 150% usw.) unter Textanpassungen.
Seltsam, also wenn Size auf 0 steht und nur Label1.Font.Height := Height div 28; in FormResize verwendet wird funktioniert es mit meinem Hintergrundbild Perfekt.
Sogar bei selbst Definierten Textgrößen in Windows(110, 120, 150% usw.) unter Textanpassungen.
-
- Beiträge: 38
- Registriert: Di 18. Nov 2014, 22:50
- OS, Lazarus, FPC: Windows 7 [x64]; Lazarus 1.6.4 [i386-win32]; FPC 3.0.2 [win32 i386]
- CPU-Target: 64Bit
OptimalFill
Für TLabel gibt es die Eigenschaft OptimalFill.
Sichtbar wird diese Eigenschaft aber erst bei Änderung der Caption, der Breite oder Höhe.
Kennt jemand einen Weg, dies von Hand auszulösen, ohne das Label zu manipulieren?
Sichtbar wird diese Eigenschaft aber erst bei Änderung der Caption, der Breite oder Höhe.
Kennt jemand einen Weg, dies von Hand auszulösen, ohne das Label zu manipulieren?
-
- Beiträge: 201
- Registriert: Do 24. Jan 2013, 21:22
Re: Komponentengröße
Hallo ,
ich benutze seit Jahren die Unit Easysize.pas , um '''''alle''''' visuellen Komponenten auf dem Form zu skalieren.
Ist ursprünglich für Delphi gebaut und mit leichten Modifikationen auch unter Lazarus nutzbar.
Zu finden ist die Unit unter
http://torry.net/quicksearchd.php?String=resize&Title=Yes
hier dann TFormResizer v.2.0 herunterladen .
1) Easysize.pas auspacken und folgende Teile ändern.
2) ein neues Projekt starten und ein paar Komponeten auf die Form schmeißen (Buttons , Label's u.u.u)
3) Im Objektinspektor einen Font für das Formular auswählen , z.B. Arial , Fett , 10
4) Die Unit Easysize oben unter uses einbinden
5) eine Variable für den Formreziser anlegen
6) In form oncreate folgende Einträge einbauen .
7) Unter form onresize noch folgenden Eintrag
8) Programm starten und ausprobieren.
Beim Ziehen der Form sollten nun alle Komponenten und auch deren Fonts skaliert werden .
Gruß
Frank
ich benutze seit Jahren die Unit Easysize.pas , um '''''alle''''' visuellen Komponenten auf dem Form zu skalieren.
Ist ursprünglich für Delphi gebaut und mit leichten Modifikationen auch unter Lazarus nutzbar.
Zu finden ist die Unit unter
http://torry.net/quicksearchd.php?String=resize&Title=Yes
hier dann TFormResizer v.2.0 herunterladen .
1) Easysize.pas auspacken und folgende Teile ändern.
Code: Alles auswählen
{ ****************************************************************** }
{ }
{ VCL component TFormResizer: Resizes all components on a form }
{ }
{ See accompanying Readme.txt file for usage instructions }
{ }
{ Version 2.0 (May 1999) }
{ }
{ Versions 1.0, 1.1 written by David A. Price, dprice@erols.com }
{ Version 2.0 adds font-resizing enhancements contributed }
{ by Wolfgang Kleinrath, office@kleinrath.at }
{ }
{ Copyright © 1999 by David A. Price }
{ http://www.compcreate.com }
{ This file may be redistributed freely if not altered }
{ Suggestions are welcome }
{ Offered "AS IS" -- no warranties }
{ }
{ ****************************************************************** }
unit Easysize;
interface
{$MODE DELPHI} // <----------------------------- Einfügen
uses Messages, SysUtils, Classes, Controls,
Forms, Graphics, StdCtrls;
// folgendes noch ausklammern
//{$IFDEF WIN32}
//{$R Easysize.d32}
//{$ELSE}
//{$R Easysize.d16}
//{$ENDIF}
2) ein neues Projekt starten und ein paar Komponeten auf die Form schmeißen (Buttons , Label's u.u.u)
3) Im Objektinspektor einen Font für das Formular auswählen , z.B. Arial , Fett , 10
4) Die Unit Easysize oben unter uses einbinden
Code: Alles auswählen
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Easysize; // <----------- die unit Easysize einbinden
5) eine Variable für den Formreziser anlegen
Code: Alles auswählen
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
GroupBox1: TGroupBox;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
es:TFormResizer; // <----------------------- Variable für den TFormreziser
end;
6) In form oncreate folgende Einträge einbauen .
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
es:=TFormResizer.Create(form1); // <----- TFormResizer Objekt erzeugen
es.EnforceMinSize:=false; // <----- legt fest , ob man die Form kleiner machen kann , als die Entwurfsgröße , false läßt dieses zu
es.ResizeFonts:=true; // <----- Fonts mit zoomen ja / nein
es.MinFontSize:=2; // <----- Minimale Fontgröße
es.MaxFontSize:=30; // <----- Maximale Fontgröße
es.InitializeForm; // <----- Initalisieren des TFormResizer's , ganz wichtig , sonst ballert es !!!!
end;
7) Unter form onresize noch folgenden Eintrag
Code: Alles auswählen
procedure TForm1.FormResize(Sender: TObject);
begin
es.ResizeAll;
end;
8) Programm starten und ausprobieren.
Beim Ziehen der Form sollten nun alle Komponenten und auch deren Fonts skaliert werden .
Gruß
Frank
www.flz-vortex.de
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Re: Komponentengröße
Muss ich unbedingt ausprobieren. Hört sich nach großem Kino an . Danke für den Hinweis
Ich mag Pascal...
-
- Beiträge: 6204
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Komponentengröße
Ich habe es gerade probiert, unter Windows geht es, aber unter Linux kommt ein SIGSEV:
Dies ist in folgender Funktion:
Projekt project1 hat Exception-Klasse »External: SIGSEGV« ausgelöst.
In Datei 'include/font.inc' in Zeile 1236
Dies ist in folgender Funktion:
Code: Alles auswählen
function TFont.GetCharSet: TFontCharSet;
begin
Result := FCharSet; // Hier knallts !
end;
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Re: Komponentengröße
Mathias hat geschrieben:Ich habe es gerade probiert, unter Windows geht es, aber unter Linux kommt ein SIGSEV...
Wundert einen iwie nicht, wenn man weiß, dass Delphi voll auf Windows setzt
Ich jedenfalls hab Rad Studio 10.1 Berlin seit kurz nach der Installation nicht mehr benutzt. Ich habe Java und C++ beiseite geschoben, weil ich Lazarus einfach viel besser finde
Ich mag Pascal...
-
- Beiträge: 201
- Registriert: Do 24. Jan 2013, 21:22
Re: Komponentengröße
Hallo ,
von Linux habe ich leider NULL Ahnung .
Aber eventuelle können ja mal die Spezialisten hier einen Blick auf die Unit werfen und sie Linux-fähig machen.
Der Form-Reizer an sich ist ne feine Sache und ja auch sehr einfach zu benutzen .
Wäre schade , wenn es nur unter WIN läuft.
Gruß
Frank
von Linux habe ich leider NULL Ahnung .
Aber eventuelle können ja mal die Spezialisten hier einen Blick auf die Unit werfen und sie Linux-fähig machen.
Der Form-Reizer an sich ist ne feine Sache und ja auch sehr einfach zu benutzen .
Wäre schade , wenn es nur unter WIN läuft.
Gruß
Frank
www.flz-vortex.de
Re: Komponentengröße
Leider schreibt der Autor im readme.txt:
Und ohne Änderungen wird man den Linux-Support kaum hinbekommen...
This file may be redistributed freely if not altered
Und ohne Änderungen wird man den Linux-Support kaum hinbekommen...
Re: Komponentengröße
So etwas wie EasySize habe ich schon lange gesucht. Ich habe es unter Windows ausprobiert und auch alle Änderungen gemacht, wie beschrieben. Aber beim ersten Ausprobieren kommt die folgende Fehlermeldung:
Damit ist ein Anfänger natürlich vollkommen überfordert. Was könnte ich machen?
Damit ist ein Anfänger natürlich vollkommen überfordert. Was könnte ich machen?
Re: Komponentengröße
Bei mir geht's unter Linux GTK2 64 mit zwei Änderungen.
Zeile 125 (in SetCompFont) : SetOrdProp(Component, ptrPropInfo, PtrInt(aFont));
Zeile 249: if FCompFont.Size=0 then InitFontSize := 10 else InitFontSize:=FCompFont.Size;
Den Rest des Codes könnte man vllt. auch noch anschauen auf Pointer Casting, aber so läuft es erstmal.
Zeile 125 (in SetCompFont) : SetOrdProp(Component, ptrPropInfo, PtrInt(aFont));
Zeile 249: if FCompFont.Size=0 then InitFontSize := 10 else InitFontSize:=FCompFont.Size;
Den Rest des Codes könnte man vllt. auch noch anschauen auf Pointer Casting, aber so läuft es erstmal.
-
- Beiträge: 6204
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Komponentengröße
Bei mir geht's unter Linux GTK2 64 mit zwei Änderungen.
Welche Unit ?
In der Easysize.pas, steht bei mir an den beiden Zeilen ganz etwas anderes.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot