![]() |
ein String einem TFont zuweisen
Hi,
ich habe mit dem TFontDialog experimentiert und habe folgendes probiert:
Delphi-Quellcode:
Nun bin ich soweit gekommen, dass ich den Label1.Font verändern kann (d. h. mit Schriftart, Farbe, Größe, etc.). Dann habe ich mir gedacht, das soll so bleiben, also speichere ich das doch in eine MeinProg.ini (nicht nur das, ich muss das auch mit
procedure TEinstellungen.Button7Click(Sender: TObject);
begin FontDialog1.Execute; Label1.Font := FontDialog1.Font; end;
Delphi-Quellcode:
senden können). Aber wie speichere ich das Format in einen String?
ClientSocket1.Socket.SendText(Meinfont);
Kann mir da einer helfen? THX im Voraus Gruß, Dima |
Re: ein String einem TFont zuweisen
FontToString()
oder FontToStr() weiss es nicht mehr genau :wink: |
Re: ein String einem TFont zuweisen
Hallo,
Zitat:
Ich habe es vor langer Zeit mal so gelöst:
Delphi-Quellcode:
function FontToString(Value: TFont) : String;
begin Result:=''; If Assigned(Value) then begin Result:='Name='+Value.Name+';'; Result:=Result+'Color='+IntToStr(Value.Color)+';'; FValue:=Result+'Size='+IntToStr(Value.Size)+';'; Result:=Result+'Style=['; If fsBold in Value.Style then Result:=Result+'B'; If fsItalic in Value.Style then Result:=Result+'I'; If fsUnderLine in Value.Style then Result:=Result+'U'; If fsStrikeOut in Value.Style then Result:=Result+'S'; Result:=Result+']'; end; end; |
Re: ein String einem TFont zuweisen
Hi,
OK, danke schön. Zumindest kann ich das in eine .ini speichern. Und wie wandle ich das Ganze wieder zurück? Oder kann ich einem Label1.Font einen String zuweisen? :wall: Gruß, Dima PS: kann ich trotzdem irgendwo StrToFont bzw FontToStr runterladen o. ä.? Ich meine, es ist bequem, nur eine Zeile zu haben :-D |
Re: ein String einem TFont zuweisen
Hi,
noch was: habe versucht, das Umgekehrte eigenhändig zu erstellen... Leider gab's eine Exception, als ich versucht habe, den String in den TFont umzuwandeln...
Delphi-Quellcode:
Was ist alles falsch?
function TEinstellungen.StringToFont(Value: String) : TFont;
begin begin // Schriftart Delete(Value, 1, 5); // 'Name=' entfernen Result.Name := Copy(Value, 1, pos(';', Value) - 1); // Den String bis zum ';' kopieren' Delete(Value, 1, pos(';', Value) - 1); // Das kopierte Stück entfernen // Farbe Delete(Value, 1, 7); // ';Color=' entfernen Result.Color := StrToInt(Copy(Value, 1, pos(';', Value) - 1)); // Den String bis zum ';' kopieren' Delete(Value, 1, pos(';', Value) - 1); // Das kopierte Stück entfernen // Größe Delete(Value, 1, 6); // ';Size=' entfernen Result.Size := StrToInt(Copy(Value, 1, pos(';', Value) - 1)); // Den String bis zum ';' kopieren' Delete(Value, 1, pos(';', Value) - 1); // Das kopierte Stück entfernen // Stil Delete(Value, 1, 8); // ';Style=[' entfernen if Value[1] = 'B' then begin Result.Style := Result.Style + [fsBold]; Delete(Value, 1, 1); end; if Value[1] = 'I' then begin Result.Style := Result.Style + [fsItalic]; Delete(Value, 1, 1); end; if Value[1] = 'U' then begin Result.Style := Result.Style + [fsUnderLine]; Delete(Value, 1, 1); end; if Value[1] = 'S' then begin Result.Style := Result.Style + [fsStrikeOut]; Delete(Value, 1, 1); end; end; end; Gruß, Dima |
Re: ein String einem TFont zuweisen
Das geht so auch nicht! TFont ist ein Objekt und kein Record, wie man vermuten könnte.
Deshalb müsste man erst Result := TFont.Create machen, aber besser ist es so:
Delphi-Quellcode:
procedure StrToFont(const Name: string; Font: TFont);
begin Font.Name := Name; end; |
Re: ein String einem TFont zuweisen
Hi,
ok, erstens: werden hier die ganzen Einstellungen in dem String gespeichert, wie Farbe und so oder nur die Schriftart? Ich brauche ja Farben, Größe, etc. -> siehe MSN Messenger Ich kann natürlich auch mehrere Strings hintereinander schicken, aber das ist Dummfug.. würde schon gerne so machen:
Delphi-Quellcode:
Gruß, Dima
// im Moment:
ClientSocket1.Socket.SendText(NickName + '#' + MyMessage); // soll werden: ClientSocket1.Socket.SendText(NickName + '#' + FontProfile + '#' + MyMessage); |
Re: ein String einem TFont zuweisen
Zitat:
Delphi-Quellcode:
ansonsten würde die font auch dem Label zugewiesen werden wenn der Dialog abgebrochen wird.
if FondDialog1.Execute then
Label1.Font := FontDialog1.Font; |
Re: ein String einem TFont zuweisen
Zitat:
|
Re: ein String einem TFont zuweisen
Hi,
Das Problem ist, dass ich weiß nicht, was jetzt Sache ist! das hier:
Delphi-Quellcode:
oder
function TEinstellungen.StringToFont(Value: String) : TFont;
begin Result := TFont.Create(Self); begin // Schriftart Delete(Value, 1, 5); // 'Name=' entfernen Result.Name := Copy(Value, 1, pos(';', Value) - 1); // Den String bis zum ';' kopieren' Delete(Value, 1, pos(';', Value) - 1); // Das kopierte Stück entfernen // Farbe Delete(Value, 1, 7); // ';Color=' entfernen Result.Color := StrToInt(Copy(Value, 1, pos(';', Value) - 1)); // Den String bis zum ';' kopieren' Delete(Value, 1, pos(';', Value) - 1); // Das kopierte Stück entfernen // Größe Delete(Value, 1, 6); // ';Size=' entfernen Result.Size := StrToInt(Copy(Value, 1, pos(';', Value) - 1)); // Den String bis zum ';' kopieren' Delete(Value, 1, pos(';', Value) - 1); // Das kopierte Stück entfernen // Stil Delete(Value, 1, 8); // ';Style=[' entfernen if Value[1] = 'B' then begin Result.Style := Result.Style + [fsBold]; Delete(Value, 1, 1); end; if Value[1] = 'I' then begin Result.Style := Result.Style + [fsItalic]; Delete(Value, 1, 1); end; if Value[1] = 'U' then begin Result.Style := Result.Style + [fsUnderLine]; Delete(Value, 1, 1); end; if Value[1] = 'S' then begin Result.Style := Result.Style + [fsStrikeOut]; Delete(Value, 1, 1); end; end; end;
Delphi-Quellcode:
wogegen hier nur die Schriftart gespeichert wird. Oder soll ich die oben genannten Beispiele anwenden und mir keinen Kopf sondern einen elend langen Quelltext machen? :wall:
procedure StrToFont(const Name: string; Font: TFont);
begin Font.Name := Name; end; Besser wäre natürlich das:
Delphi-Quellcode:
Gruß, Dima
FontToStr(MeinFont);
// bzw. StrToFont(MeinString); // also halt wie StrToInt('16'); :kotz: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz