Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Backup von eingabefelder (https://www.delphipraxis.net/55255-backup-von-eingabefelder.html)

bierhunter 18. Okt 2005 19:29


Backup von eingabefelder
 
Liste der Anhänge anzeigen (Anzahl: 2)
servus,

hab da ein formular (siehe anhang) in dem befinden sich einige editfelder checkboxen und radiobotten. wie kann ich die einstellungen speichern bevor der user sie verändert, um sie dann wiederherzustellen wenn der user auf abbrechen drückt?

hab da ne möglichkeit gefunden aber die war ziehmlich lang(siehe unten)

wäre echt gut wenn mir da jemand eine ein wenig schnellere lösung hat



implementation

{$R *.dfm}

var bu_ed_e1, bu_ed_e2, bu_ed_e3, bu_ed_e4, bu_ed_e5, bu_ed_e6, bu_ed_e7,
bu_ed_e8, bu_ed_e9, bu_ed_e10, bu_ed_e11, bu_ed_e12, bu_ed_e13, bu_ed_e14,
bu_ed_e15, bu_ed_e16, bu_ed_e17, bu_ed_e18, bu_ed_e19, bu_ed_e20,
bu_ed_a1, bu_ed_a2, bu_ed_a3, bu_ed_a4, bu_ed_a5, bu_ed_a6, bu_ed_a7,
bu_ed_a8, bu_ed_a9, bu_ed_a10, bu_ed_digi:string;

bu_cb_a1, bu_cb_a2, bu_cb_a3, bu_cb_a4, bu_cb_a5, bu_cb_a6, bu_cb_a7,
bu_cb_a8, bu_cb_a9, bu_cb_a10, bu_cb_digi,
bu_cb_e1, bu_cb_e2, bu_cb_e3, bu_cb_e4, bu_cb_e5, bu_cb_e6, bu_cb_e7,
bu_cb_e8, bu_cb_e9, bu_cb_e10, bu_cb_e11, bu_cb_e12, bu_cb_e13, bu_cb_e14,
bu_cb_e15, bu_cb_e16, bu_cb_e17, bu_cb_e18, bu_cb_e19, bu_cb_e20,
bu_rb_a1, bu_rb_a2, bu_rb_a3, bu_rb_a4, bu_rb_a5, bu_rb_a6, bu_rb_a7,
bu_rb_a8, bu_rb_a9, bu_rb_a10, bu_rb_digi,
bu_rb_e1, bu_rb_e2, bu_rb_e3, bu_rb_e4, bu_rb_e5, bu_rb_e6, bu_rb_e7,
bu_rb_e8, bu_rb_e9, bu_rb_e10, bu_rb_e11, bu_rb_e12, bu_rb_e13, bu_rb_e14,
bu_rb_e15, bu_rb_e16, bu_rb_e17, bu_rb_e18, bu_rb_e19, bu_rb_e20:boolean;


procedure TTfrm_kanaele.bt_abbrechenClick(Sender: TObject);
begin
(*alte werte wiederherstellen, in die editfelder Kanal schreiben
und formular schließen*)
Tfrm_kanaele.ed_e1.Text:=bu_ed_e1;
Tfrm_kanaele.ed_e2.Text:=bu_ed_e2;
...
Tfrm_kanaele.ed_e20.Text:=bu_ed_e20;
Tfrm_kanaele.ed_a1.Text:=bu_ed_a1;
Tfrm_kanaele.ed_a2.Text:=bu_ed_a2;
...
Tfrm_kanaele.ed_a10.Text:=bu_ed_a10;

Tfrm_kanaele.cb_e1.Checked:=bu_cb_e1;
Tfrm_kanaele.cb_e2.Checked:=bu_cb_e2;
...
Tfrm_kanaele.cb_e20.Checked:=bu_cb_e20;
Tfrm_kanaele.cb_a1.Checked:=bu_cb_a1;
Tfrm_kanaele.cb_a2.Checked:=bu_cb_a2;
...
Tfrm_kanaele.cb_a10.Checked:=bu_cb_a10;

Tfrm_kanaele.rb_e1.Checked:=bu_rb_e1;
Tfrm_kanaele.rb_e2.Checked:=bu_rb_e2;
...
Tfrm_kanaele.rb_e20.Checked:=bu_rb_e20;
Tfrm_kanaele.rb_a1.Checked:=bu_rb_a1;
Tfrm_kanaele.rb_a2.Checked:=bu_rb_a2;
...
Tfrm_kanaele.rb_a10.Checked:=bu_rb_a10;

close;
end;

procedure TTfrm_kanaele.backupExecute(Sender: TObject);
begin
//backup der formulardaten erstellen
bu_ed_e1:=Tfrm_kanaele.ed_e1.Text;
bu_ed_e2:=Tfrm_kanaele.ed_e2.Text;
...
bu_ed_e20:=Tfrm_kanaele.ed_e20.Text;
bu_ed_a1:=Tfrm_kanaele.ed_a1.Text;
bu_ed_a2:=Tfrm_kanaele.ed_a2.Text;
...
bu_ed_a10:=Tfrm_kanaele.ed_a10.Text;

bu_cb_e1:=Tfrm_kanaele.cb_e1.Checked;
bu_cb_e2:=Tfrm_kanaele.cb_e2.Checked;
...
bu_cb_e20:=Tfrm_kanaele.cb_e20.Checked;
bu_cb_a1:=Tfrm_kanaele.cb_a1.Checked;
bu_cb_a2:=Tfrm_kanaele.cb_a2.Checked;
...
bu_cb_a10:=Tfrm_kanaele.cb_a10.Checked;

bu_rb_e1:=Tfrm_kanaele.rb_e1.Checked;
bu_rb_e2:=Tfrm_kanaele.rb_e2.Checked;
...
bu_rb_e20:=Tfrm_kanaele.rb_e20.Checked;
bu_rb_a1:=Tfrm_kanaele.rb_a1.Checked;
...;
bu_rb_a10:=Tfrm_kanaele.rb_a10.Checked;
end;

PierreB 18. Okt 2005 19:31

Re: Backup von eingabefelder
 
Speichere die Daten einfach in einer Hier im Forum suchenIniFile-Datei, und dann lad sie gegebenenfalls wieder.

Stanlay Hanks 18. Okt 2005 19:39

Re: Backup von eingabefelder
 
Hi. Geh in einer Schleife alle Komponenten des Arrays Form1.Components[] durch. Bei jedem Durchlauf speicherst du in einer Ini in einer Section mit dem Namen der aktuellen Komponente (Form1.Components[x].Name). In diese Section schreibst du zum einen einen Wert "Typ", der abhängig davon, ob ein boolscher Wert (true oder false) oder aber ein Text gespeichert werden soll, entweder z.B. "1" oder "0" ist. Der zweite Wert jeder Section ist dann der eigentliche Boolsche Wert (z.B. 0 für checked = false und 1 für checked = true oder "Test" für Text = "Test"). Beim Laden kannst du dann das Ganze einfach rückwärts wieder laden.

Beispiel, wie die Ini Datei später aussehen könnte:

Code:
[Checkbox1]
Typ=0 //0 bedeutet hier, dass ein boolscher Wert erwartet wird
Wert=1 //1 bedeutet, dass die Checkbox markiert ist

[Checkbox2]
Typ=0 //0 bedeutet hier, dass ein boolscher Wert erwartet wird
Wert=0 //1 bedeutet, dass die Checkbox [b]nicht[/b] markiert ist

[Edit1]
Typ=1 //0 bedeutet hier, dass [b]Text[/b] erwartet wird
Wert=Test //Test ist der eingetragene Text.

.
.
.

Man liest sich, Stanlay :hi:

bierhunter 19. Okt 2005 18:38

Re: Backup von eingabefelder
 
Liste der Anhänge anzeigen (Anzahl: 1)
erstmal danke für die schnelle hilfe.

leider häge ich jetzt an einer anderen stelle.
ich habe ein formular(siehe anhang) und darin habe ich einen botton1 und eine groupbox1 die 4 eingabefelder enthält.
ich möchte nun alle inhalte die der user in die 4 textboxen eingibt durch eine while-schleife in ein array speichern. hab aber nur die möglichkeit gefunden den namen der textbox zu speichern.

hier mal mein versuch erst mal den den text in eine variable zu speichern:

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
s:string;
begin
i:=0;
s:=form1.GroupBox1.Controls[i].Text; //hier mein problem
showmessage(s);
end;

das resultat ist eine fehlermeldung: undeclared indentifier:'Text'
da ich erst vor kurzem mit delphi begonnen habe weiß ich nun nicht wie ich auf die fehlermeldung reagieren soll.

wäre sehr dankbar für eine kleine hilfestellung

thanks

Matze

Rastaman 19. Okt 2005 18:55

Re: Backup von eingabefelder
 
Ganz spontan würd ich ungetestet sagen so:
Delphi-Quellcode:
var
  i: Integer;
  Ar: Array [0..3] of Integer;
begin
  for i := 0 to 3 do
    Ar[i] := TEdit(FindComponent('Edit' + IntToStr(i + 1))).Text;
end;
Und wenn du Codestücke hast klicke vorher auf den Delphi-Code Button über dem Eingabefeld.#

//Edit: Geht natürlich nur wenn die Edits die Namen Edit1 bis Edit4 haben ...

Lannes 19. Okt 2005 19:38

Re: Backup von eingabefelder
 
Hallo,

damit geht es unabhängig vom Namen der eingefügten Komponenten:
Delphi-Quellcode:
for z := 0 to GroupBox1.ControlCount-1 do
    begin
    if GroupBox1.Controls[z] is TEdit then
      showmessage(TEdit(GroupBox1.Controls[z]).Text);
    if GroupBox1.Controls[z] is TCheckBox then
      if TCheckBox(GroupBox1.Controls[z]).Checked then
      showmessage(TCheckBox(GroupBox1.Controls[z]).Name+' ist aktiviert');
    //was sonst noch enthalten sein kann
    end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:44 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-2025 by Thomas Breitkreuz