Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Styls in ini oder änlich speichern? (https://www.delphipraxis.net/115929-styls-ini-oder-aenlich-speichern.html)

dUSER.th 20. Jun 2008 00:37


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?

marabu 20. Jun 2008 05:39

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: Font-Attribute in INI-Datei speichern

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

WIng2005 20. Jun 2008 05:43

Re: Styls in ini oder änlich speichern?
 
Hallo und Herzlich Willkomen,

vielleicht hilft dir das hier weiter:


Delphi-Quellcode:
Ini.Writebool('Panel','Panel1FontColor',panel1.Font.Style=[fsbold]);
Falls du die Werte auch wieder auslesen möchtest, kannst du die Eigenschaften wieder mit

Delphi-Quellcode:
panel1.Font.Style:=panel1.Font.Style+[fsbold];
setzen.

MFG
Steffen

Muetze1 20. Jun 2008 09:00

Re: Styls in ini oder änlich speichern?
 
Das würde ihm nicht weiterhelfen, wenn du mehr als ein Attribut gesetzt hast. Also eine fette und kursive Schrift würde mit deiner Lösung nicht abgespeichert werden.

Es ist eine Menge, somit ist kein Mitglied dieser Menge exklusiv darin enthalten. Siehe Delphi-Referenz durchsuchenin Operator, Delphi-Referenz durchsuchenInclude und Delphi-Referenz durchsuchenExclude

dUSER.th 20. Jun 2008 10:47

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

toms 20. Jun 2008 10:58

Re: Styls in ini oder änlich speichern?
 
Zitat:

Zitat von dUSER.th

Ps: Das mit dem Code einfügen Funktioniert bei mir wohl nicht, deshalb habe ich
das Manuel gemacht. Sieht schon etwas Blöd aus.

Wie hast du es denn gemacht?

dUSER.th 20. Jun 2008 12:15

Re: Styls in ini oder änlich speichern?
 
Im Delphi den gewünschten Code markiert und den Button "Delphi-Code" geklickt.

jottkaerr 20. Jun 2008 12:15

Re: Styls in ini oder änlich speichern?
 
Statt

Delphi-Quellcode:
if (fsBold in TFontDialog(Sender).Font.Style)
then Ini.WriteBool('Panel','Panel2FontBold',True)
else Ini.WriteBool('Panel','Panel2FontBold',False);
kannst Du auch kürzer (und IMHO übersichtlicher)

Delphi-Quellcode:
Ini.WriteBool('Panel', 'Panel2FontBold', fsBold in TFontDialog(Sender).Font.Style);
schreiben.

jkr

Muetze1 20. Jun 2008 12:18

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.

Blackheart 20. Jun 2008 12:33

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 02:07 Uhr.
Seite 1 von 2  1 2      

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