Supportnet / Forum / Anwendungen(Java,C++...)
Prozedur FormClose(Nil) mittels eines Buttons in Borland Delphi aufrufen
Frage
Hallo,
ich habe folgendes Problem:
Ich möchte in einer Form einen Zurück-Button integrieren, welcher die Prozedur
FEingabe.FormClose
aufruft. Nur leider erhalte ich immer den
Fehler E2035 Nicht genügend wirkliche Parameter :-(
Mein Code sieht folgendermaßen aus:
procedure TFEingabe.btnZurueckClick(Sender: TObject);
begin
FEingabe.FormClose(Nil);
end;
Kann mir jemand weiter helfen? Ich verwende Borland Delphi 2005. Danke schon mal für eure Antworten.
Antwort 1 von son_quatsch
Wie wärs, wenn Du einfach nur
aufrufst?
Zitat:
Close;
Close;
aufrufst?
Antwort 2 von GastXY
Danke. Nach mehrmaligen rumprobieren, bin ich jetzt auch darauf gekommen *g* Warum umständlich, wenns auch einfach geht :-)
Jetzt hab ich nur noch das Problem, dass ich in mein FormCloseQuery noch eine Abfrage integrieren möchte, die erkennt, ob am geöffneten Datensatz Änderungen vorgenommen wurden (die Felder, in denen Änderungen vorgenommen werden können, sind alles TDBEdit-Felder), und wenn ja, dann eine Messagebox aufgeht, in der man wählen kann, ob die geänderten Daten gespeichert oder verworfen werden sollen. Das ausgewählte soll dann natürlich auch mit den Daten geschehen.
Jetzt hab ich nur noch das Problem, dass ich in mein FormCloseQuery noch eine Abfrage integrieren möchte, die erkennt, ob am geöffneten Datensatz Änderungen vorgenommen wurden (die Felder, in denen Änderungen vorgenommen werden können, sind alles TDBEdit-Felder), und wenn ja, dann eine Messagebox aufgeht, in der man wählen kann, ob die geänderten Daten gespeichert oder verworfen werden sollen. Das ausgewählte soll dann natürlich auch mit den Daten geschehen.
Antwort 3 von son_quatsch
Aufwändiger. Deine FormCloseQuery-Prozedur müsste dann wie folgt aussehen, wobei das mit Table1. nur geraten ist (habe nie Datenbankenzugriffe in Delphi gemacht) - aber der Sinn dahinter sollte klar werden:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var
bModified: boolean;
i1: integer;
begin
bModified:= false;
for i1:= 0 to ComponentCount- 1 do begin
if Components[i1] is TDBEdit then begin
if (Components[i1] as TDBEdit).Modified then begin
bModified:= true;
break;
end;
end;
end;
if bModified then begin
case MessageBox(Handle, pchar('Sie haben Änderungen an den Daten vorgenommen.'#13'Möchten Sie diese speichern?'), pchar('Änderungen speichern?'), MB_ICONQUESTION or MB_YESNOCANCEL) of
IDYES: begin
// irgendwas .Commit (Änderungen übernehmen)
Table1.CommitUpdates;
end;
IDNO: begin
// irgendwas .Rollback oder .Cancel (Änderungen verwerfen)
Table1.CancelUpdates;
end;
IDCANCEL: CanClose:= false;
end;
end;
end;

