mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 22:45:39 +02:00
267 lines
6.8 KiB
ObjectPascal
267 lines
6.8 KiB
ObjectPascal
unit U_FloatPanel;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, USCS_Main, U_Common, U_Main, Buttons, ExtCtrls, ImgList,
|
|
StdCtrls, siComp, siLngLnk,
|
|
DrawEngine, PCTypesUtils, DrawObjects, PCDrawBox, PCDrawing, PowerCad;
|
|
|
|
type
|
|
TF_FloatPanel = class(TForm)
|
|
Panel1: TPanel;
|
|
SpeedButton2: TSpeedButton;
|
|
SpeedButton1: TSpeedButton;
|
|
BtnTmp2: TSpeedButton;
|
|
BtnTmp1: TSpeedButton;
|
|
Timer1: TTimer;
|
|
Timer2: TTimer;
|
|
Label1: TLabel;
|
|
Label6: TLabel;
|
|
ALabel1: TLabel;
|
|
ALabel2: TLabel;
|
|
ALabel3: TLabel;
|
|
ALabel4: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
Label5: TLabel;
|
|
Label7: TLabel;
|
|
Label8: TLabel;
|
|
Label9: TLabel;
|
|
Label10: TLabel;
|
|
Label11: TLabel;
|
|
SpeedButton3: TSpeedButton;
|
|
lng_Forms: TsiLangLinked;
|
|
procedure SpeedButton1Click(Sender: TObject);
|
|
procedure SpeedButton2Click(Sender: TObject);
|
|
procedure Timer1Timer(Sender: TObject);
|
|
procedure Timer2Timer(Sender: TObject);
|
|
procedure Label1MouseLeave(Sender: TObject);
|
|
procedure Label1MouseEnter(Sender: TObject);
|
|
procedure FormHide(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure ALabel1Click(Sender: TObject);
|
|
procedure SpeedButton3Click(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
procedure ShowFloatPanel(OnlyResize: boolean = False);
|
|
procedure HideFloatPanel;
|
|
procedure ResizeFloatPanel;
|
|
|
|
var
|
|
F_FloatPanel: TF_FloatPanel;
|
|
|
|
implementation
|
|
Uses U_Constants;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure ShowFloatPanel(OnlyResize: boolean = False);
|
|
var
|
|
Point1: TPoint;
|
|
begin
|
|
{$if Defined(ES_GRAPH_SC)}
|
|
|
|
{$else}
|
|
if F_FloatPanel = nil then
|
|
Application.CreateForm(TF_FloatPanel, F_FloatPanel);
|
|
if F_ProjMan <> nil then
|
|
begin
|
|
F_FloatPanel.SpeedButton1.Flat := True;
|
|
F_FloatPanel.SpeedButton2.Flat := True;
|
|
F_FloatPanel.SpeedButton3.Flat := True;
|
|
Point1.X := F_ProjMan.Left;
|
|
Point1.Y := -12;
|
|
ClientToScreen(F_ProjMan.Handle, Point1);
|
|
F_FloatPanel.Top := Point1.Y;
|
|
F_FloatPanel.Left := Point1.X;
|
|
F_FloatPanel.Height := F_ProjMan.Height + 12;
|
|
if Not OnlyResize then
|
|
F_FloatPanel.Width := 250;
|
|
F_FloatPanel.Visible := True;
|
|
if Not OnlyResize then
|
|
F_FloatPanel.Timer1.Enabled := True;
|
|
if Not OnlyResize then
|
|
FSCS_Main.FloatPanel1.Checked := True;
|
|
end;
|
|
{$ifend}
|
|
end;
|
|
|
|
procedure ResizeFloatPanel;
|
|
begin
|
|
{$if Defined(ES_GRAPH_SC)}
|
|
|
|
{$else}
|
|
try
|
|
if assigned(F_FloatPanel) then
|
|
begin
|
|
if F_FloatPanel.Visible then
|
|
begin
|
|
ShowFloatPanel(True);
|
|
end;
|
|
end;
|
|
except
|
|
end;
|
|
{$ifend}
|
|
end;
|
|
|
|
procedure HideFloatPanel;
|
|
begin
|
|
if F_FloatPanel <> nil then
|
|
begin
|
|
F_FloatPanel.Visible := False;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_FloatPanel.SpeedButton1Click(Sender: TObject);
|
|
begin
|
|
HideFloatPanel;
|
|
end;
|
|
|
|
procedure TF_FloatPanel.SpeedButton2Click(Sender: TObject);
|
|
begin
|
|
if SpeedButton2.Tag = 1 then
|
|
begin
|
|
SpeedButton2.Glyph := BtnTmp2.Glyph;
|
|
SpeedButton2.Tag := 0;
|
|
end
|
|
else
|
|
begin
|
|
SpeedButton2.Glyph := BtnTmp1.Glyph;
|
|
SpeedButton2.Tag := 1;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_FloatPanel.Timer1Timer(Sender: TObject);
|
|
begin
|
|
Timer1.Enabled := False;
|
|
if F_FloatPanel.Visible then
|
|
begin
|
|
if SpeedButton2.Tag = 0 then
|
|
Timer2.Enabled := True;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_FloatPanel.Timer2Timer(Sender: TObject);
|
|
begin
|
|
if F_FloatPanel.Width > 15 then
|
|
F_FloatPanel.Width := F_FloatPanel.Width - 20
|
|
else
|
|
begin
|
|
Timer2.Enabled := False;
|
|
F_FloatPanel.Width := 4;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_FloatPanel.Label1MouseLeave(Sender: TObject);
|
|
begin
|
|
if TLabel(Sender).Tag <> 0 then
|
|
TLabel(Sender).Font.Style := TLabel(Sender).Font.Style - [fsUnderline];
|
|
Timer1.Enabled := True;
|
|
end;
|
|
|
|
procedure TF_FloatPanel.Label1MouseEnter(Sender: TObject);
|
|
begin
|
|
if TLabel(Sender).Tag <> 0 then
|
|
begin
|
|
{$IF Defined(SCS_PE) or Defined(SCS_SPA)}
|
|
if (TLabel(Sender).Tag <> 5) and (TLabel(Sender).Tag <> 7) and (TLabel(Sender).Tag <> 8) then
|
|
begin
|
|
TLabel(Sender).Font.Style := TLabel(Sender).Font.Style + [fsUnderline];
|
|
TLabel(Sender).Cursor := crHandPoint;
|
|
end
|
|
else
|
|
TLabel(Sender).Cursor := crArrow;
|
|
{$ELSE}
|
|
TLabel(Sender).Font.Style := TLabel(Sender).Font.Style + [fsUnderline];
|
|
{$IFEND}
|
|
end;
|
|
ShowFloatPanel;
|
|
Timer1.Enabled := False;
|
|
end;
|
|
|
|
procedure TF_FloatPanel.FormHide(Sender: TObject);
|
|
begin
|
|
FSCS_Main.FloatPanel1.Checked := False;
|
|
end;
|
|
|
|
procedure TF_FloatPanel.FormShow(Sender: TObject);
|
|
begin
|
|
FSCS_Main.FloatPanel1.Checked := False;
|
|
end;
|
|
|
|
procedure TF_FloatPanel.ALabel1Click(Sender: TObject);
|
|
begin
|
|
case TLabel(Sender).Tag of
|
|
1: FSCS_Main.aNew.Execute;
|
|
2: FSCS_Main.aListProperties.Execute;
|
|
3: begin
|
|
SendMessage(FSCS_Main.Handle, WM_ACTIVATE, MakewParam(WA_ACTIVE, 0), 0);
|
|
SendMessage(FSCS_Main.Handle, WM_SETFOCUS, 0, 0);
|
|
FSCS_Main.aToolWallRect.Execute;
|
|
SetCursorPos(500, 500);
|
|
end;
|
|
4: begin
|
|
SendMessage(FSCS_Main.Handle, WM_ACTIVATE, MakewParam(WA_ACTIVE, 0), 0);
|
|
SendMessage(FSCS_Main.Handle, WM_SETFOCUS, 0, 0);
|
|
FSCS_Main.aToolSCSHDimLine.Execute;
|
|
SetCursorPos(500, 500);
|
|
end;
|
|
6: begin
|
|
SendMessage(FSCS_Main.Handle, WM_ACTIVATE, MakewParam(WA_ACTIVE, 0), 0);
|
|
SendMessage(FSCS_Main.Handle, WM_SETFOCUS, 0, 0);
|
|
FSCS_Main.aToolOrthoLine.Execute;
|
|
SetCursorPos(500, 500);
|
|
end;
|
|
9: begin
|
|
FSCS_Main.aMasterAutoTrace.Execute;
|
|
end;
|
|
10: begin
|
|
FSCS_Main.aMasterCableChannel.Execute;
|
|
end;
|
|
11: begin
|
|
if F_ProjMan <> nil then
|
|
try
|
|
F_ProjMan.Act_SetCableCanalConnectors.Execute;
|
|
except
|
|
end;
|
|
end;
|
|
12: begin
|
|
FSCS_Main.aCreateProjectPlan.Execute;
|
|
end;
|
|
13: begin
|
|
FSCS_Main.aRepWizard.Execute;
|
|
end;
|
|
5: begin
|
|
{$IF NOT Defined(SCS_PE) AND NOT Defined(SCS_SPA)}
|
|
Application.HelpCommand(HELP_CONTEXT, 53000);
|
|
{$IFEND}
|
|
end;
|
|
7: begin
|
|
{$IF NOT Defined(SCS_PE) AND NOT Defined(SCS_SPA)}
|
|
Application.HelpCommand(HELP_CONTEXT, 35000);
|
|
{$IFEND}
|
|
end;
|
|
8: begin
|
|
{$IF NOT Defined(SCS_PE) AND NOT Defined(SCS_SPA)}
|
|
Application.HelpCommand(HELP_CONTEXT, 74007);
|
|
{$IFEND}
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
|
|
procedure TF_FloatPanel.SpeedButton3Click(Sender: TObject);
|
|
begin
|
|
Timer1.Enabled := False;
|
|
Timer2.Enabled := True;
|
|
end;
|
|
|
|
end.
|