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

📄 mainformunit.pas

📁 一个不用编写任何代码的DELPHI停靠窗体的控件原码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  end;
end;

procedure TMainForm.MainMenu_ToolBarCustomDraw(Sender: TToolBar;
  const ARect: TRect; var DefaultDraw: Boolean);
begin
  if (MDIChildCount > 0) and (MDIChildren[0].WindowState = wsMaximized) then
  begin
    MainMenu_ToolBar.Canvas.FillRect(DrawButtonRect);
    DrawButtonRect := GetCloseButtonRect;

    DrawFrameControl(MainMenu_ToolBar.Canvas.Handle, DrawButtonRect, DFC_CAPTION, DFCS_CAPTIONCLOSE or Integer(IsDown and (MouseDownButton = 3)) * DFCS_PUSHED);
    OffsetRect(DrawButtonRect, - 18, 0);
    DrawFrameControl(MainMenu_ToolBar.Canvas.Handle, DrawButtonRect, DFC_CAPTION, DFCS_CAPTIONRESTORE or Integer(IsDown and (MouseDownButton = 2)) * DFCS_PUSHED);
    OffsetRect(DrawButtonRect, - 16, 0);
    DrawFrameControl(MainMenu_ToolBar.Canvas.Handle, DrawButtonRect, DFC_CAPTION, DFCS_CAPTIONMIN or Integer(IsDown and (MouseDownButton = 1)) * DFCS_PUSHED);
  end;
end;

procedure TMainForm.MainMenu_ToolBarMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var p: TPoint;
begin
  P := Point(X, Y);
  DrawButtonRect := GetCloseButtonRect;
  DrawButtonRect.Left := DrawButtonRect.Left - 34;
  if PtInRect(DrawButtonRect, P) and (MDIChildCount > 0) and (MDIChildren[0].WindowState = wsMaximized) then
  begin
    IsDown := True;
    MainMenu_ToolBarMouseMove(Sender, Shift, X, Y);
  end;
end;

procedure TMainForm.MainMenu_ToolBarMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var p: TPoint;
  OldMouseDownButton: Integer;
begin
  if not IsDown then Exit;
  OldMouseDownButton := MouseDownButton;
  MouseDownButton := 0;
  P := Point(X, Y);
  DrawButtonRect := GetCloseButtonRect;

  if PtInRect(DrawButtonRect, P) and (MouseDownButton = 0) then
    MouseDownButton := 3;

  OffsetRect(DrawButtonRect, - 18, 0);
  if PtInRect(DrawButtonRect, P) and (MouseDownButton = 0) then
    MouseDownButton := 2;

  OffsetRect(DrawButtonRect, - 16, 0);
  if PtInRect(DrawButtonRect, P) and (MouseDownButton = 0) then
    MouseDownButton := 1;

  if MouseDownButton <> OldMouseDownButton then
    MainMenu_ToolBar.Invalidate;
end;

procedure TMainForm.MainMenu_ToolBarMouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var p: TPoint;
begin
  if (not IsDown) or (MDIChildCount = 0) then Exit;
  IsDown := False;
  MouseDownButton := 0;
  P := Point(X, Y);
  DrawButtonRect := GetCloseButtonRect;

  if PtInRect(DrawButtonRect, P) and (MouseDownButton = 0) then
    MouseDownButton := 3;

  OffsetRect(DrawButtonRect, - 18, 0);
  if PtInRect(DrawButtonRect, P) and (MouseDownButton = 0) then
    MouseDownButton := 2;

  OffsetRect(DrawButtonRect, - 16, 0);
  if PtInRect(DrawButtonRect, P) and (MouseDownButton = 0) then
    MouseDownButton := 1;

  if MouseDownButton <> 0 then
  begin
    case MouseDownButton of
      1: MDIChildren[0].WindowState := wsMinimized;
      2: MDIChildren[0].WindowState := wsNormal;
      3: MDIChildren[0].Close;
    end;
    MainMenu_ToolBar.Invalidate;
  end;
  MouseDownButton := 0;
