Man beachte das mrCancel, was ich gerade mal noch zum Testen hinzugefügt hab...
Delphi-Quellcode:
case TypeCompare(aImpObj, aCurObj) of
2: blDoTblCheck := true;
1: case MessageDlg( message, mtConfirmation, [mbYes,mbNo,mbCancel],0 ) of
mrNo: begin
aDeleteObj[aImpObjCount]:=1;
aActionProtocol.DoAddDBActionEventItem(customEvent);
end;
mrYes: begin
aImpObj.ID:= aCurObj.TypID;
blDoTblCheck:= TRUE;
end;
mrCancel : Exit; //hab ich testhalber mal hinzugefügt, wird auch ignoriert
else
exit; //wird ignoriert
end;
else
begin
aDeleteObj[aImpObjCount]:=1;
aActionProtocol.DoAddDBActionEventItem(customEvent);
blDoTblCheck:= false;
exit;
end;
EDIT:
beim Klick auf Cancel springt er direkt in das else-Label der äußeren Case-Bedingung und zwar direkt auf exit, ohne die drei Anweisungen davor.
EDIT2:
Was mir noch aufgefallen ist, was dem Problem aber auch nicht abhilft, ist, dass die
IDE(*) das else unterschiedlich einfärbt, je nachdem ob davor ein Semikolon steht oder nicht: mit Semikolon hat es die Farbe der Case-Bedingung und ohne die der begin...end eine Ebene tiefer bei mrYes usw.
*hab CN-Pack installiert, das färbt zusammengehörige Statements ein