Warum ist dieses Konstrukt bei Tastaturabfragen falsch.
Delphi-Quellcode:
if (Key = Ord('B')) and (ssCtrl in Shift) then // falsch
begin
mach was;
end;
if (Key = Ord('B')) and ((ssAlt in Shift) and (ssCtrl in Shift)) then
begin
mach was anderes
end;
Es kann zu einem Seiteneffekt führen, der schwer zu erkennen ist.
Den "mach was anderes" wird hier nie aufgerufen.
Besser ist die Abfrage mit:
Delphi-Quellcode:
if (Key = Ord('B')) and ([ssCtrl] = Shift) then // richtig
begin
mach was;
end;
if (Key = Ord('B')) and ([ssAlt, ssCtrl] = Shift) then
begin
mach was anderes
end;