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/)
-   -   TButtonColor Speichern (https://www.delphipraxis.net/184735-tbuttoncolor-speichern.html)

Rippo 17. Apr 2015 10:54

TButtonColor Speichern
 
Hallo

ich habe mit TButtonColor für mein formular eine farbe ausgewählt

wie mache ich es das die farbe jetzt gespeichert wird und beim nächsten start die farbe auch bleibt?

Popov 17. Apr 2015 11:08

AW: TButtonColor Speichern
 
Kannst den Code nach Lust und Laune erweitern:
Delphi-Quellcode:
uses
  Registry;

function RegPath: String;
begin
  Result := ExtractFileName(ChangeFileExt(ParamStr(0), ''));
end;

procedure SaveFormSettings(Form: TForm);
var
  RegIni: TRegIniFile;
begin
  RegIni := TRegIniFile.Create(RegPath);
  try
    RegIni.WriteInteger('Form', 'Color', Form.Color);
  finally
    RegIni.Free;
  end;
end;

procedure LoadFormSettings(Form: TForm);
var
  RegIni: TRegIniFile;
begin
  RegIni := TRegIniFile.Create(RegPath);
  try
    Form.Color := RegIni.ReadInteger('Form', 'Color', Form.Color);
  finally
    RegIni.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  LoadFormSettings(Form1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Color := clRed;
  SaveFormSettings(Form1);
end;

Perlsau 17. Apr 2015 11:09

AW: TButtonColor Speichern
 
TColor ist vom Typ Integer. Du mußt also nur den Integerwert beim Programmende in einen String konvertieren, auf deine Festplatte schreiben und beim Programmstart wieder einlesen und zurück in einen Integerwert konvertieren. Diesen weist du dann der jeweiligen Komponente zu.

DeddyH 17. Apr 2015 11:21

AW: TButtonColor Speichern
 
Zitat:

Zitat von Perlsau (Beitrag 1298183)
Du mußt also nur den Integerwert beim Programmende in einen String konvertieren, ...

Wieso denn das :?:

Perlsau 17. Apr 2015 11:32

AW: TButtonColor Speichern
 
Kann man denn Integer-Werte in eine gewöhnliche Textdatei schreiben? Oder anders formuliert: Ich habe hier auf eine einfache Möglichkeit hingewiesen, Integer-Werte zu speichern. Die Einfachheit des Vorschlags sollte dem Kenntnisstand des TE ungefähr angemessen sein. Der (ungefähre) Kenntnisstand ergibt sich aus vorangegangenen Beiträgen. Meiner Beobachtung nach schien der TE bereits mit dem Einsatz einer Ini-Datei leicht überfordert zu sein und hat sich zum dortigen Thema wohl deshalb nicht mehr gemeldet. Mit komplexen Lösungsvorschlägen, so scheint es mir, hält man so manche Programmieranfänger eher davon ab, weiter zu machen.

DeddyH 17. Apr 2015 11:36

AW: TButtonColor Speichern
 
Ich habe nirgends etwas von einer gewöhnlichen Textdatei gelesen. Und wenn man mit TIniFile überfordert ist und das dann lieber "Low Level" (AssignFile, Rewrite, Reset usw.) macht, ist es doch wurscht, ob es sich beim Dateiinhalt um Text oder etwas anderes handelt.

Popov 17. Apr 2015 11:52

AW: TButtonColor Speichern
 
Ohne mich einmischen zu wollen, aber AssignFile, Rewrite, Reset usw. ist für einen Anfänger vermutlich noch eine Nummer heftiger als Ini oder RegIni. Bis man das kapiert hat, hat man die dreimal kapiert. Wobei Perlsaus Idee von dem String für einen erfahrenen Nutzer lächerlich erscheint, aber
Delphi-Quellcode:
function FilePath: String;
begin
  Result := ChangeFileExt(ParamStr(0), '.txt');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    if FileExists(FilePath) then
    begin
      sl.LoadFromFile(FilePath);
      Color := StrToIntDef(Trim(sl.Text), Color);
    end;
  finally
    sl.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
begin
  Color := clYellow;
  sl := TStringList.Create;
  try
    sl.Text := IntToStr(Color);
    sl.SaveToFile(FilePath);
  finally
    sl.Free;
  end;
end;
Warum nicht. Es geht.

DeddyH 17. Apr 2015 11:56

AW: TButtonColor Speichern
 
Das ist aber auch keinen Deut einfacher als TIniFile. Und dort kann ich direkt Zahlen schreiben, die Umwandlung erfolgt intern ganz automatisch.

Sir Rufo 17. Apr 2015 12:01

AW: TButtonColor Speichern
 
Zum Speichern/Wiederherstellen von Farbwerten würde ich Delphi-Referenz durchsuchenColorToString/Delphi-Referenz durchsuchenStringToColor verwenden (dafür sind die da) und dann mit der Speicher-Variante meiner Wahl (Ini, Registry, Stream, Datenbank, LowLevel-Dateizugriff) speichern und lesen.

Perlsau 17. Apr 2015 13:51

AW: TButtonColor Speichern
 
Zitat:

Zitat von DeddyH (Beitrag 1298191)
Ich habe nirgends etwas von einer gewöhnlichen Textdatei gelesen.

Hat ja auch keiner behauptet :-D

Zitat:

Zitat von DeddyH (Beitrag 1298191)
Und wenn man mit TIniFile überfordert ist und das dann lieber "Low Level" (AssignFile, Rewrite, Reset usw.) macht, ist es doch wurscht, ob es sich beim Dateiinhalt um Text oder etwas anderes handelt.

Richtig. Und wenn man als Anfänger gerade mal (FarbenListe : TStringList; ) FarbenListe.SaveToFile versteht, weil das die einfachste und unkomplizierteste Art & Weise darstellt, Daten auf die Festplatte zu speichern (bzw. mit FarbenListe.LoadFromFile zu laden) :?:
Vielleicht sollte ich dem TE dazu raten, doch besser eine Datenbank zu verwenden (natürlich Firebird, weil ich die meistens verwende), weil ich das allermeist auch so mache und dort alle Benutzereinstellungen speichere?

Kein Grund, gleich ärgerlich zu werden :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 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