procedure TfrmETools.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  
  if Shift in [ssShift,ssAlt,ssCtrl] then
  begin
   
  end;
end;会提示:[Error] EToolForm.pas(325): Incompatible types: 'TShiftState' and 'Enumeration'

解决方案 »

  1.   

    应该是集合类型。所以代码可以这么写:
    if (Shift * [ssShift,ssAlt,ssCtrl]) = [ssShift,ssAlt,ssCtrl] then
    begin
    end
      

  2.   

    或者
    if (ssShift in Shift) and (ssAlt in Shift) and (ssCtrl in Shift) then
      

  3.   

    倒~~灌~~Shift: TShiftState
    Shift是一个集合类型
    ssShift、ssAlt、ssCtrl是集合元素in运算表示一个元素是否在集合中
    不是表示一个集合是否在集合中
               ~~~~     ~~~~
    Shift in [ssShift,ssAlt,ssCtrl] 
    相当于[ssShift,ssAlt,ssCtrl] in [ssShift,ssAlt,ssCtrl] 
    能通吗?if Shift <= [ssShift,ssAlt,ssCtrl] then begin
      { TODO : 处理 }
    end;
      

  4.   

    这是一个集合类型,所以要这样判断  
    if ssCtrl in Shift then