end;

function TMainForm.GetCloseButtonRect: TRect;
begin
  Result := Rect(MainMenu_ToolBar.Width - 16,
                 5,
                 MainMenu_ToolBar.Width,
                 19);
end;

procedure TMainForm.View_Watch_ActionExecute(Sender: TObject);
begin
  Watch_ToolButton.Down := not WatchForm.Visible;
  View_Watch_Action.Checked := Watch_ToolButton.Down;
  if Watch_ToolButton.Down then
    ShowDockForm(WatchForm)
  else WatchForm.Close;
end;

procedure TMainForm.Window_Cascade_ActionExecute(Sender: TObject);
begin
  Cascade;
end;

procedure TMainForm.Window_Tile_Horizontally_ActionExecute(
  Sender: TObject);
begin
  TileMode := tbHorizontal;
  Tile;
end;

procedure TMainForm.Window_Tile_Vertically_ActionExecute(Sender: TObject);
begin
  TileMode := tbVertical;
  Tile;
end;

procedure TMainForm.View_Registers_ActionExecute(Sender: TObject);
begin
  Registers_ToolButton.Down := not RegistersForm.Visible;
  View_Registers_Action.Checked := Registers_ToolButton.Down;
  if Registers_ToolButton.Down then
    ShowDockForm(RegistersForm)
  else RegistersForm.Close;
end;

procedure TMainForm.Window_Next_ActionExecute(Sender: TObject);
begin
  Next;
end;

procedure TMainForm.Window_Previous_ActionExecute(Sender: TObject);
begin
  Previous;
end;

procedure TMainForm.View_Memory_ActionExecute(Sender: TObject);
begin
  Memory_ToolButton.Down := not MemoryForm.Visible;
  View_Memory_Action.Checked := Memory_ToolButton.Down;
  if Memory_ToolButton.Down then
    ShowDockForm(MemoryForm)
  else MemoryForm.Close;
end;

procedure TMainForm.Window_Close_ActionExecute(Sender: TObject);
begin
  if MDIChildCount > 0 then
    MDIChildren[0].Close;
end;

procedure TMainForm.Window_Close_All_ActionExecute(Sender: TObject);
var i: Integer;
begin
  for i := MDIChildCount - 1 downto 0 do
    MDIChildren[i].Close;
end;

procedure TMainForm.File_Exit_ActionExecute(Sender: TObject);
begin
  Close;
end;

procedure TMainForm.Edit_Redo_ActionExecute(Sender: TObject);
begin
  if (MDIChildCount > 0) and (ActivemwEdit <> nil) then
    ActivemwEdit.Redo;
end;

procedure TMainForm.Edit_Redo_ActionUpdate(Sender: TObject);
begin
  Edit_Redo_Action.Enabled := ActionEnable and ActivemwEdit.CanRedo;
end;

procedure TMainForm.Edit_Cut_ActionUpdate(Sender: TObject);
begin
  Edit_Cut_Action.Enabled := ActionEnable and (ActivemwEdit.SelText <> '');
end;

procedure TMainForm.Edit_Copy_ActionUpdate(Sender: TObject);
begin
  Edit_Copy_Action.Enabled := ActionEnable
end;

function TMainForm.ActionEnable: Boolean;
begin
  Result := (MDIChildCount > 0) and
    (MDIChildren[0].WindowState <> wsMinimized)
    and (ActivemwEdit <> nil);
end;

procedure TMainForm.Edit_Paste_ActionUpdate(Sender: TObject);
begin
  Edit_Paste_Action.Enabled := ActionEnable and ActivemwEdit.CanPaste;
end;

procedure TMainForm.Edit_Undo_ActionUpdate(Sender: TObject);
begin
  Edit_Undo_Action.Enabled := ActionEnable and ActivemwEdit.CanUndo;
end;

