Componentes.Terceros.jvcl/official/3.32/examples/JvDocking/VCDemo/Source/Main.pas

1018 lines
32 KiB
ObjectPascal
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html
Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.
You may retrieve the latest version of this file at the Project JEDI's JVCL home page,
located at http://jvcl.sourceforge.net
Known Issues:
-----------------------------------------------------------------------------}
unit Main;
{$I jvcl.inc}
{$IFNDEF USEJVCL}
Sorry, this demo requires the JVCL!
{$ENDIF}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, ImgList, ExtCtrls, StdCtrls, Menus, ActnList,
JvDockControlForm, JvDockVCStyle, Grids, StdActns, JVHLEditor,
JvDockDelphiStyle, JvDockVIDStyle
{$IFDEF USEJVCL}
, JvComponent, JvAppStorage, JvAppIniStorage
{$ENDIF};
type
TMainForm = class(TForm)
MainControlBar: TControlBar;
tb_Standard_ToolBar: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
WorkSpace_ToolButton: TToolButton;
Output_ToolButton: TToolButton;
ToolButton15: TToolButton;
ToolButton16: TToolButton;
ToolButton17: TToolButton;
ToolButton18: TToolButton;
Search_Panel: TPanel;
ComboBox1: TComboBox;
tb_Edit_ToolBar: TToolBar;
ToolButton19: TToolButton;
ToolButton20: TToolButton;
ToolButton21: TToolButton;
ToolButton22: TToolButton;
ToolButton23: TToolButton;
ToolButton24: TToolButton;
ToolButton25: TToolButton;
ToolButton26: TToolButton;
ToolButton27: TToolButton;
ToolButton28: TToolButton;
tb_Build_MiniBar_ToolBar: TToolBar;
ToolButton29: TToolButton;
ToolButton30: TToolButton;
ToolButton31: TToolButton;
ToolButton32: TToolButton;
ToolButton34: TToolButton;
ToolButton36: TToolButton;
tb_Debug_ToolBar: TToolBar;
ToolButton37: TToolButton;
ToolButton38: TToolButton;
ToolButton39: TToolButton;
ToolButton40: TToolButton;
ToolButton41: TToolButton;
ToolButton42: TToolButton;
ToolButton43: TToolButton;
ToolButton44: TToolButton;
MainMenu1: TMainMenu;
File1: TMenuItem;
Edit1: TMenuItem;
View1: TMenuItem;
Insert1: TMenuItem;
Project1: TMenuItem;
Build1: TMenuItem;
Tools1: TMenuItem;
Window1: TMenuItem;
Help1: TMenuItem;
MainMenu_ToolBar: TToolBar;
New1: TMenuItem;
Open1: TMenuItem;
Open2: TMenuItem;
N1: TMenuItem;
OpenWorkSpace1: TMenuItem;
MainActionList: TActionList;
File_New_Action: TAction;
File_Open_Action: TAction;
File_Close_Action: TAction;
File_Open_WorkSpace_Action: TAction;
File_Save_WorKSpace_Action: TAction;
File_Close_WorKSpace_Action: TAction;
File_Save_Action: TAction;
File_SaveAs_Action: TAction;
File_SaveAll_Action: TAction;
File_Page_Setup_Action: TAction;
File_Print_Action: TAction;
File_Recent_Files_Action: TAction;
File_Recent_WorkSpace_Action: TAction;
File_Exit_Action: TAction;
SaveWorkSpace1: TMenuItem;
CloseWorkSpace1: TMenuItem;
N2: TMenuItem;
Save1: TMenuItem;
SaveAs1: TMenuItem;
SaveAll1: TMenuItem;
N3: TMenuItem;
PageSetup1: TMenuItem;
Print1: TMenuItem;
N4: TMenuItem;
RecentFiles1: TMenuItem;
RecentWorkSpace1: TMenuItem;
N5: TMenuItem;
Exit1: TMenuItem;
Action_ImageList: TImageList;
ToolButton45: TToolButton;
ToolButton46: TToolButton;
ToolButton47: TToolButton;
ToolButton48: TToolButton;
Watch_ToolButton: TToolButton;
Variables_ToolButton: TToolButton;
Registers_ToolButton: TToolButton;
Memory_ToolButton: TToolButton;
CallStack_ToolButton: TToolButton;
ToolButton54: TToolButton;
ToolButton55: TToolButton;
Edit_Redo_Action: TAction;
Edit_Find_Action: TAction;
Edit_Find_In_File_Action: TAction;
Edit_Replace_Action: TAction;
Edit_Bookmarks_Action: TAction;
Redo1: TMenuItem;
Redo2: TMenuItem;
N6: TMenuItem;
Cut1: TMenuItem;
Cut2: TMenuItem;
Paste1: TMenuItem;
Delete1: TMenuItem;
N7: TMenuItem;
SelectAll1: TMenuItem;
N8: TMenuItem;
Find1: TMenuItem;
FindInFile1: TMenuItem;
Replace1: TMenuItem;
N9: TMenuItem;
GoTo1: TMenuItem;
View_Resource_Symbols_Action: TAction;
View_Resource_Include_Action: TAction;
View_Full_Screen_Action: TAction;
View_Workspace_Action: TAction;
View_OutPut_Action: TAction;
View_Refresh_Action: TAction;
View_Properties_Action: TAction;
View_Debug_Windows_Action: TAction;
ResourceSymbols1: TMenuItem;
ResourceInclude1: TMenuItem;
N10: TMenuItem;
FullScreen1: TMenuItem;
N11: TMenuItem;
Workspace1: TMenuItem;
OutPut1: TMenuItem;
N12: TMenuItem;
Refresh1: TMenuItem;
N13: TMenuItem;
Properties1: TMenuItem;
Edit_Advanced_Action: TAction;
Edit_Breakpoints_Action: TAction;
Edit_List_Members_Action: TAction;
Edit_Type_Info_Action: TAction;
Edit_Parameter_Info_Action: TAction;
Edit_Complete_Word_Action: TAction;
Edit_Goto_Action: TAction;
GoTo2: TMenuItem;
N14: TMenuItem;
Advanced1: TMenuItem;
N15: TMenuItem;
Breakpoints1: TMenuItem;
N16: TMenuItem;
ListMembers1: TMenuItem;
ypeInfo1: TMenuItem;
ParameterInfo1: TMenuItem;
CompleteWord1: TMenuItem;
Insert_New_Class_Action: TAction;
Insert_New_Form_Action: TAction;
Insert_Resource_Action: TAction;
Insert_Resource_Copy_Action: TAction;
Insert_File_As_Text_Action: TAction;
Insert_New_ATL_Object_Action: TAction;
Project_Set_Active_Project_Action: TAction;
Project_Add_To_Project_Action: TAction;
Project_Source_Control_Action: TAction;
Project_DePendencies_Action: TAction;
Project_Settings_Action: TAction;
Project_Export_Makefile_Action: TAction;
Project_Insert_Project_into_Workspace_Action: TAction;
Build_Compile_Action: TAction;
Build_Build_Action: TAction;
Build_Rebuild_All_Action: TAction;
Build_Batch_Build_Action: TAction;
Build_Clean_Action: TAction;
Build_Start_Debug_Action: TAction;
Build_Debugger_Remote_Connection_Action: TAction;
Build_Execute_Action: TAction;
Build_Set_Active_Configuration_Action: TAction;
Build_Configurations_Action: TAction;
Build_Profile_Action: TAction;
Tools_Source_Browser_Action: TAction;
Tools_Close_Source_Browser_File_Action: TAction;
Tools_Visual_Component_Manager_Action: TAction;
Tools_Register_Control_Action: TAction;
Tools_Error_Lookup_Action: TAction;
Tools_ActiveX_Control_Test_Container_Action: TAction;
Tools_OLE_COM_Object_Viewer_Action: TAction;
Tools_Spy_Action: TAction;
Tools_MFC_Tracer_Action: TAction;
Tools_Customize_Action: TAction;
Tools_Options_Action: TAction;
Tools_Macro_Action: TAction;
Tools_Record_Quick_Macro_Action: TAction;
Tools_Play_Quick_Macro_Action: TAction;
Window_New_Window_Action: TAction;
Window_Spilt_Action: TAction;
Window_Docking_View_Action: TAction;
Window_Close_Action: TAction;
Window_Close_All_Action: TAction;
Window_Next_Action: TAction;
Window_Previous_Action: TAction;
Window_Cascade_Action: TAction;
Window_Tile_Horizontally_Action: TAction;
Window_Tile_Vertically_Action: TAction;
Window_Windows_Action: TAction;
Help_Contents_Action: TAction;
Help_Search_Action: TAction;
Help_Index_Action: TAction;
Help_Use_Extension_Help_Action: TAction;
Help_Keyboard_Map_Action: TAction;
Help_Tip_of_the_Day_Action: TAction;
Help_Technical_Support_Action: TAction;
Help_Microsofr_on_the_Web_Action: TAction;
Help_About_Visual_Cpp_Action: TAction;
NewClass1: TMenuItem;
NewForm1: TMenuItem;
Resource1: TMenuItem;
ResourceCopy1: TMenuItem;
N17: TMenuItem;
FileAsText1: TMenuItem;
NewATLObject1: TMenuItem;
SetActiveProject1: TMenuItem;
AddToProject1: TMenuItem;
N18: TMenuItem;
SourceControl1: TMenuItem;
N19: TMenuItem;
DePendencies1: TMenuItem;
Settings1: TMenuItem;
DePendencies2: TMenuItem;
N20: TMenuItem;
InsertProjectintoWorkspace1: TMenuItem;
Compile1: TMenuItem;
Build2: TMenuItem;
RebuildAll1: TMenuItem;
BatchBuild1: TMenuItem;
Clean1: TMenuItem;
N21: TMenuItem;
StartDebug1: TMenuItem;
DebuggerRemoteConnection1: TMenuItem;
N22: TMenuItem;
Execute1: TMenuItem;
N23: TMenuItem;
SetActiveConfiguration1: TMenuItem;
Configurations1: TMenuItem;
Profile1: TMenuItem;
SourceBrowser1: TMenuItem;
CloseSourceBrowserFile1: TMenuItem;
N24: TMenuItem;
VisualComponentManager1: TMenuItem;
ActiveXControlTestContainer1: TMenuItem;
ErrorLookup1: TMenuItem;
ActiveXControlTestContainer2: TMenuItem;
OLECOMObjectViewer1: TMenuItem;
SourceBrowser2: TMenuItem;
MFCTracer1: TMenuItem;
N25: TMenuItem;
Customize1: TMenuItem;
Options1: TMenuItem;
Macro1: TMenuItem;
RecordQuickMacro1: TMenuItem;
PlayQuickMacro1: TMenuItem;
N26: TMenuItem;
NewWindow1: TMenuItem;
Spilt1: TMenuItem;
DockingView1: TMenuItem;
Close1: TMenuItem;
CloseAll1: TMenuItem;
NewWindow2: TMenuItem;
Previous1: TMenuItem;
ileHorizontally1: TMenuItem;
ileVertically1: TMenuItem;
Windows1: TMenuItem;
N27: TMenuItem;
N28: TMenuItem;
N29: TMenuItem;
Contents1: TMenuItem;
Search1: TMenuItem;
Index1: TMenuItem;
UseExtensionHelp1: TMenuItem;
KeyboardMap1: TMenuItem;
echnicalSupport1: TMenuItem;
echnicalSupport2: TMenuItem;
MicrosofrontheWeb1: TMenuItem;
AboutVisualC1: TMenuItem;
N30: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
Debug1: TMenuItem;
Debug_Go_Action: TAction;
Debug_Restart_Action: TAction;
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;
JvDockVCStyle1: TJvDockVCStyle;
OpenDialog1: TOpenDialog;
StatusBar1: TStatusBar;
lbDockServer1: TJvDockServer;
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);
procedure FormShow(Sender: TObject);
private
{$IFDEF USEJVCL}
JvAppStorage:TJvAppIniFileStorage;
{$ENDIF}
procedure GetToolbarWidthArr;
function GetCloseButtonRect: TRect;
function ActionEnable: Boolean;
procedure SetToolButtonDownAndActionCheck;
function FindExistFile(AFileName: string): TCustomForm;
function FindOrOpenFile(filename:String):TCustomForm;
{ Private declarations }
public
{ Public declarations }
ActiveEdit: TJvHLEditor;
procedure LoadDockInfo;
end;
var
MainForm: TMainForm;
implementation
uses WorkSpaceUnit, OutputUnit, SourceEditUnit, WatchUnit, RegistersUnit,
MemoryUnit, VariablesUnit, CallStackUnit;
var
DrawButtonRect: TRect;
IsDown: Boolean;
MouseDownButton: Integer;
{$R *.dfm}
procedure CreateDockableForm;
begin
WorkSpaceForm := TWorkSpaceForm.Create(nil);//<2F><><EFBFBD><EFBFBD>WorkSpace<63><65><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
OutputForm := TOutputForm.Create(nil); //<2F><><EFBFBD><EFBFBD>Output<75><74><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
WatchForm := TWatchForm.Create(nil); //<2F><><EFBFBD><EFBFBD>Watch<63><68><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
VariablesForm := TVariablesForm.Create(nil);//<2F><><EFBFBD><EFBFBD>Variables<65><73><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
RegistersForm := TRegistersForm.Create(nil);//<2F><><EFBFBD><EFBFBD>Registers<72><73><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
MemoryForm := TMemoryForm.Create(nil); //<2F><><EFBFBD><EFBFBD>Memory<72><79><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
CallStackForm := TCallStackForm.Create(nil);//<2F><><EFBFBD><EFBFBD>CallStack<63><6B><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
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
{ û<><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<CABE><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>Ϣ }
ShowMessage(Format('You have click ''%s''', [TAction(Sender).Caption]));
end;
function TMainForm.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;
function TMainForm.FindOrOpenFile(filename:String):TCustomForm;
var
ExistForm: TCustomForm;
begin
ExistForm := FindExistFile(filename);
if ExistForm = nil then
begin
with TSourceEditForm.Create(nil) do
begin
try
LoadFromFile(filename);
except
Release;
ShowMessage('Open file Failed!');
end;
end;
end else if not ExistForm.Active then begin
ExistForm.Show;
end;
end;
procedure TMainForm.File_Open_ActionExecute(Sender: TObject);
var
i: Integer;
begin
if OpenDialog1.Execute then
begin
if (OpenDialog1.Files.Count > 0) then
begin
if MDIChildCount + OpenDialog1.Files.Count >= 100 then
begin
ShowMessage('Files are too large to show, there are 100 files can be displayed at most');
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
FindOrOpenFile(OpenDialog1.Files[i]);
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;
{$IFDEF USEJVCL}
JvAppStorage.FileName := ExtractFilePath(Application.ExeName) + 'DockInfo.ini';
SaveDockTreeToAppStorage(JvAppStorage);
{$ELSE}
SaveDockTreeToFile(ExtractFilePath(Application.ExeName) + 'DockInfo.ini');
{$ENDIF}
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;
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 (ActiveEdit <> nil) then
ActiveEdit.Redo;
end;
procedure TMainForm.Edit_Redo_ActionUpdate(Sender: TObject);
begin
Edit_Redo_Action.Enabled := ActionEnable and ActiveEdit.CanRedo;
end;
procedure TMainForm.Edit_Cut_ActionUpdate(Sender: TObject);
begin
Edit_Cut_Action.Enabled := ActionEnable and (ActiveEdit.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 (ActiveEdit <> nil);
end;
procedure TMainForm.Edit_Paste_ActionUpdate(Sender: TObject);
begin
Edit_Paste_Action.Enabled := ActionEnable and ActiveEdit.CanPaste;
end;
procedure TMainForm.Edit_Undo_ActionUpdate(Sender: TObject);
begin
Edit_Undo_Action.Enabled := ActionEnable and ActiveEdit.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 ActiveEdit <> nil then
ActiveEdit.ClipboardCut;
end;
procedure TMainForm.Edit_Copy_ActionExecute(Sender: TObject);
begin
if ActiveEdit <> nil then
ActiveEdit.ClipboardCopy;
end;
procedure TMainForm.Edit_Paste_ActionExecute(Sender: TObject);
begin
if ActiveEdit <> nil then
ActiveEdit.ClipboardPaste;
end;
procedure TMainForm.Edit_SelectAll_ActionExecute(Sender: TObject);
begin
if ActiveEdit <> nil then
ActiveEdit.SelectAll;
end;
procedure TMainForm.Edit_Undo_ActionExecute(Sender: TObject);
begin
if ActiveEdit <> nil then
ActiveEdit.Undo;
end;
procedure TMainForm.Edit_Delete_ActionExecute(Sender: TObject);
begin
if ActiveEdit <> nil then
ActiveEdit.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;
{$IFDEF USEJVCL}
JvAppStorage := TJvAppIniFileStorage.Create(self);
JvAppStorage.Filename := ExtractFilePath(Application.ExeName) + 'DockInfo.ini';
LoadDockTreeFromAppStorage(JvAppStorage);
{$ELSE}
LoadDockTreeFromFile(ExtractFilePath(Application.ExeName) + 'DockInfo.ini');
{$ENDIF}
SetToolButtonDownAndActionCheck;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
LoadDockInfo;
end;
procedure TMainForm.FormShow(Sender: TObject);
var
openfilename:String;
begin
openfilename := ExtractFilePath(Application.ExeName)+'..\C++ File\MyApp.cpp';
if FileExists( openfilename) then begin
FindOrOpenFile(openfilename);
end;
View_Workspace_ActionExecute(Sender);
if Assigned(WorkSpaceForm) then begin
ShowDockForm(WorkSpaceForm);
WorkSpaceForm.ClassView_TreeView.FullExpand;
// --- HOW TO DOCK A WINDOW TO A DOCK SERVER IN CODE: ---
WorkSpaceForm.ManualDock(lbDockServer1.LeftDockPanel );
end;
end;
end.