Komponentengröße

Für Fragen von Einsteigern und Programmieranfängern...

Komponentengröße

Beitragvon hbr » 16. Sep 2016, 14:43 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ß
hbr
 
Beiträge: 203
Registriert: 20. Feb 2013, 11:30
OS, Lazarus, FPC: Win (L 1.6.0 FPC 3.0.0) | 
CPU-Target: 32/64,ARM(RPi)
Nach oben

Beitragvon MacWomble » 16. Sep 2016, 15:24 Re: Komponentengröße

Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
MacWomble
Lazarusforum e. V.
 
Beiträge: 808
Registriert: 17. Apr 2008, 01:59
Wohnort: Freiburg
OS, Lazarus, FPC: Mint 19.1 Cinnamon / CodeTyphon LAB Version 6.90 / FP 3.3.1 Rev 42237 | 
CPU-Target: Intel i7 64/32 Bit
Nach oben

Beitragvon hbr » 17. Sep 2016, 19:04 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?
hbr
 
Beiträge: 203
Registriert: 20. Feb 2013, 11:30
OS, Lazarus, FPC: Win (L 1.6.0 FPC 3.0.0) | 
CPU-Target: 32/64,ARM(RPi)
Nach oben

Beitragvon Mathias » 17. Sep 2016, 20:03 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 gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4345
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon hbr » 17. Sep 2016, 21:14 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. :)
hbr
 
Beiträge: 203
Registriert: 20. Feb 2013, 11:30
OS, Lazarus, FPC: Win (L 1.6.0 FPC 3.0.0) | 
CPU-Target: 32/64,ARM(RPi)
Nach oben

Beitragvon TerribleCode » 24. Sep 2016, 22:06 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?
TerribleCode
 
Beiträge: 38
Registriert: 18. Nov 2014, 23:50
OS, Lazarus, FPC: Windows 7 [x64]; Lazarus 1.6.4 [i386-win32]; FPC 3.0.2 [win32 i386] | 
CPU-Target: 64Bit
Nach oben

Beitragvon Frank Ranis » 26. Sep 2016, 10:23 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.

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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
www.flz-vortex.de
Frank Ranis
 
Beiträge: 150
Registriert: 24. Jan 2013, 22:22
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Marsmännchen » 26. Sep 2016, 13:35 Re: Komponentengröße

Muss ich unbedingt ausprobieren. Hört sich nach großem Kino an :D . Danke für den Hinweis
Ich mag Pascal...
Marsmännchen
 
Beiträge: 293
Registriert: 4. Mai 2014, 21:32
Wohnort: Berlin
OS, Lazarus, FPC: Ubuntu 16.04, FPC 3.0.2, Lazarus 1.6.4 | 
CPU-Target: 64bit
Nach oben

Beitragvon Mathias » 26. Sep 2016, 17:15 Re: Komponentengröße

Ich habe es gerade probiert, unter Windows geht es, aber unter Linux kommt ein SIGSEV:
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 gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4345
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon Marsmännchen » 26. Sep 2016, 21:48 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 :roll:
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 :D
Ich mag Pascal...
Marsmännchen
 
Beiträge: 293
Registriert: 4. Mai 2014, 21:32
Wohnort: Berlin
OS, Lazarus, FPC: Ubuntu 16.04, FPC 3.0.2, Lazarus 1.6.4 | 
CPU-Target: 64bit
Nach oben

Beitragvon Frank Ranis » 27. Sep 2016, 07:30 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
www.flz-vortex.de
Frank Ranis
 
Beiträge: 150
Registriert: 24. Jan 2013, 22:22
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon wp_xyz » 27. Sep 2016, 11:10 Re: Komponentengröße

Leider schreibt der Autor im readme.txt:
This file may be redistributed freely if not altered

Und ohne Änderungen wird man den Linux-Support kaum hinbekommen...
wp_xyz
 
Beiträge: 2944
Registriert: 8. Apr 2011, 09:01

Beitragvon Andromeda » 10. Okt 2016, 09:54 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:
Bild3.jpg

Damit ist ein Anfänger natürlich vollkommen überfordert. Was könnte ich machen?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Andromeda
 
Beiträge: 120
Registriert: 4. Jan 2015, 21:18

Beitragvon theo » 10. Okt 2016, 11:13 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.
theo
 
Beiträge: 8172
Registriert: 11. Sep 2006, 19:01

Beitragvon Mathias » 10. Okt 2016, 17:07 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 gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4345
Registriert: 2. Jan 2014, 18:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: Majestic-12 [Bot] und 3 Gäste

porpoises-institution
accuracy-worried