TFONT "auseinandernehmen"

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

TFONT "auseinandernehmen"

Beitrag von khh »

hallo zusammen,
gibts irgendwo ne Funktion die die einzelnen Infos aus TFont zurückliefert. Ich brauche die Werte schriftart, underline bold usw. _einzeln_.

Danke Gruss KH

Benutzeravatar
theo
Beiträge: 10869
Registriert: Mo 11. Sep 2006, 19:01

Re: TFONT "auseinandernehmen"

Beitrag von theo »

khh hat geschrieben: gibts irgendwo ne Funktion die die einzelnen Infos aus TFont zurückliefert. Ich brauche die Werte schriftart, underline bold usw. _einzeln_.
Was meinst du damit? Sind doch alles Properties von TFont.
Bold etc kriegst du so raus:
FontIsBold:= fsbold in Font.Style;

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Beitrag von khh »

@theo,
heisst das ich muss alle Möglichkeiten einzeln abfragen?
so in der Art
schriftart := Font.schriftart
schriftgrad := Font.schriftgrad

geht nicht ??

Gruss KH

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Das muss du selbst machen. Als was brauchst du diese Informationen den ? Um sie in einer Datei zu speichern ?
Wenn ja ist das kein Problem nur bei der Font.Style Eigenschaft muss du etwas mehr aufwandtreiben um das als String zurückzubekommen.

und was ist der Schriftgrad ? ist das sowas wie Font.Style ? oder meinst du damit die Schrift Größe ?
MFG
Michael Springwald

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Beitrag von khh »

@pluto
und was ist der Schriftgrad
ja die Schriftgrösse
Als was brauchst du diese Informationen den ? Um sie in einer Datei zu speichern ?
genau, ich möchte diese Infos in einer Datei speichern.

und wie würdest du das machen ?

Gruss KH

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Das geht im Prinzip ganz einfach hier ein Beispiel:

Code: Alles auswählen

function FontToStr(fs:TFontStyles):String;
var
  str:String;
begin
  str:='';
  if fsBold in fs then str:='fsBold,';
  if fsItalic in fs then str:=str+'fsItalic,';
  if fsStrikeOut in fs then str:=str+'fsStrikeOut,';
  result:=str;
end;
Zuletzt geändert von pluto am Di 6. Mai 2008, 11:50, insgesamt 4-mal geändert.
MFG
Michael Springwald

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Beitrag von khh »

@pluto
ich danke dir,
die schriftgrösse und den Rest krieg ich direkt als string ?
Gruss KH

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Habe mein vorletzten Beitrag noch angepasst.

Nicht direkt für die Schriftgröße musst du IntTostr(Font.Size) machen da es ein Interger ist den Schrift Namen bekommst du als String.
MFG
Michael Springwald

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Beitrag von khh »

@pluto
ich danke dir
EDIT:

Klappt wunderbar :-)
Gruss KH

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

khh hat geschrieben:heisst das ich muss alle Möglichkeiten einzeln abfragen?
Wenn du die Werte einzeln brauchst, musst du sie auch jeweils separat abfragen, ja.

Die Schriftart rufst du dabei durch Font.Name ab, also z.B.

Code: Alles auswählen

Schriftart := Label1.Font.Name;
Euklid

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Schrift Größe = Font.Size 1
Schrift Farbe = Font.Color 2
Schrift Style = Font.Style
Schrift Art = Font.Name

2 Wenn du den Color Wert in einen String haben möchtest solltest du ColorToString verwenden
1 Wenn du die Size in einen String haben möchtest solltest du IntToStr verwenden.

Ich habe noch erweiterte Funktionen dafür geschrieben wenn du meine uColorList verwendest.
Dann hast du zugriff von über 600 Farb werten *G*.

Bei den Brush und Pen Sachen geht das im Übrigen genauso. Ich habe mir auch noch diese Praktische Funktion geschrieben:

Code: Alles auswählen

function GetColor(const aValue:String):TColor;
  var
    w:TColor;
    s,h:String;
    r,g,b:Byte;
  begin
    w:=clNone;
    if aValue[1] = '#' then begin
      h:=copy(aValue,2,Length(aValue));
      r:=StrToInt(GetToken(h,',',1));
      g:=StrToInt(GetToken(h,',',2));
      b:=StrToInt(GetToken(h,',',3));
      w:=RGB(r,g,b);
    end; // = #
 
    if (w = clNone) and (aValue[1] = '&') then begin
      h:=copy(aValue,2,Length(aValue));
      w:=StrToInt('$' + Copy(h, 5, 2) + Copy(h, 3, 2) + Copy(h, 1, 2))
    end; // &
 
    if w = clNone then begin
      s:=copy(aValue,1,2);
      if s = 'cl' then
        w:=String2ToColor(aValue);
 
      if (w = clNone) and (s <> 'pl') then
        w:=String2ToColor('pl_'+aValue);
    end;
    result:=w;
  end; // GetColor
Meine Farben :PL_
Lazarus Farben :cl
RGB Farben :#22,33,44
HTML Farben :&dc143c
Findet er nix, nimt er Automatisch pl_
Evlt. hilft das ja weiter. Aber für diese Funktion brauchst du im Moment meine uColorList die es hier im Forum gibt, sonst müsstest du diese Funktion anpassen.
MFG
Michael Springwald

khh
Beiträge: 489
Registriert: Sa 5. Apr 2008, 09:37
OS, Lazarus, FPC: Win Vista,Win 7 (L 0.9.29 FPC 2.4.1)
CPU-Target: 32Bit /64 Bit
Wohnort: Nähe Freiburg i.Br.

Beitrag von khh »

@all
ich danke euch
gruss KH

Antworten