procedure TMainForm.Edit_Delete_ActionUpdate(Sender: TObject);
begin
  Edit_Undo_Action.Enabled := ActionEnable;
end;

procedure TMainForm.Edit_Cut_ActionExecute(Sender: TObject);
begin
  if ActivemwEdit <> nil then
    ActivemwEdit.CutToClipboard;
end;

procedure TMainForm.Edit_Copy_ActionExecute(Sender: TObject);
begin
  if ActivemwEdit <> nil then
    ActivemwEdit.CopyToClipboard;
end;

procedure TMainForm.Edit_Paste_ActionExecute(Sender: TObject);
begin
  if ActivemwEdit <> nil then
    ActivemwEdit.PasteFromClipboard;
end;

procedure TMainForm.Edit_SelectAll_ActionExecute(Sender: TObject);
begin
  if ActivemwEdit <> nil then
    ActivemwEdit.SelectAll;
end;

procedure TMainForm.Edit_Undo_ActionExecute(Sender: TObject);
begin
  if ActivemwEdit <> nil then
    ActivemwEdit.Undo;
end;

procedure TMainForm.Edit_Delete_ActionExecute(Sender: TObject);
begin
  if ActivemwEdit <> nil then
    ActivemwEdit.SelText := '';
end;

procedure TMainForm.lbDockServer1GetClientAlignSize(Align: TAlign;
  var Value: Integer);
begin
  if Align = alBottom then
  begin
//    DockPanel.Top := 0;
    StatusBar1.Top := Height - StatusBar1.Height;
  end;
end;

procedure TMainForm.View_Standard_Toolbar_ActionExecute(Sender: TObject);
begin
  View_Standard_Toolbar_Action.Checked := not tb_Standard_Toolbar.Visible;
  tb_Standard_Toolbar.Visible := View_Standard_Toolbar_Action.Checked;
end;

procedure TMainForm.View_Debug_Toolbar_ActionExecute(Sender: TObject);
begin
  View_Debug_Toolbar_Action.Checked := not tb_Debug_Toolbar.Visible;
  tb_Debug_Toolbar.Visible := View_Debug_Toolbar_Action.Checked;
end;

procedure TMainForm.View_Build_Minibar_Toolbar_ActionExecute(
  Sender: TObject);
begin
  View_Build_Minibar_Toolbar_Action.Checked := not tb_Build_Minibar_Toolbar.Visible;
  tb_Build_Minibar_Toolbar.Visible := View_Build_Minibar_Toolbar_Action.Checked;
end;

procedure TMainForm.View_Edit_Toolbar_ActionExecute(Sender: TObject);
begin
  View_Edit_Toolbar_Action.Checked := not tb_Edit_Toolbar.Visible;
  tb_Edit_Toolbar.Visible := View_Edit_Toolbar_Action.Checked;
end;

procedure TMainForm.View_Variables_ActionExecute(Sender: TObject);
begin
  Variables_ToolButton.Down := not VariablesForm.Visible;
  View_Variables_Action.Checked := Variables_ToolButton.Down;
  if Variables_ToolButton.Down then
    ShowDockForm(VariablesForm)
  else VariablesForm.Close;
end;

procedure TMainForm.View_Debug_Windows_ActionExecute(Sender: TObject);
begin
//
end;

procedure TMainForm.View_CallStack_ActionExecute(Sender: TObject);
begin
  CallStack_ToolButton.Down := not CallStackForm.Visible;
  View_CallStack_Action.Checked := CallStack_ToolButton.Down;
  if CallStack_ToolButton.Down then
    ShowDockForm(CallStackForm)
  else CallStackForm.Close;
end;

procedure TMainForm.LoadDockInfo;
begin
  CreateDockableForm;
  GetToolbarWidthArr;
  LoadDockTreeFromFile(ExtractFilePath(Application.ExeName) + 'DockInfo.ini');
  SetToolButtonDownAndActionCheck;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
//  LoadDockInfo;
end;

end.

⌨️ 快捷键说明

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