Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   ToogleSwitch und ini (https://www.delphipraxis.net/196842-toogleswitch-und-ini.html)

SaFu 25. Jun 2018 07:28

ToogleSwitch und ini
 
Guten Morgen,

Leider stehe ich etwas auf dem Schlauch mit dem ToogleSwitch.

Das Schreiben in eine Ini funktioniert super,

Code:
WriteBool(Einstellung1,Toggle1SwitchAktiviert,True);
nur das lesen, des wertes, verstehe ich nicht ganz.

Code:
ToggleSwitchAktivieren.IsOn:= ReadBool(Einstellung1,Toggle1SwitchAktiviert,True);
Wo liegt der Fehler?

Gruß
S

DeddyH 25. Jun 2018 07:36

AW: ToogleSwitch und ini
 
Ich nehme an, der Switch ist immer aktiviert. Das dürfte daher kommen, dass immer True in die Ini geschrieben wird, egal, ob der Switch aktiv ist oder nicht.

SaFu 25. Jun 2018 07:47

AW: ToogleSwitch und ini
 
Hi,

So sieht der Code aus, wenn er off ist wird ein False in die INI geschrieben.

Code:
procedure TForm2.ToggleSwitchAktivierenClick(Sender: TObject);
begin
 if ToggleSwitchAktivieren.IsOn = True then
     begin
      with TMemIniFile.Create(ConfigIniPfad) do
      try
        begin
         WriteBool(Einstellung1,Toggle1SwitchAktiviert,True);
         UpdateFile;
        end;
       finally
       Free;
      end;
    end
  else // ab hier wenn Toogle1 Aus dann:
    begin
      with TMemIniFile.Create(ConfigIniPfad) do
      try
        begin
         WriteBool(Einstellung1,Toggle1SwitchAktiviert,False);
         UpdateFile;
        end;
       finally
       Free;
      end;
    end;
end;

HolgerX 25. Jun 2018 07:55

AW: ToogleSwitch und ini
 
Hmm..

Habe hier kein ToggleSwitch, aber aus den Codschnipsel müsste es nicht besser so gehen?

(ich gehe davon aus, das Einstellung1 und Toggle1SwitchAktiviert strings sind, in denen die Section und der Parametername stehen)

Code:
procedure TForm2.ToggleSwitchAktivierenClick(Sender: TObject);
begin
  with TMemIniFile.Create(ConfigIniPfad) do
  try
    WriteBool(Einstellung1,Toggle1SwitchAktiviert,ToggleSwitchAktivieren.IsOn);
    UpdateFile;
  finally
    Free;
  end;
end;
Wobei ich nicht bei jedem Clieck auf dem Switch direkt in die INI schreiben würde...

Uwe Raabe 25. Jun 2018 07:56

AW: ToogleSwitch und ini
 
Das kann man aber deutlich abkürzen:
Delphi-Quellcode:
with TMemIniFile.Create(ConfigIniPfad) do
  try
    WriteBool(Einstellung1,Toggle1SwitchAktiviert,ToggleSwitchAktivieren.IsOn);
    UpdateFile;
  finally
    Free;
  end;
Das Lesen wird vermutlich gar nicht compilieren, da IsOn eine Function und kein writable Property ist.
Delphi-Quellcode:
ToggleSwitchAktivieren.State := IfThen<TToggleSwitchState>(ReadBool(Einstellung1,Toggle1SwitchAktiviert,True), tssOn, tssOff);

DeddyH 25. Jun 2018 07:58

AW: ToogleSwitch und ini
 
Delphi-Quellcode:
procedure TForm2.ToggleSwitchAktivierenClick(Sender: TObject);
var
  Ini: TMemIniFile;
begin
  Ini := TMemIniFile.Create(ConfigIniPfad);
  try
    Ini.WriteBool(Einstellung1,Toggle1SwitchAktiviert, ToggleSwitchAktivieren.IsOn);
    Ini.UpdateFile;
  finally
    Ini.Free;
  end;
end;
Da IsOn eine Funktion ist, kann man ihr auch nichts zuweisen, da müsstest Du wohl auf die State-Eigenschaft zurückgreifen.

KodeZwerg 25. Jun 2018 07:59

AW: ToogleSwitch und ini
 
Delphi-Quellcode:
Wie lautet Ini Anweisung? Ist bei Dir nich ersichtlich.
Beispiel:
  ini := TIniFile.create(IncludeTrailingBackslash(ExtractFilePath(ParamStr(0))) + 'settings.ini');
  try
    ini.WriteBool('Setup', 'Einstellung1', Hier_Kommt_Ein_Boolean-Wert_rein);
    Hier_Kommt_Ein_Boolean-Wert_rein := ini.ReadBool('Setup', 'Einstellung1', False);
  finally
    ini.free;
  end;
Das obige bewirkt, das in Datei Settings.ini eine Sparte [Setup] angelegt wird, als einstellungsname wird Einstellung1 genommen und als Wert True oder False geschrieben, der Wert ist Hier_Kommt_Ein_Boolean-Wert_rein

SaFu 25. Jun 2018 08:16

AW: ToogleSwitch und ini
 
Ich glaube das einfachste wird sein ich nehm eine Checkbox ;)

Danke trotzdem.

freimatz 25. Jun 2018 08:37

AW: ToogleSwitch und ini
 
Auf die Gefahr hin, dass ich jetzt ganz blöd dastehe: Was ist denn Toggle1SwitchAktiviert? Welchen Typ hat das, wo ist das definiert?

Hobbycoder 25. Jun 2018 08:45

AW: ToogleSwitch und ini
 
Zitat:

Zitat von freimatz (Beitrag 1405706)
Auf die Gefahr hin, dass ich jetzt ganz blöd dastehe: Was ist denn Toggle1SwitchAktiviert? Welchen Typ hat das, wo ist das definiert?

Ich nehme mal an, dass der TE in seiner INI immer ToogleSwitch.Active verwendet hat, welches dummerweise nicht für die Schalterfunktion verwendet wird, sondern lediglich das Control in der Form Aktiviert(Anklickbar) oder Deaktiviert(nicht Anklickbar).
Allerdings würde das bei einer Checkbox im gleichen Problem enden.

Zitat:

Zitat von SaFu (Beitrag 1405704)
Ich glaube das einfachste wird sein ich nehm eine Checkbox ;)
Danke trotzdem.

Das ist nicht die richtige Einstellung und löst dein Problem möglicherweise auch nicht.

Einfach mal eine Blick in den Objektinspektor werfen, und dort mal ermitteln mit welcher Eigenschaft das Toogle umgeschaltet wird. Weiterhin hilf F1 auch dort.


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