AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ein String einem TFont zuweisen

Ein Thema von DymonD · begonnen am 1. Dez 2004 · letzter Beitrag vom 13. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#1

ein String einem TFont zuweisen

  Alt 1. Dez 2004, 00:49
Hi,
ich habe mit dem TFontDialog experimentiert und habe folgendes probiert:
Delphi-Quellcode:
procedure TEinstellungen.Button7Click(Sender: TObject);
begin
FontDialog1.Execute;
Label1.Font := FontDialog1.Font;
end;
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
ClientSocket1.Socket.SendText(Meinfont); senden können). Aber wie speichere ich das Format in einen String?

Kann mir da einer helfen?

THX im Voraus

Gruß, Dima
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#2

Re: ein String einem TFont zuweisen

  Alt 1. Dez 2004, 06:20
FontToString()
oder
FontToStr()

weiss es nicht mehr genau
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: ein String einem TFont zuweisen

  Alt 1. Dez 2004, 08:29
Hallo,
Zitat von Airblader:
FontToString()
oder
FontToStr()

weiss es nicht mehr genau
Delphi bringt diese Funktionen nicht mit.

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;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#4

Re: ein String einem TFont zuweisen

  Alt 1. Dez 2004, 19:40
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?

Gruß, Dima

PS: kann ich trotzdem irgendwo StrToFont bzw FontToStr runterladen o. ä.? Ich meine, es ist bequem, nur eine Zeile zu haben
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#5

Re: ein String einem TFont zuweisen

  Alt 1. Dez 2004, 20:31
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:
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] = 'Bthen begin
      Result.Style := Result.Style + [fsBold];
      Delete(Value, 1, 1);
      end;
    if Value[1] = 'Ithen begin
      Result.Style := Result.Style + [fsItalic];
      Delete(Value, 1, 1);
      end;
    if Value[1] = 'Uthen begin
      Result.Style := Result.Style + [fsUnderLine];
      Delete(Value, 1, 1);
      end;
    if Value[1] = 'Sthen begin
      Result.Style := Result.Style + [fsStrikeOut];
      Delete(Value, 1, 1);
      end;
    end;
end;
Was ist alles falsch?

Gruß, Dima
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

Re: ein String einem TFont zuweisen

  Alt 3. Dez 2004, 09:37
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;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#7

Re: ein String einem TFont zuweisen

  Alt 6. Dez 2004, 23:13
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:
// im Moment:
ClientSocket1.Socket.SendText(NickName + '#' + MyMessage);

// soll werden:
ClientSocket1.Socket.SendText(NickName + '#' + FontProfile + '#' + MyMessage);
Gruß, Dima
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: ein String einem TFont zuweisen

  Alt 6. Dez 2004, 23:28
Zitat von DymonD:
Delphi-Quellcode:
procedure TEinstellungen.Button7Click(Sender: TObject);
begin
FontDialog1.Execute;
Label1.Font := FontDialog1.Font;
end;
richtiger wäre
Delphi-Quellcode:
  if FondDialog1.Execute then
    Label1.Font := FontDialog1.Font;
ansonsten würde die font auch dem Label zugewiesen werden wenn der Dialog abgebrochen wird.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#9

Re: ein String einem TFont zuweisen

  Alt 7. Dez 2004, 06:50
Zitat von DymonD:
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:
// im Moment:
ClientSocket1.Socket.SendText(NickName + '#' + MyMessage);

// soll werden:
ClientSocket1.Socket.SendText(NickName + '#' + FontProfile + '#' + MyMessage);
Gruß, Dima
Ja wo ist denn jetzt das Problem? Die Funktionen zum Konvertieren Font<->String wurden doch hier aufgezeigt. Um den String auseinanderzusplitten musst du dir nur mal Pos und Copy/Delete anschauen. Oder die Explode-Funktion aus der Codelib.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von DymonD
DymonD

Registriert seit: 12. Mai 2004
Ort: Niederhöchstadt
116 Beiträge
 
Delphi 2005 Personal
 
#10

Re: ein String einem TFont zuweisen

  Alt 8. Dez 2004, 23:50
Hi,
Das Problem ist, dass ich weiß nicht, was jetzt Sache ist! das hier:
Delphi-Quellcode:
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] = 'Bthen begin
      Result.Style := Result.Style + [fsBold];
      Delete(Value, 1, 1);
      end;
    if Value[1] = 'Ithen begin
      Result.Style := Result.Style + [fsItalic];
      Delete(Value, 1, 1);
      end;
    if Value[1] = 'Uthen begin
      Result.Style := Result.Style + [fsUnderLine];
      Delete(Value, 1, 1);
      end;
    if Value[1] = 'Sthen begin
      Result.Style := Result.Style + [fsStrikeOut];
      Delete(Value, 1, 1);
      end;
    end;
end;
oder
Delphi-Quellcode:
procedure StrToFont(const Name: string; Font: TFont);
begin
  Font.Name := Name;
end;
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?
Besser wäre natürlich das:
Delphi-Quellcode:
FontToStr(MeinFont);
// bzw.
StrToFont(MeinString);
// also halt wie
StrToInt('16');
Gruß, Dima
Dimitri K.
DymonD & Dimak are Ganxtas Of Paradise
http://www.dymond-online.de/gop
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz