| 1 | unit UMainForm;
|
|---|
| 2 |
|
|---|
| 3 | interface
|
|---|
| 4 |
|
|---|
| 5 | uses
|
|---|
| 6 | Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|---|
| 7 | Dialogs, Menus, ExtCtrls, StdCtrls, ComCtrls, DockPanel, URegistry,
|
|---|
| 8 | UApplicationInfo, UDockManagement, ActnList, XPStyleActnCtrls, ActnMan,
|
|---|
| 9 | UProject, XPMan, ImgList, DockManagerPro, StdStyleActnCtrls, ToolWin,
|
|---|
| 10 | ActnCtrls, ActnMenus;
|
|---|
| 11 |
|
|---|
| 12 | type
|
|---|
| 13 | TMainForm = class(TForm)
|
|---|
| 14 | DockPanel1: TDockPanel;
|
|---|
| 15 | DockPanel2: TDockPanel;
|
|---|
| 16 | DockPanel3: TDockPanel;
|
|---|
| 17 | ActionManager1: TActionManager;
|
|---|
| 18 | ActionExit: TAction;
|
|---|
| 19 | ActionProjectOpen: TAction;
|
|---|
| 20 | ActionProjectSaveAs: TAction;
|
|---|
| 21 | ActionFileOpen: TAction;
|
|---|
| 22 | ActionFileSave: TAction;
|
|---|
| 23 | ActionFileClose: TAction;
|
|---|
| 24 | ActionFileCloseAll: TAction;
|
|---|
| 25 | ActionUnitTest: TAction;
|
|---|
| 26 | ActionPrint: TAction;
|
|---|
| 27 | ActionFileSaveAs: TAction;
|
|---|
| 28 | ImageList1: TImageList;
|
|---|
| 29 | ActionMainMenuBar1: TActionMainMenuBar;
|
|---|
| 30 | ActionFile: TAction;
|
|---|
| 31 | ActionFileNew: TAction;
|
|---|
| 32 | ActionFileReopen: TAction;
|
|---|
| 33 | ActionFileSaveAll: TAction;
|
|---|
| 34 | ActionEdit: TAction;
|
|---|
| 35 | OpenDialog1: TOpenDialog;
|
|---|
| 36 | SaveDialog1: TSaveDialog;
|
|---|
| 37 | FindDialog1: TFindDialog;
|
|---|
| 38 | ReplaceDialog1: TReplaceDialog;
|
|---|
| 39 | ActionEditUndo: TAction;
|
|---|
| 40 | ActionEditRedo: TAction;
|
|---|
| 41 | ActionEditCut: TAction;
|
|---|
| 42 | ActionEditCopy: TAction;
|
|---|
| 43 | ActionEditPaste: TAction;
|
|---|
| 44 | ActionEditDelete: TAction;
|
|---|
| 45 | ActionEditSelectAll: TAction;
|
|---|
| 46 | ActionEditAlignToGrid: TAction;
|
|---|
| 47 | ActionEditBringToFront: TAction;
|
|---|
| 48 | ActionEditSendToBack: TAction;
|
|---|
| 49 | ActionEditAlign: TAction;
|
|---|
| 50 | ActionEditSize: TAction;
|
|---|
| 51 | ActionEditScale: TAction;
|
|---|
| 52 | ActionEditTabOrder: TAction;
|
|---|
| 53 | ActionEditCreationOrder: TAction;
|
|---|
| 54 | ActionEditFlipChildren: TAction;
|
|---|
| 55 | ActionEditLockControls: TAction;
|
|---|
| 56 | ActionSearch: TAction;
|
|---|
| 57 | ActionView: TAction;
|
|---|
| 58 | ActionProject: TAction;
|
|---|
| 59 | ActionRun: TAction;
|
|---|
| 60 | ActionComponent: TAction;
|
|---|
| 61 | ActionTools: TAction;
|
|---|
| 62 | ActionWindow: TAction;
|
|---|
| 63 | ActionHelp: TAction;
|
|---|
| 64 | procedure FormShow(Sender: TObject);
|
|---|
| 65 | procedure ObjectInspector1Click(Sender: TObject);
|
|---|
| 66 | procedure oolPalete1Click(Sender: TObject);
|
|---|
| 67 | procedure Structure1Click(Sender: TObject);
|
|---|
| 68 | procedure ProjectManager1Click(Sender: TObject);
|
|---|
| 69 | procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|---|
| 70 | procedure FormCreate(Sender: TObject);
|
|---|
| 71 | procedure FormDestroy(Sender: TObject);
|
|---|
| 72 | procedure ActionExitExecute(Sender: TObject);
|
|---|
| 73 | procedure ActionFileUpdate(Sender: TObject);
|
|---|
| 74 | procedure ActionEditExecute(Sender: TObject);
|
|---|
| 75 | procedure ActionProjectOpenExecute(Sender: TObject);
|
|---|
| 76 | procedure ActionFileOpenExecute(Sender: TObject);
|
|---|
| 77 | procedure ActionProjectSaveAsExecute(Sender: TObject);
|
|---|
| 78 | private
|
|---|
| 79 | CustomDockManager: TDDockManager;
|
|---|
| 80 | BaseDockPanel: TDBaseDockPanel;
|
|---|
| 81 | RegistryRootKey: HKEY;
|
|---|
| 82 | RegistryKey: string;
|
|---|
| 83 | procedure LoadFormPosition(Form: TForm);
|
|---|
| 84 | procedure SaveFormPosition(Form: TForm);
|
|---|
| 85 | { Private declarations }
|
|---|
| 86 | public
|
|---|
| 87 |
|
|---|
| 88 | end;
|
|---|
| 89 |
|
|---|
| 90 | var
|
|---|
| 91 | MainForm: TMainForm;
|
|---|
| 92 |
|
|---|
| 93 | implementation
|
|---|
| 94 |
|
|---|
| 95 | uses UObjectInspector, UCodeEdit, UComponentPalette, UStructureView,
|
|---|
| 96 | UProjectManager;
|
|---|
| 97 |
|
|---|
| 98 | {$R *.dfm}
|
|---|
| 99 |
|
|---|
| 100 | procedure TMainForm.ActionEditExecute(Sender: TObject);
|
|---|
| 101 | begin
|
|---|
| 102 | //
|
|---|
| 103 | end;
|
|---|
| 104 |
|
|---|
| 105 | procedure TMainForm.ActionExitExecute(Sender: TObject);
|
|---|
| 106 | begin
|
|---|
| 107 | Close;
|
|---|
| 108 | end;
|
|---|
| 109 |
|
|---|
| 110 | procedure TMainForm.ActionFileOpenExecute(Sender: TObject);
|
|---|
| 111 | begin
|
|---|
| 112 | if OpenDialog1.Execute then begin
|
|---|
| 113 | end;
|
|---|
| 114 | end;
|
|---|
| 115 |
|
|---|
| 116 | procedure TMainForm.ActionFileUpdate(Sender: TObject);
|
|---|
| 117 | begin
|
|---|
| 118 | //
|
|---|
| 119 | end;
|
|---|
| 120 |
|
|---|
| 121 | procedure TMainForm.ActionProjectOpenExecute(Sender: TObject);
|
|---|
| 122 | begin
|
|---|
| 123 | if OpenDialog1.Execute then begin
|
|---|
| 124 | end;
|
|---|
| 125 | end;
|
|---|
| 126 |
|
|---|
| 127 | procedure TMainForm.ActionProjectSaveAsExecute(Sender: TObject);
|
|---|
| 128 | begin
|
|---|
| 129 | if SaveDialog1.Execute then begin
|
|---|
| 130 | end;
|
|---|
| 131 | end;
|
|---|
| 132 |
|
|---|
| 133 | procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
|---|
| 134 | begin
|
|---|
| 135 | SaveFormPosition(Self);
|
|---|
| 136 | CustomDockManager.SaveToRegistry;
|
|---|
| 137 | end;
|
|---|
| 138 |
|
|---|
| 139 | procedure TMainForm.FormCreate(Sender: TObject);
|
|---|
| 140 | begin
|
|---|
| 141 | RegistryRootKey := HKEY_CURRENT_USER;
|
|---|
| 142 | RegistryKey := ApplicationInfo.CompanyName + '\' + ApplicationInfo.Name;
|
|---|
| 143 | //LoadFromRegistry;
|
|---|
| 144 |
|
|---|
| 145 | CustomDockManager := TDDockManager.Create(Self);
|
|---|
| 146 | CustomDockManager.RegistryKey := RegistryKey;
|
|---|
| 147 | BaseDockPanel := TDBaseDockPanel.Create(Self);
|
|---|
| 148 | with BaseDockPanel do begin
|
|---|
| 149 | Parent := Self;
|
|---|
| 150 | Align := alClient;
|
|---|
| 151 | Visible := True;
|
|---|
| 152 | BevelOuter := bvNone;
|
|---|
| 153 | end;
|
|---|
| 154 | CustomDockManager.BaseDockPanel := BaseDockPanel;
|
|---|
| 155 | end;
|
|---|
| 156 |
|
|---|
| 157 | procedure TMainForm.FormDestroy(Sender: TObject);
|
|---|
| 158 | begin
|
|---|
| 159 | CustomDockManager.Free;
|
|---|
| 160 | end;
|
|---|
| 161 |
|
|---|
| 162 | procedure TMainForm.FormShow(Sender: TObject);
|
|---|
| 163 | begin
|
|---|
| 164 | // Init dock init list
|
|---|
| 165 | with CustomDockManager do begin
|
|---|
| 166 | RegisterDockForm(ComponentPalette, 100, 400, 'PanelLeft', True);
|
|---|
| 167 | RegisterDockForm(ProjectManager, 100, 400, 'PanelLeft', True);
|
|---|
| 168 | RegisterDockForm(ObjectInspector, 100, 400, 'PanelRight', True);
|
|---|
| 169 | RegisterDockForm(StructureView, 100, 400, 'PanelRight', True);
|
|---|
| 170 | RegisterDockForm(CodeEdit, 500, 400, 'PanelCenter', True);
|
|---|
| 171 | with BaseDockPanel do begin
|
|---|
| 172 | PanelLeft.Tag := 300;
|
|---|
| 173 | PanelTop.Tag := 150;
|
|---|
| 174 | PanelRight.Tag := 150;
|
|---|
| 175 | PanelBottom.Tag := 150;
|
|---|
| 176 | end;
|
|---|
| 177 | end;
|
|---|
| 178 | CustomDockManager.LoadFromRegistry;
|
|---|
| 179 |
|
|---|
| 180 | LoadFormPosition(Self);
|
|---|
| 181 | CodeEdit.Show;
|
|---|
| 182 | ActionManager1.Style := XPStyle;
|
|---|
| 183 | end;
|
|---|
| 184 |
|
|---|
| 185 | procedure TMainForm.ObjectInspector1Click(Sender: TObject);
|
|---|
| 186 | begin
|
|---|
| 187 | with ObjectInspector do Visible := not Visible;
|
|---|
| 188 | end;
|
|---|
| 189 |
|
|---|
| 190 | procedure TMainForm.oolPalete1Click(Sender: TObject);
|
|---|
| 191 | begin
|
|---|
| 192 | with ComponentPalette do Visible := not Visible;
|
|---|
| 193 | end;
|
|---|
| 194 |
|
|---|
| 195 | procedure TMainForm.ProjectManager1Click(Sender: TObject);
|
|---|
| 196 | begin
|
|---|
| 197 | with ProjectManager do Visible := not Visible;
|
|---|
| 198 | end;
|
|---|
| 199 |
|
|---|
| 200 | procedure TMainForm.Structure1Click(Sender: TObject);
|
|---|
| 201 | begin
|
|---|
| 202 | with StructureView do Visible := not Visible;
|
|---|
| 203 | end;
|
|---|
| 204 |
|
|---|
| 205 | procedure TMainForm.LoadFormPosition(Form: TForm);
|
|---|
| 206 | begin
|
|---|
| 207 | with Form, TRegistryEx.Create do
|
|---|
| 208 | try
|
|---|
| 209 | RootKey := RegistryRootKey;
|
|---|
| 210 | OpenKey(RegistryKey + '\Forms\' + Form.Name, True);
|
|---|
| 211 | Width := ReadIntegerWithDefault('Width', Width);
|
|---|
| 212 | Height := ReadIntegerWithDefault('Height', Height);
|
|---|
| 213 | Top := ReadIntegerWithDefault('Top', (Screen.Height - Height) div 2);
|
|---|
| 214 | Left := ReadIntegerWithDefault('Left', (Screen.Width - Width) div 2);
|
|---|
| 215 | if Left < 0 then Left := 0;
|
|---|
| 216 | if Left > (Screen.Width - 50) then Left := Screen.Width - 50;
|
|---|
| 217 | if Top < 0 then Top := 0;
|
|---|
| 218 | if Top > (Screen.Height - 50) then Top := Screen.Height - 50;
|
|---|
| 219 | if ReadBoolWithDefault('Maximized', False) then begin
|
|---|
| 220 | WindowState := wsMaximized;
|
|---|
| 221 | end;
|
|---|
| 222 | finally
|
|---|
| 223 | Free;
|
|---|
| 224 | end;
|
|---|
| 225 | end;
|
|---|
| 226 |
|
|---|
| 227 | procedure TMainForm.SaveFormPosition(Form: TForm);
|
|---|
| 228 | var
|
|---|
| 229 | Pl : TWindowPlacement; // used for API call
|
|---|
| 230 | R: TRect; // used for wdw pos
|
|---|
| 231 | begin
|
|---|
| 232 | {Calculate window's normal size and position using
|
|---|
| 233 | Windows API call - the form's Width, Height, Top and
|
|---|
| 234 | Left properties will give maximized window size if
|
|---|
| 235 | form is maximised, which is not what we want here}
|
|---|
| 236 | Pl.Length := SizeOf(TWindowPlacement);
|
|---|
| 237 | GetWindowPlacement(Form.Handle, @Pl);
|
|---|
| 238 | R := Pl.rcNormalPosition;
|
|---|
| 239 |
|
|---|
| 240 | with Form, TRegistryEx.Create do
|
|---|
| 241 | try
|
|---|
| 242 | RootKey := RegistryRootKey;
|
|---|
| 243 | OpenKey(RegistryKey + '\Forms\' + Form.Name, True);
|
|---|
| 244 | WriteInteger('Width', R.Right - R.Left);
|
|---|
| 245 | WriteInteger('Height', R.Bottom - R.Top);
|
|---|
| 246 | WriteInteger('Top', R.Top);
|
|---|
| 247 | WriteInteger('Left', R.Left);
|
|---|
| 248 | WriteBool('Maximized', WindowState = wsMaximized);
|
|---|
| 249 | finally
|
|---|
| 250 | Free;
|
|---|
| 251 | end;
|
|---|
| 252 | end;
|
|---|
| 253 |
|
|---|
| 254 | end.
|
|---|