在操作管理器中使用'case'代替'If else'for Actions

时间:2011-12-28 06:04:16

标签: delphi if-statement delphi-7 case

使用动作管理器处理 delph 7 应用程序,该应用程序包含大量操作(超过50个)。 并跟踪我有的每一个动作..现在我有 if else ,如下面的代码..

 procedure TMainForm.OnActionExecute(Sender: TObject);
    var
          Action : TBasicAction;
    begin
            Action := Sender as TBasicAction;
            if (Action is TAction) and not TAction(Action).Enabled then    exit;
           if Action = SQLQueryAction then
           begin
          //do somthing
           end
        else if (Action = NewSurveyAction) then
          begin
          //do somthing
          end
        else if ... 
         ..
         ..
        //lots of actions with if else latr..


    end;// of OnActionExecute....

任何人都可以告诉我

  1. 如何使用'case',如

       case actions of 
             SQLQueryAction    : //do somthing;
             newsurveyaction   : //do somthing;
    
            //lots more actions to go..
    
        end; //of case.
    

1 个答案:

答案 0 :(得分:5)

您不能在非序数类型上使用大小写。但是,每个操作都有一个包含整数的Tag属性。如果为每个操作分配一个映射到常量的标记,则可以执行以下操作:

case action.tag of
  SQL_QUERY_TAG:  //do something
  NEW_SURVEY_TAG: //do something
  //etc
end;