![]() |
Styls in ini oder änlich speichern?
Hallo zusammen
ich habe da ein vermutlich kleines Problem wobei ich allerdings im Forum noch keine mögliche Antwort gefunden habe. im oder auf einem Formular habe ich ein Panel "Panel1" und möchte zur Laufzeit die Eigenschaften vom besagtem Panel in eine *.Ini oder ähnlicher Datei speichern. >> Procedure: procedure TForm1.FontDialog1Apply(Sender: TObject; Wnd: HWND); begin {Vorschau} Panel1.Font.Name:= TFontDialog(Sender).Font.Name; Panel1.Font.Size:= TFontDialog(Sender).Font.Size; Panel1.Font.Color:= TFontDialog(Sender).Font.Color; Panel1.Font.Style:= TFontDialog(Sender).Font.Style; {Speichern} Ini:= TIniFile.Create(GetApplicationDirectory + Form1.dPIX +'.css'); try Ini.WriteString('Panel','Panel1FontName',Panel2.Fo nt.Name); Ini.WriteInteger('Panel','Panel1FontSize',Panel2.F ont.Size); Ini.WriteInteger('Panel','Panel1FontColor',Panel2. Font.Color); //an dieser Stelle komme ich nicht weiter Ini.____???_____('Panel','Panel1FontStyle',Panel2. Font.Style); finally ini.Free; end; end; könnte mir jemand zu diesem Problem eine Unterstützung geben. vielen Dank im vorraus Detlef ps: muss die Frage als offen markiert werden? |
Re: Styls in ini oder änlich speichern?
Herzlich willkommen in der Delphi-PRAXiS, Detlef.
Vielleicht findest du in diesem Thread ein paar Lösungsansätze für dein Problem: ![]() Deinen Quellcode kannst du übrigens besser über den Delphi-Button im Beitragseditor kennzeichnen - einfach deinen Code markieren und den Button drücken wäre ein möglicher Weg. Freundliche Grüße |
Re: Styls in ini oder änlich speichern?
Hallo und Herzlich Willkomen,
vielleicht hilft dir das hier weiter:
Delphi-Quellcode:
Falls du die Werte auch wieder auslesen möchtest, kannst du die Eigenschaften wieder mit
Ini.Writebool('Panel','Panel1FontColor',panel1.Font.Style=[fsbold]);
Delphi-Quellcode:
setzen.
panel1.Font.Style:=panel1.Font.Style+[fsbold];
MFG Steffen |
Re: Styls in ini oder änlich speichern?
|
Re: Styls in ini oder änlich speichern?
Hallo zusammen,
vielen Dank für die Anregungen. Ich habe mir das Beste aus den Bsp. Rausgepickt und meine Lösung mal hier eingebracht. Ist möglicherweise nicht die beste aber es Funktioniert so weit. procedure TForm1.FontDialog1Apply(Sender: TObject; Wnd: HWND); begin Panel2.Font.Name:= TFontDialog(Sender).Font.Name; Panel2.Font.Size:= TFontDialog(Sender).Font.Size; Panel2.Font.Color:= TFontDialog(Sender).Font.Color; Panel2.Font.Style:= TFontDialog(Sender).Font.Style; Ini:= TIniFile.Create(GetApplicationDirectory + Form1.dPIX +'.css'); try Ini.WriteString('Panel','Panel2FontName',Panel2.Fo nt.Name); Ini.WriteInteger('Panel','Panel2FontSize',Panel2.F ont.Size); Ini.WriteInteger('Panel','Panel2FontColor',Panel2. Font.Color); if (fsBold in TFontDialog(Sender).Font.Style) then Ini.WriteBool('Panel','Panel2FontBold',True) else Ini.WriteBool('Panel','Panel2FontBold',False); if (fsItalic in TFontDialog(Sender).Font.Style) then Ini.WriteBool('Panel','Panel2Italic',True) else Ini.WriteBool('Panel','Panel2Italic',False); finally ini.Free; end; end; Ausgelesen aus *.Ini ist ähnlich ... for i:= 1 to 25 do begin STE := TComponent(FindComponent('Panel' + IntToStr(i))); Z := STE.ComponentIndex; TPanel(Components[Z]).Height:= Ini.ReadInteger('Panel', dTEXT +'Height' ,0); TPanel(Components[Z]).Width := Ini.ReadInteger('Panel', dTEXT +'Width' ,0); TPanel(Components[Z]).Top := Ini.ReadInteger('Panel', dTEXT +'Top' ,0); TPanel(Components[Z]).Color := Ini.ReadInteger('Panel', dTEXT +'Color' ,0); TPanel(Components[Z]).Font.Size := Ini.ReadInteger('Panel', dTEXT +'FontSize' ,0); TPanel(Components[Z]).Font.Color:= Ini.ReadInteger('Panel', dTEXT +'FontColor' ,0); TPanel(Components[Z]).Font.Name := Ini.ReadString('Panel', dTEXT +'FontName' ,''); TPanel(Components[Z]).Caption := Ini.ReadString('Texte', dTEXT ,''); TPanel(Components[Z]).Font.Style:= []; if Ini.ReadBool('Panel', dTEXT +'FontBold' ,False) = true then TPanel(Components[Z]).Font.Style:= TPanel(Components[Z]).Font.Style + [fsBold] else TPanel(Components[Z]).Font.Style:= TPanel(Components[Z]).Font.Style; if Ini.ReadBool('Panel', dTEXT +'FontItalic' ,False) = true then TPanel(Components[Z]).Font.Style:= TPanel(Components[Z]).Font.Style + [fsItalic] else TPanel(Components[Z]).Font.Style:= TPanel(Components[Z]).Font.Style; end; ... Ich weis nicht, aber es gibt bestimmt auch noch schönere oder bessere Möglichkeiten. Aber ich komme erst mal so weiter. Ps: Das mit dem Code einfügen Funktioniert bei mir wohl nicht, deshalb habe ich das Manuel gemacht. Sieht schon etwas Blöd aus. Also vielen Dank Euch allen. Gruß Detlef |
Re: Styls in ini oder änlich speichern?
Zitat:
|
Re: Styls in ini oder änlich speichern?
Im Delphi den gewünschten Code markiert und den Button "Delphi-Code" geklickt.
|
Re: Styls in ini oder änlich speichern?
Statt
Delphi-Quellcode:
kannst Du auch kürzer (und IMHO übersichtlicher)
if (fsBold in TFontDialog(Sender).Font.Style)
then Ini.WriteBool('Panel','Panel2FontBold',True) else Ini.WriteBool('Panel','Panel2FontBold',False);
Delphi-Quellcode:
schreiben.
Ini.WriteBool('Panel', 'Panel2FontBold', fsBold in TFontDialog(Sender).Font.Style);
jkr |
Re: Styls in ini oder änlich speichern?
Hallo dUSER.th!
Ein paar Anmerkungen zu deinem Code: 1. Bitte benutze die Tags. Danke! 2. Du speicherst nur Italic und Bold ab - aber was ist mit den anderen möglichen Typen? 3. Du vergleichst beim Auslesen auf true, das ist eine große Gefahrenquelle und ich empfehle dir diesen Vergleich so umzustellen, dass du den Vergleich auf true einfach weglässt. IF Bedingungen evaluieren immer auf true. 4. Du kannst den Schreibcode vereinfachen, da der In Operator automatisch ein boolsches Ergebnis der Abfrage liefert, kannst du diesen direkt in dem WriteBoolean() angeben beim Aufruf. |
Re: Styls in ini oder änlich speichern?
Du kannst das auch einfacher über Integer rausbekommen zb.
Delphi-Quellcode:
Caption:=IntToStr(integer(TFontStyle(Panel1.Font.style)));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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