Hi,
ich habe das Problem, dass das OnChanging-Event eines TListView mehrmals (3-4 mal, leider scheinbar nicht konstant) aufgerufen wird.
Ausgangssituation:
Ich will im OnChanging-Event eine Abfrage (MessageDlg) implementieren, ob der Eintrag, der verlassen werden soll gespeichert (Ja), nicht gespeichert (Nein) oder wieder zu diesem Eintrag zurückgekehrt werden soll (Abbrechen). Bei 'Abbrechen' setze ich AllowChange auf False.
Code:
Delphi-Quellcode:
procedure TForm1.ListView1Changing(Sender: TObject; Item: TListItem;
Change: TItemChange; var AllowChange: Boolean);
begin
AllowChange := True;
// CheckBox1.Checked wird hier nur las Flag verwendet, ob sich in dem Eintrag etwas gändert hat
If (Change = ctState) and CheckBox1.Checked then begin
case MessageDlg('Änderungen speichern?',mtCustom,[mbYes,mbNo,mbCancel],0) of
mrYes: begin
// Speichern ...
CheckBox1.Checked := False;
end;
mrNo: begin
CheckBox1.Checked := False;
end;
else
AllowChange := False;
end;
end;
Problem:
Da das das OnChanging-Event mehrmals durchlaufen wird wird bei der Auswahl von 'Abbrechen' im Dialog der Dialog bis zu vier mal angezeigt. Sehr unschön
.
Irgendwer eine Idee?
Gruß
Jörg Gehlen