Hi,
ich habe Forms mit 3 Seiten voler Datenfeldern. Dann müßte man aber eine globale Routine haben, die alle Felder automatisch abcheckt. Würde mich mal interessieren, wie das geht. Aber es geht einfacher : Die DataSets haben eine Funktion "modified" :
Code:
procedure Form1.Button2Click(Sender: TObject);
begin
IF NOT LiefModul.LiefDS.IsEmpty THEN BEGIN
showmessage ('LJLÖK');
IF LiefModul.LiefDS.Modified THEN BEGIN
if MessageDlg('Soll der Datensatz gespeichert werden ?',
mtInformation, [mbYes, mbNo, mbCancel], 0) = mrYes then begin
LiefModul.LiefDS.post;
LiefModul.TransAction.Commit;
END
ELSE
LiefModul.Transaction.Rollback;
END
ELSE
LiefModul.Transaction.Rollback;
END;
LiefStamm.FormShow (Sender);
end;
Die arbeitet intern anscheinend wie die meisten Editoren. Bei einer Änderung wird ein Flag gesetzt. Was aber den Nachteil hat, beim rückgängig machen, ist der Datensatz immer noch als geändert gekennzeichnet. Erkläre mir aber mal einer wieso bei obigem Programm das ganze Programm verlassen wird ?
Steht die ShowMessage (ziemlich am Anfang) im Quelltext, wird auch das FormShow am Schluß ausgeführt, dann habe ich wieder eine leere Form. Mache ich es weg, wird das Programm beendet. Wie immer
Da hat man doch tatsächlich viel schneller als man dachte ein Problem gelöst und die Lösung verursacht das nächste.
Gruß
Hansa
hier ist noch das FormShow (mache ich den Showmessage Kommentar weg, ja dann geht es auch
):
Code:
procedure Form1.FormShow(Sender: TObject);
begin
// showmessage ('2Ä');
Edit1.Enabled := true;
Edit1.Text := '';
Edit1.SetFocus;
Button1.Enabled := true;
Button2.Enabled := true;
end;