如题

解决方案 »

  1.   

    这是我的代码,怎么菜单点击就是没反映?
    还有人在吗?
    unit MainForm;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, OleCtrls, MapXLib_TLB, Menus, ImgList, ComCtrls,
      ToolWin, StdCtrls, Buttons, CheckLst, ComObj, BusinessSkinForm, ActnMan,
      ActnCtrls, XPStyleActnCtrls, ActnList, ActnColorMaps, ActnMenus,
      StdStyleActnCtrls;type
      TfrmMainForm = class(TForm)
        pnlMainMap: TPanel;
        mapMainMap: TMap;
        pnlRight: TPanel;
        spltMiddle: TSplitter;
        pnlSmallMap: TPanel;
        mapSmallMap: TMap;
        pnlOperate: TPanel;
        spltRight: TSplitter;
        sbMainMap: TStatusBar;
        sbTime: TStatusBar;
        tmMain: TTimer;
        GroupBox1: TGroupBox;
        clbCompany: TCheckListBox;
        Panel2: TPanel;
        sbAllSelect: TSpeedButton;
        sbNullSelect: TSpeedButton;
        sbNotSelect: TSpeedButton;
        sbDelete: TSpeedButton;
        amMain: TActionManager;
        mmbMain: TActionMainMenuBar;
        actMapOpen: TAction;
        actMapExport: TAction;
        actToolsSelect: TAction;
        actToolsZoomin: TAction;
        actToolsZoomout: TAction;
        actToolsMove: TAction;
        actToolsRestore: TAction;
        actDataImport: TAction;
        actDataDefine: TAction;
        actDataGen: TAction;
        actQueryDetail: TAction;
        actQueryDefine: TAction;
        actHelpUserguide: TAction;
        actHelpAbout: TAction;
        atbMain: TActionToolBar;
        procedure FormShow(Sender: TObject);
        procedure tmMainTimer(Sender: TObject);
        procedure FormActivate(Sender: TObject);
        procedure mapMainMapToolUsed(ASender: TObject; ToolNum: Smallint; X1,
          Y1, X2, Y2, Distance: Double; Shift, Ctrl: WordBool;
          var EnableDefault: WordBool);
        procedure clbCompanyDblClick(Sender: TObject);
        procedure sbAllSelectClick(Sender: TObject);
        procedure sbNullSelectClick(Sender: TObject);
        procedure sbNotSelectClick(Sender: TObject);
        procedure sbDeleteClick(Sender: TObject);
        procedure actToolsSelectExecute(Sender: TObject);
        procedure actToolsZoominExecute(Sender: TObject);
        procedure actToolsZoomoutExecute(Sender: TObject);
        procedure actToolsMoveExecute(Sender: TObject);
        procedure actDataDefineExecute(Sender: TObject);
        procedure actDataGenExecute(Sender: TObject);
        procedure actQueryDetailExecute(Sender: TObject);
        procedure actQueryDefineExecute(Sender: TObject);
        procedure actHelpAboutExecute(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      frmMainForm: TfrmMainForm;
      searchLayer : Variant;implementationuses Splash, ClientDataModule, DetailDisplay, DefineTable, MakeUserTable,
      DisplaySet, About;{$R *.dfm}procedure TfrmMainForm.FormShow(Sender: TObject);
    var
      dlg : TfrmLogin;
    begin
      dlg := TfrmLogin.Create(self);
      //dlg.ShowModal;
      //测试时候注销上一句
      dlg.Free;
      if dmClientDM.cdsUser.RecordCount <> 1 then
      begin
        Application.Terminate;
      end;
      actToolsSelect.Execute;
    end;procedure TfrmMainForm.tmMainTimer(Sender: TObject);
    begin
      sbTime.Panels.Items[0].Text := FormatDateTime('YYYY-MM-DD HH:NN:SS',Now());
    end;procedure TfrmMainForm.FormActivate(Sender: TObject);
    begin
       searchLayer := mapMainMap.Layers.Item('Canada Major Cities');
    end;procedure TfrmMainForm.mapMainMapToolUsed(ASender: TObject;
      ToolNum: Smallint; X1, Y1, X2, Y2, Distance: Double; Shift,
      Ctrl: WordBool; var EnableDefault: WordBool);
    Var
       i : Integer;
       fID : String;
       pt : Variant;
       curFeatures : Variant;
       obj : Variant;
    begin
      pt := CreateOleObject('MapX.Point.4');
      if ToolNum = miSelectTool then
      begin
        pt.Set(X1,Y1);
        curFeatures := SearchLayer.SearchAtPoint(pt);
        for i := 1 to curFeatures.Count do
        begin
          obj := curFeatures.Item(i);
          Str(obj.FeatureID:4:0, fID);
          self.clbCompany.Items.Add(obj.Name);
          dmClientDM.curCompany := obj.Name;
          //self.mmQueryDetail.Click;
        end;
      end;
      //sbMainMap.Panels.Items[0].Text := Format('X = %d',pt.X);
      //sbMainMap.Panels.Items[1].Text := Format('Y = %d',pt.Y);end;procedure TfrmMainForm.clbCompanyDblClick(Sender: TObject);
    var
      i : integer;//循环变量
    begin
      for i:=0 to clbCompany.Items.Count - 1 do
      begin
        if clbCompany.Selected[i] then
        begin
          dmClientDM.curCompany := clbCompany.Items.Strings[i];
    //      self.mmQueryDetail.Click;
          exit;
        end;
      end;
    end;procedure TfrmMainForm.sbAllSelectClick(Sender: TObject);
    var
      i : integer;
    begin
      for i:=0 to self.clbCompany.Count - 1 do
      begin
        self.clbCompany.Checked[i] := true;
      end;
    end;procedure TfrmMainForm.sbNullSelectClick(Sender: TObject);
    var
      i : integer;
    begin
      for i:=0 to self.clbCompany.Count - 1 do
      begin
        self.clbCompany.Checked[i] := false;
      end;
    end;procedure TfrmMainForm.sbNotSelectClick(Sender: TObject);
    var
      i : integer;
    begin
      for i:=0 to self.clbCompany.Count - 1 do
      begin
        self.clbCompany.Checked[i] := not self.clbCompany.Checked[i];
      end;
    end;procedure TfrmMainForm.sbDeleteClick(Sender: TObject);
    var
      i : integer;
    begin
      self.clbCompany.MultiSelect := true;
      for i:=0 to self.clbCompany.Count - 1 do
      begin
        self.clbCompany.Selected[i] := self.clbCompany.Checked[i];
      end;
      self.clbCompany.DeleteSelected;
      self.clbCompany.MultiSelect := false;
    end;procedure TfrmMainForm.actToolsSelectExecute(Sender: TObject);
    begin
      mapMainMap.CurrentTool := miSelectTool;
    end;procedure TfrmMainForm.actToolsZoominExecute(Sender: TObject);
    begin
      mapMainMap.CurrentTool := miZoomInTool;
    end;procedure TfrmMainForm.actToolsZoomoutExecute(Sender: TObject);
    begin
      mapMainMap.CurrentTool := miZoomOutTool;
    end;procedure TfrmMainForm.actToolsMoveExecute(Sender: TObject);
    begin
      mapMainMap.CurrentTool := miPanTool;
    end;procedure TfrmMainForm.actDataDefineExecute(Sender: TObject);
    var
      dlg : TfrmDefineTable;
    begin
      dlg := TfrmDefineTable.Create(Application);
      dlg.ShowModal;
      dlg.Free;
    end;procedure TfrmMainForm.actDataGenExecute(Sender: TObject);
    var
      dlg : TfrmMakeUserTable;
    begin
      dlg := TfrmMakeUserTable.Create(Application);
      dlg.ShowModal;
      dlg.Free;
    end;procedure TfrmMainForm.actQueryDetailExecute(Sender: TObject);
    var
      dlg : TfrmDetailDisplay;
    begin
      dlg := TfrmDetailDisplay.Create(Application);
      dlg.ShowModal;
      dlg.Free;
    end;procedure TfrmMainForm.actQueryDefineExecute(Sender: TObject);
    var
      dlg : TfrmDisplaySet;
    begin
      dlg := TfrmDisplaySet.Create(Application);
      dlg.ShowModal;
      dlg.Free;
    end;procedure TfrmMainForm.actHelpAboutExecute(Sender: TObject);
    var
      dlg : TfrmAbout;
    begin
      dlg := TfrmAbout.Create(Application);
      dlg.ShowModal;
      dlg.Free;
    end;end.
      

  2.   

    why101(王一行) :
    关联了,我看了D7自己的例子,我得和例子一模一样,可例子就可以执行没问题,而我得怎么也不能触发Action的执行时间,调试都走不到那一步!
      

  3.   

    ftp://lessBug:[email protected]
    方便把源码给我传过来吗? 我帮你看看
      

  4.   

    如果是标准ACTION的话,从TActionManager中拖到TOOLBAR上就能用了;
    如果是自己建的话,从TActionManager双击自定义的ACTION,写一条语句保证ACTION执行不为空就OK了;
    注意:可能是你把ACTION加到了ACTIVE属性为FALSE的ACTION下,这样肯定看都看不到了。
      

  5.   

    我真的受不了了,我吧那个ActionManager删掉然后重新添了一个就好了。程序没问题了,可这是咋回事?认了吧!
    结帖!!!