Menü : Schriftgröße
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Menü : Schriftgröße
Wo kann ich im TMainMenu die Schriftgröße und Schriftart einstellen ?
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Menü : Schriftgröße
Ich denke, dies wird kaum gehen, da dies vom OS gesteuert wird.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Menü : Schriftgröße
Eine brauchbare Lösung habe ich noch nicht. Aber MainMenu hat einen OwnerDraw-Mechanismus, über den man in die Ausgabe eingreifen kann. Also: OwnerDraw des MainMenu auf true setzen, dann einen Event-Handler für OnDrawItem schreiben, in dem man den Font verändern kann und den Menütext selbst zeichnen muss (leider auch Icons etc.). Damit die Menüeinträge richtig platziert werden, muss man auch OnMeasureItem implementieren; dabei müssen die Änderungen des Fonts wiederholt werden. Allerdings sollte die Fontgröße nicht zu stark verändert werden, das ist anscheinend noch etwas buggy... Es reicht, die Events nur beim MainMenu einzutragen. Man kann aber auch bei einzelnen Menüpunkten jeweils eigene Einstellungen vornehmen.
Im Screenshot siehst du mein Ergebnis unter Windows.
Viel Spaß beim Experimentieren!
Im Screenshot siehst du mein Ergebnis unter Windows.
Viel Spaß beim Experimentieren!
Code: Alles auswählen
procedure TForm1.MainMenu1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; AState: TOwnerDrawState);
begin
ACanvas.Font.Name := 'Times New Roman';
ACanvas.Font.Size := 12;
ACanvas.Brush.Style := bsClear; // Damit wird der Text ohne Hintergrund ausgegeben
ACanvas.TextOut(ARect.left, ARect.Top, TMenuItem(Sender).Caption);
end;
procedure TForm1.MainMenu1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var AWidth, AHeight: Integer);
begin
ACanvas.Font.Name := 'Times New Roman';
ACanvas.Font.Size := 12;
AWidth := ACanvas.TextWidth(TMenuItem(Sender).Caption);
AHeight := ACanvas.TextHeight('Tg');
end;
- Dateianhänge
-
- mainmenu_ownerdraw.png (4.17 KiB) 2332 mal betrachtet
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Menü : Schriftgröße
Ich habe es grade probiert, aber funktionieren tut die nur mit Windows. Bei Linux bleibt das Menu unverändert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Menü : Schriftgröße
Wofür ist eigentlich Screen.MenuFont? Hat bei mir keinen Effekt (Win 10, Mint)
Re: Menü : Schriftgröße
Hier geht es (Windows 7):wp_xyz hat geschrieben:Wofür ist eigentlich Screen.MenuFont? Hat bei mir keinen Effekt (Win 10, Mint)
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var
aFont: TFont;
begin
aFont := Screen.MenuFont;
Caption := aFont.Name;
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Menü : Schriftgröße
Ich dachte, damit könnten man auslesen, wie der Font im System eingestellt ist.
Aber bei Size und Height kommt nur 0.
Und bei Name "default".
Aber bei Size und Height kommt nur 0.
Und bei Name "default".
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Menü : Schriftgröße
Ja, unter Linux Mint KDE GKT2 kommt nur "default" als Fontname und FontSize 0, bei Windows 7 classic Theme "Tahoma" und 8.
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Re: Menü : Schriftgröße
Michl hat geschrieben:Hier geht es (Windows 7)...wp_xyz hat geschrieben:Wofür ist eigentlich Screen.MenuFont? Hat bei mir keinen Effekt (Win 10, Mint)
Mathias hat geschrieben:Ich dachte, damit könnten man auslesen, wie der Font im System eingestellt ist.
Ach ja, jetzt fällt es mir wieder ein: damit konnte man bei Delphi 7 dafür sorgen, dass der bei Formularen als Default eingebaute, pixelige MS Sans Serif Font durch einen des Betriebssystems (Screen.MenuFont, Screen.IconFont) ersetzt wird:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
Font := Screen.IconFont;
end;
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: Menü : Schriftgröße
OK. Dann lasse ich es so wie es ist.
Re: Menü : Schriftgröße
malabarista hat geschrieben:OK. Dann lasse ich es so wie es ist.
Falls jemand anders als du selbst mit dem Programm arbeiten soll, ist das auch besser so. Viele Benutzer sehen es gar nicht gern, wenn ein Programm meint, "bessere" Einstellungen zu haben als das Betriebssystem.
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
Re: Menü : Schriftgröße
wp_xyz hat geschrieben:Falls jemand anders als du selbst mit dem Programm arbeiten soll, ist das auch besser so. Viele Benutzer sehen es gar nicht gern, wenn ein Programm meint, "bessere" Einstellungen zu haben als das Betriebssystem.
z.B. wenn ein Programm ein eigenen VisualStyle mitbringt. Wenn es nur ein Button oder eine ScrollBar ist, ok. Aber wenn das komplette Fenster aussieht als würde es nicht zum OS gehören kotze ich.
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
-
- Beiträge: 6194
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Menü : Schriftgröße
z.B. wenn ein Programm ein eigenen VisualStyle mitbringt. Wenn es nur ein Button oder eine ScrollBar ist, ok. Aber wenn das komplette Fenster aussieht als würde es nicht zum OS gehören kotze ich.
Das finde ich auch recht mühsam, unter Windows haben sehr viele Programme eigene Skins, und man weis bald nicht mehr wo man hin klicken muss.
Bei einem Games finde ich solche Sachen OK., aber bei Tools etc. eine Katastrophe.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: Menü : Schriftgröße
Mathias hat geschrieben:Ich dachte, damit könnten man auslesen, wie der Font im System eingestellt ist.
Aber bei Size und Height kommt nur 0.
Und bei Name "default".
So gehts bei mir auf Linux.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var fd:TFontData;
begin
fd:=GetFontData(Font.Handle);
ShowMessage(fd.Name+' '+inttostr(Round(fd.Height * 72 / Font.PixelsPerInch)));
end;
-
- Beiträge: 168
- Registriert: Sa 8. Okt 2016, 08:38
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Polska
Re: Menü : Schriftgröße
compmgmt hat geschrieben:z.B. wenn ein Programm ein eigenen VisualStyle mitbringt. Wenn es nur ein Button oder eine ScrollBar ist, ok. Aber wenn das komplette Fenster aussieht als würde es nicht zum OS gehören kotze ich.
Mir geht es genauso. Opera lässt grüßen. Ich habe das Windows 98-Aussehen eingestellt (denn ich brauche und will diese grafischen Effekte nicht), und nichts aus davon zu sehen.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!