⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainformunit.pas

📁 一个不用编写任何代码的DELPHI停靠窗体的控件原码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    Debug_Stop_Debugging_Action: TAction;
    Debug_Break_Action: TAction;
    Debug_Apply_Code_Changes_Action: TAction;
    Debug_Step_Into_Action: TAction;
    Debug_Step_Over_Action: TAction;
    Debug_Step_Out_Action: TAction;
    Debug_Run_to_Cursor_Action: TAction;
    Debug_Step_Into_Specific_Function_Action: TAction;
    Debug_Exceptions_Action: TAction;
    Debug_Threads_Action: TAction;
    Debug_Modules_Action: TAction;
    Debug_Show_Next_Statement_Action: TAction;
    Debug_QuickWatch_Action: TAction;
    Go1: TMenuItem;
    Restart1: TMenuItem;
    StopDebugging1: TMenuItem;
    Break1: TMenuItem;
    ApplyCodeChanges1: TMenuItem;
    StepInto1: TMenuItem;
    StepOver1: TMenuItem;
    StepOut1: TMenuItem;
    RuntoCursor1: TMenuItem;
    StepIntoSpecificFunction1: TMenuItem;
    Exceptions1: TMenuItem;
    hreads1: TMenuItem;
    Modules1: TMenuItem;
    ShowNextStatement1: TMenuItem;
    QuickWatch1: TMenuItem;
    N33: TMenuItem;
    N34: TMenuItem;
    N35: TMenuItem;
    Cascade1: TMenuItem;
    Edit_Toggle_Bookmark_Action: TAction;
    Edit_Next_Bookmark_Action: TAction;
    Edit_Previous_Bookmark_Action: TAction;
    Edit_Clear_All_BookMarks_Action: TAction;
    Edit_Increase_Indent_Action: TAction;
    Edit_Decrease_Indent_Action: TAction;
    Edit_Toggle_WhiteSpace_Display_Action: TAction;
    View_Watch_Action: TAction;
    View_Variables_Action: TAction;
    View_Registers_Action: TAction;
    View_Memory_Action: TAction;
    View_CallStack_Action: TAction;
    View_Disassembly_Action: TAction;
    DebugWindows1: TMenuItem;
    Watch1: TMenuItem;
    CallStack1: TMenuItem;
    Memory1: TMenuItem;
    Variable1: TMenuItem;
    Register1: TMenuItem;
    Disassembly1: TMenuItem;
    Build_Stop_Build_Action: TAction;
    Build_Insert_Remove_Breakpoint_Action: TAction;
    lbVCDockStyle1: TlbVCDockStyle;
    OpenDialog1: TOpenDialog;
    StatusBar1: TStatusBar;
    lbDockServer1: TlbDockServer;
    Edit_Cut_Action: TEditCut;
    Edit_Copy_Action: TEditCopy;
    Edit_Paste_Action: TEditPaste;
    Edit_SelectAll_Action: TEditSelectAll;
    Edit_Undo_Action: TEditUndo;
    Edit_Delete_Action: TEditDelete;
    ViewPopupMenu: TPopupMenu;
    Output_PopupItem: TMenuItem;
    Watch_PopupItem: TMenuItem;
    Variables_PopupItem: TMenuItem;
    Registers_PopupItem: TMenuItem;
    Memory_PopupItem: TMenuItem;
    CallStack_PopupItem: TMenuItem;
    Workspace_PopupItem: TMenuItem;
    N36: TMenuItem;
    View_Standard_Toolbar_Action: TAction;
    View_Debug_Toolbar_Action: TAction;
    View_Build_Minibar_Toolbar_Action: TAction;
    View_Edit_Toolbar_Action: TAction;
    Standard1: TMenuItem;
    BuildMinibar1: TMenuItem;
    Edit2: TMenuItem;
    Debug2: TMenuItem;
    View_Customize_Toolbar_Action: TAction;
    N37: TMenuItem;
    BuildMinibar2: TMenuItem;
    ToolButton13: TToolButton;
    ToolButton14: TToolButton;
    ToolButton33: TToolButton;
    ToolButton35: TToolButton;
    ToolButton49: TToolButton;
    ToolButton50: TToolButton;
    ToolButton51: TToolButton;
    ToolButton52: TToolButton;
    ToolButton53: TToolButton;
    procedure View_Workspace_ActionExecute(Sender: TObject);
    procedure View_OutPut_ActionExecute(Sender: TObject);
    procedure MainControlBarBandMove(Sender: TObject; Control: TControl;
      var ARect: TRect);
    procedure File_New_ActionExecute(Sender: TObject);
    procedure File_Open_ActionExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure MainControlBarResize(Sender: TObject);
    procedure MainMenu_ToolBarCustomDraw(Sender: TToolBar;
      const ARect: TRect; var DefaultDraw: Boolean);
    procedure MainMenu_ToolBarMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure MainMenu_ToolBarMouseMove(Sender: TObject;
      Shift: TShiftState; X, Y: Integer);
    procedure MainMenu_ToolBarMouseUp(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    procedure View_Watch_ActionExecute(Sender: TObject);
    procedure Window_Cascade_ActionExecute(Sender: TObject);
    procedure Window_Tile_Horizontally_ActionExecute(Sender: TObject);
    procedure Window_Tile_Vertically_ActionExecute(Sender: TObject);
    procedure View_Registers_ActionExecute(Sender: TObject);
    procedure Window_Next_ActionExecute(Sender: TObject);
    procedure Window_Previous_ActionExecute(Sender: TObject);
    procedure View_Memory_ActionExecute(Sender: TObject);
    procedure Window_Close_ActionExecute(Sender: TObject);
    procedure Window_Close_All_ActionExecute(Sender: TObject);
    procedure File_Exit_ActionExecute(Sender: TObject);
    procedure Edit_Redo_ActionExecute(Sender: TObject);
    procedure Edit_Redo_ActionUpdate(Sender: TObject);
    procedure Edit_Cut_ActionUpdate(Sender: TObject);
    procedure Edit_Copy_ActionUpdate(Sender: TObject);
    procedure Edit_Paste_ActionUpdate(Sender: TObject);
    procedure Edit_Undo_ActionUpdate(Sender: TObject);
    procedure Edit_Delete_ActionUpdate(Sender: TObject);
    procedure Edit_Cut_ActionExecute(Sender: TObject);
    procedure Edit_Copy_ActionExecute(Sender: TObject);
    procedure Edit_Paste_ActionExecute(Sender: TObject);
    procedure Edit_SelectAll_ActionExecute(Sender: TObject);
    procedure Edit_Undo_ActionExecute(Sender: TObject);
    procedure Edit_Delete_ActionExecute(Sender: TObject);
    procedure lbDockServer1GetClientAlignSize(Align: TAlign;
      var Value: Integer);
    procedure View_Standard_Toolbar_ActionExecute(Sender: TObject);
    procedure View_Debug_Toolbar_ActionExecute(Sender: TObject);
    procedure View_Build_Minibar_Toolbar_ActionExecute(Sender: TObject);
    procedure View_Edit_Toolbar_ActionExecute(Sender: TObject);
    procedure View_Variables_ActionExecute(Sender: TObject);
    procedure View_Debug_Windows_ActionExecute(Sender: TObject);
    procedure View_CallStack_ActionExecute(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    procedure GetToolbarWidthArr;
    function GetCloseButtonRect: TRect;
    function ActionEnable: Boolean;
    procedure SetToolButtonDownAndActionCheck;
    { Private declarations }
  public
    { Public declarations }
    ActivemwEdit: TmwCustomEdit;
    procedure LoadDockInfo;
  end;

var
  MainForm: TMainForm;

implementation

uses WorkSpaceUnit, OutputUnit, SourceEditUnit, WatchUnit, RegistersUnit,
  MemoryUnit, VariablesUnit, CallStackUnit;

var
  WorkSpaceForm: TWorkSpaceForm;
  OutputForm: TOutputForm;
  WatchForm: TWatchForm;
  VariablesForm: TVariablesForm;
  RegistersForm: TRegistersForm;
  MemoryForm: TMemoryForm;
  CallStackForm: TCallStackForm;

  DrawButtonRect: TRect;
  IsDown: Boolean;
  MouseDownButton: Integer;

{$R *.dfm}

procedure CreateDockableForm;
begin
  WorkSpaceForm := TWorkSpaceForm.Create(nil);//创建WorkSpace工具窗体
  OutputForm := TOutputForm.Create(nil);      //创建Output工具窗体
  WatchForm := TWatchForm.Create(nil);        //创建Watch工具窗体
  VariablesForm := TVariablesForm.Create(nil);//创建Variables工具窗体
  RegistersForm := TRegistersForm.Create(nil);//创建Registers工具窗体
  MemoryForm := TMemoryForm.Create(nil);      //创建Memory工具窗体
  CallStackForm := TCallStackForm.Create(nil);//创建CallStack工具窗体
end;

procedure TMainForm.SetToolButtonDownAndActionCheck;
begin
  View_Workspace_Action.Checked := WorkSpaceForm.Visible;
  WorkSpace_ToolButton.Down := WorkSpaceForm.Visible;

  View_Output_Action.Checked := OutputForm.Visible;
  Output_ToolButton.Down := OutputForm.Visible;

  View_Watch_Action.Checked := WatchForm.Visible;
  Watch_ToolButton.Down := WatchForm.Visible;

  View_Variables_Action.Checked := VariablesForm.Visible;
  Variables_ToolButton.Down := VariablesForm.Visible;

  View_Registers_Action.Checked := RegistersForm.Visible;
  Registers_ToolButton.Down := RegistersForm.Visible;

  View_Memory_Action.Checked := MemoryForm.Visible;
  Memory_ToolButton.Down := MemoryForm.Visible;

  View_CallStack_Action.Checked := CallStackForm.Visible;
  CallStack_ToolButton.Down := CallStackForm.Visible;
  { -------------------------------------------------------------------------- }
  View_Standard_Toolbar_Action.Checked := tb_Standard_Toolbar.Visible;
  View_Debug_Toolbar_Action.Checked := tb_Debug_Toolbar.Visible;
  View_Build_Minibar_Toolbar_Action.Checked := tb_Build_Minibar_Toolbar.Visible;
  View_Edit_Toolbar_Action.Checked := tb_Edit_Toolbar.Visible;

end;

procedure TMainForm.GetToolbarWidthArr;
var i: Integer;
begin
  for i := 0 to MainControlBar.ControlCount - 1 do
    MainControlBar.Controls[i].Tag := MainControlBar.Controls[i].Width;
end;

procedure TMainForm.View_Workspace_ActionExecute(Sender: TObject);
begin
  WorkSpace_ToolButton.Down := not WorkSpaceForm.Visible;
  View_WorkSpace_Action.Checked := WorkSpace_ToolButton.Down;
  if WorkSpace_ToolButton.Down then
    ShowDockForm(WorkSpaceForm)
  else WorkSpaceForm.Close;
end;

procedure TMainForm.View_OutPut_ActionExecute(Sender: TObject);
begin
  Output_ToolButton.Down := not OutputForm.Visible;
  View_Output_Action.Checked := Output_ToolButton.Down;
  if Output_ToolButton.Down then
    ShowDockForm(OutputForm)
  else OutputForm.Close;
end;

procedure TMainForm.MainControlBarBandMove(Sender: TObject;
  Control: TControl; var ARect: TRect);
begin
  if (Control.Tag <> ARect.Right - ARect.Left - 13)
    and (Control <> MainMenu_ToolBar) then
  begin
    ARect.Right := ARect.Left + Control.Tag + 13;
  end;
end;

procedure TMainForm.File_New_ActionExecute(Sender: TObject);
begin
  { 没事做,显示一个提示信息 }
  ShowMessage(Format('您点击了''%s''', [TAction(Sender).Caption]));
end;

procedure TMainForm.File_Open_ActionExecute(Sender: TObject);

  function FindExistFile(AFileName: string): TCustomForm;
  var i: Integer;
  begin
    Result := nil;
    for i := 0 to MDIChildCount - 1 do
      if MDIChildren[i].Caption = AFileName then
      begin
        Result := MDIChildren[i];
        Exit;
      end;
  end;

var
  ExistForm: TCustomForm;
  i: Integer;
//  SumFileNum: Integer;

begin
  if OpenDialog1.Execute then
  begin
    if (OpenDialog1.Files.Count > 0) then
    begin
      if MDIChildCount + OpenDialog1.Files.Count >= 100 then
      begin
        ShowMessage('文件数目太多,最多只能显示100个文件,后面的文件将不能显示');
        for i := OpenDialog1.Files.Count - 1 downto 100 - MDIChildCount do
          OpenDialog1.Files.Delete(i);
      end;

      for i := 0 to OpenDialog1.Files.Count - 1 do
      begin
        ExistForm := FindExistFile(OpenDialog1.Files[i]);
        if ExistForm = nil then
        begin
          with TSourceEditForm.Create(nil) do
          begin
            try
              LoadFromFile(OpenDialog1.Files[i]);
            except
              Release;
              ShowMessage('打开文件失败!');
            end;
          end;
        end else if not ExistForm.Active then
          ExistForm.Show;
      end;
    end;
  end;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var i: Integer;
begin
  for i := MDIChildCount - 1 downto 0 do
    MDIChildren[i].Close;
  SaveDockTreeToFile(ExtractFilePath(Application.ExeName) + 'DockInfo.ini');
end;

procedure TMainForm.MainControlBarResize(Sender: TObject);
begin
//  if (MainMenu_ToolBar.Width <> MainControlBar.ClientWidth - 13) then
  begin
    MainMenu_ToolBar.Width := MainControlBar.ClientWidth - 13;
    MainMenu_ToolBar.Invalidate;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -