expertcad/SRC/Main/U_Projectmanager.pas
2025-05-12 10:07:51 +03:00

138 lines
3.8 KiB
ObjectPascal
Raw Permalink Blame History

unit U_Projectmanager;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls,
PCPanel, PCDrawBox, PCDrawing, PowerCad, pcMsbar,
XP_Panel, ToolWin, PCTypesUtils, DrawObjects, Menus, DlgBase, ExtDlgs,
PCLayerDlg, OleCtnrs, Buttons, PCgui, GuiStrings, DrawEngine, U_ESCadClasess;
type
TF_ProjectManager = class(TForm)
tvPrjManager: TTreeView;
procedure FormStartDock(Sender: TObject; var DragObject: TDragDockObject);
procedure FormEndDock(Sender, Target: TObject; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure tvPrjManagerClick(Sender: TObject);
private
{ Private declarations }
public
Docking: Bool;
{ Public declarations }
end;
var
F_ProjectManager: TF_ProjectManager;
implementation
uses U_Cad, U_Main, USCS_Main, U_Common;
{$R *.dfm}
procedure TF_ProjectManager.FormStartDock(Sender: TObject;
var DragObject: TDragDockObject);
begin
Docking := True;
end;
procedure TF_ProjectManager.FormEndDock(Sender, Target: TObject; X,
Y: Integer);
begin
Docking := False;
FSCS_Main.PDock1.DockSite := true;
FSCS_Main.PDock2.DockSite := true;
FSCS_Main.cbMainPanel.DockSite := true;
F_Main.Panel_Main.DockSite := true;
if TForm(Sender).Left > Screen.Width - 100 then
TForm(Sender).Left := TForm(Sender).Left - 50;
if TForm(Sender).Top > Screen.Height - 100 then
TForm(Sender).Top := TForm(Sender).Top - 50;
end;
procedure TF_ProjectManager.FormCreate(Sender: TObject);
var
Node, SubNode: TTreeNode;
begin
Docking := False;
end;
procedure TF_ProjectManager.FormPaint(Sender: TObject);
begin
if TForm(Sender).Left > Screen.Width - 100 then
TForm(Sender).Left := TForm(Sender).Left - 50;
if TForm(Sender).Top > Screen.Height - 100 then
TForm(Sender).Top := TForm(Sender).Top - 50;
end;
procedure TF_ProjectManager.FormClose(Sender: TObject; var Action: TCloseAction);
var
ParentPanel: TComponent;
begin
FSCS_Main.aViewProjectManager.Checked := false;
ParentPanel := TForm(Sender).GetParentComponent;
if ParentPanel = FSCS_Main.pDock1 then
FSCS_Main.CountDock1 := FSCS_Main.CountDock1 - 1;
if ParentPanel = FSCS_Main.pDock2 then
FSCS_Main.CountDock2 := FSCS_Main.CountDock2 - 1;
if FSCS_Main.CountDock1 = 0 then
begin
FSCS_Main.pDock1.Width := 1;
FSCS_Main.sDiv1.Visible := False;
end;
if FSCS_Main.CountDock2 = 0 then
begin
FSCS_Main.sDiv2.Visible := False;
FSCS_Main.pDock2.Width := 1;
end;
end;
procedure TF_ProjectManager.FormShow(Sender: TObject);
begin
FSCS_Main.aViewProjectManager.Checked := true;
end;
procedure TF_ProjectManager.tvPrjManagerClick(Sender: TObject);
var
Parent: TTreeNode;
CurNode: TTreeNode;
PageIndex: integer;
CurPCad: TPowerCad;
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (tvPrjManager.Selected <> nil) then
begin
PageIndex := 0;
SubNode := tvPrjManager.Selected;
Parent := SubNode.Parent;
if Parent = nil then
Exit;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> PageIndex
CurNode := Parent.getFirstChild;
for PageIndex := 0 to Parent.Count - 1 do
begin
if CurNode = SubNode then
break;
CurNode := CurNode.getNextSibling;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
FSCS_Main.pageCADList.ActivePageIndex := PageIndex;
tvPrjManager.Selected := SubNode;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
FSCS_Main.nWindow[PageIndex + 3].Checked := true;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
PageIndex := FSCS_Main.pageCADList.ActivePageIndex;
CurPCad := CADList.Items[PageIndex];
CurPCad.BringToFront;
end;
end;
end.