ich war in der Zwischenzeit nicht untätig und habe mir die ganze Sache nochmals durchdacht.
Ich muss darauf hinweisen, dass ich ein Anfänger und vermutlich ein lausiger Programmierer bin, doch ich mache das einfach für mich und habe
Freude daran, wenn mir was gelingt. Das nur vorweg, damit etwas Verständnis für meine naiven Fragen in eure Gedult und die Antworten einfließen können.
Ja nun zum Anliegen selbst: ich habe die Form und die logic jeweils in eine
unit verpackt. Auch die variablen sind private gesetzt.
Zur logic - was will ich erreichen:
- Applikation wird gestartet;
- nach Button Daten laden wird der erste Datensatz in den edit-Feldern angezeigt (ID,Name,Herkunft,Geschlecht)
- Button clear löscht die angezeigten Daten; vermutlich muss ich jedoch die Daten auch freigeben und nicht nur im Form löschen;
- Neuer Datensatz anlegen Daten werden eingegeben, Button Speichern betätigen dann neues TName erzeugen und der Liste (Add) anhängen
- Navigation mit Button vor und Buttun zurück
mehr will ich zunächst nicht erreichen. War das mit Logic gemeint?
Nun die Herkules-Aufgabe: Die Form ist schlicht und einfach drei Editfelder eine checkbox und Button laden Button speichern Button vor und zurück.
Die logic in
unit Daten ist die vom Link in #1. Name in Names geändert, damit keine Mißverst. auftreten.
Methode Laden:
Delphi-Quellcode:
procedure TForm1.ladenClick(Sender: TObject);
var Names:TName;
begin
Names:=TName.create;
try
FDatalist.LoadFromFile('e:\test\daten.dat');
Names := FDatalist.Items[0] as TName;
Edit1.text:=inttostr(Names.ID);
Edit2.Text:=Names.Name;
Edit3.text:=Names.Herkunft;
CheckBox1.Checked:=Names.Geschlecht;
finally
FreeAndNil(Names);
end;
end;
Methode speichern:
Delphi-Quellcode:
procedure TForm1.speichernClick(Sender: TObject);
var Names: TName;
begin
Names:=TName.create;
try
Names.ID:=strtoint(Edit1.text);
Names.Name:=edit2.text;
Names.Herkunft:=Edit3.text;
Names.Geschlecht:=checkBox1.Checked;
FDatalist.Add(Names);
FDatalist.SaveToFile('e:\Test\daten.dat');
init;
finally
FreeAndNil(Names);
end;
end;
Probleme dabei: ich kann nur einen Datensatz eingeben und wenn abgespeichert wurde, kann so kein neuer eingegeben werden und auch der gespeicherte
nicht geladen werden, da er noch in Verwendung ist. Also müßte er für die Neueingabe eines zweiten DS freigegeben werden.
Weitere Handlungen am Programm sind erst nach Neustart des Prog. möglich, z.B. Datensatz laden.
Die Eingabe eines DS überschreibt den bereits gespeicherten DS.- blöd.
Was sollte ich tun? HolgerX schreibt: (Button Speichern), dann neues TName erzeugen und der Liste anhängen.
Das möchte ich auch aber wie?