IIUC你想空集[]
:
Something([ssShift]); // X
Something([ssCtrl]); // Y
Something([]); // Z
關於你提到的更新:
procedure Something(keyState : TShiftState);
begin
if ssShift in KeyState then // KeyState contains ssShift (and maybe more)
X;
if ssCtrl in KeyState then // KeyState contains ssCtrl (and maybe more)
Y;
if [ssShift, ssCtrl] * KeyState = [] then // KeyState contains neither ssShift nor ssCtrl
Z;
end;
如果你只對ssShift和ssCtrl感興趣,而其他值(步加,ssLeft。 ..)無關緊要,你可以掩蓋後者:
procedure Something(keyState : TShiftState);
var
MaskedKeyState : TShiftState
begin
MaskedKeyState := KeyState * [ssShift, ssCtrl];
if ssShift in MaskedKeyState then // MaskedKeyState contains ssShift
X;
if ssCtrl in MaskedKeyState then // MaskedKeyState contains ssCtrl
Y;
if MaskedKeyState = [] then // MaskedKeyState contains neither ssShift nor ssCtrl
Z;
end;
請看我編輯的問題.. – Himadri 2010-07-02 09:22:53
謝謝...你提供了我所需要的一切。 – Himadri 2010-07-02 09:39:01