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

367 lines
9.4 KiB
ObjectPascal

unit U_PageParams;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxLookAndFeelPainters, StdCtrls, cxRadioGroup, cxButtons,
cxSpinEdit, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit,
cxDropDownEdit, PCTypesUtils;
type
TF_PageParams = class(TForm)
gbPageSize: TGroupBox;
gbPageOrient: TGroupBox;
cbPageSize: TcxComboBox;
edWidth: TcxSpinEdit;
edHeight: TcxSpinEdit;
bDefault: TcxButton;
bOK: TcxButton;
bCancel: TcxButton;
rbPortrait: TcxRadioButton;
rbLandscape: TcxRadioButton;
Label1: TLabel;
Label2: TLabel;
procedure bCancelClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure bDefaultClick(Sender: TObject);
procedure bOKClick(Sender: TObject);
procedure rbPortraitClick(Sender: TObject);
procedure rbLandscapeClick(Sender: TObject);
procedure cbPageSizePropertiesCloseUp(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure edWidthKeyPress(Sender: TObject; var Key: Char);
procedure edHeightKeyPress(Sender: TObject; var Key: Char);
procedure edWidthExit(Sender: TObject);
procedure edHeightExit(Sender: TObject);
private
{ Private declarations }
public
CurrentWorkWidth: string;
CurrentWorkHeight: string;
procedure SetPageParamsOnChange;
{ Public declarations }
end;
var
F_PageParams: TF_PageParams;
implementation
uses USCS_Main, U_CAD, U_Common;
{$R *.dfm}
procedure TF_PageParams.bCancelClick(Sender: TObject);
begin
Close;
end;
procedure TF_PageParams.FormShow(Sender: TObject);
begin
try
// ïîêàçàòü òåêóùèå çíà÷åíèÿ CAD
if GCadForm.PCad.PageLayout = plA0 then
cbPageSize.ItemIndex := 0;
if GCadForm.PCad.PageLayout = plA1 then
cbPageSize.ItemIndex := 1;
if GCadForm.PCad.PageLayout = plA2 then
cbPageSize.ItemIndex := 2;
if GCadForm.PCad.PageLayout = plA3 then
cbPageSize.ItemIndex := 3;
if GCadForm.PCad.PageLayout = plA4 then
cbPageSize.ItemIndex := 4;
if GCadForm.PCad.PageLayout = plA5 then
cbPageSize.ItemIndex := 5;
if GCadForm.PCad.PageLayout = plA6 then
cbPageSize.ItemIndex := 6;
if GCadForm.PCad.PageLayout = plB4 then
cbPageSize.ItemIndex := 7;
if GCadForm.PCad.PageLayout = plB5 then
cbPageSize.ItemIndex := 8;
if GCadForm.PCad.PageLayout = plLetter then
cbPageSize.ItemIndex := 9;
if GCadForm.PCad.PageLayout = plTabloid then
cbPageSize.ItemIndex := 10;
if GCadForm.PCad.PageLayout = plCustom then
cbPageSize.ItemIndex := 11;
// ðàçìåðû ëèñòà
edWidth.Value := GCadForm.PCad.WorkWidth;
edHeight.Value := GCadForm.PCad.WorkHeight;
CurrentWorkWidth := edWidth.Value;
CurrentWorkHeight := edHeight.Value;
// îðèåíòàöèÿ ëèñòà
if GCadForm.PCad.PageOrient = poPortrait then
rbPortrait.Checked := true;
if GCadForm.PCad.PageOrient = poLandscape then
rbLandscape.Checked := true;
bOK.SetFocus;
except
ShowMessage('EXCEPTION: TF_PageParams.FormShow');
end;
end;
procedure TF_PageParams.bDefaultClick(Sender: TObject);
begin
try
cbPageSize.ItemIndex := 4; // A4
FSCS_Main.aA4Execute(Sender);
edWidth.Value := 297;
edHeight.Value := 210;
rbLandscape.Checked := true;
FSCS_Main.aLandscaleExecute(Sender);
except
ShowMessage('EXCEPTION: TF_PageParams.bDefaultClick');
end;
end;
procedure TF_PageParams.bOKClick(Sender: TObject);
begin
try
if rbPortrait.Checked then
FSCS_Main.aPortraitExecute(Sender)
else
if rbLandscape.Checked then
FSCS_Main.aLandscaleExecute(Sender);
if cbPageSize.ItemIndex = 0 then
FSCS_Main.aA0Execute(Sender);
if cbPageSize.ItemIndex = 1 then
FSCS_Main.aA1Execute(Sender);
if cbPageSize.ItemIndex = 2 then
FSCS_Main.aA2Execute(Sender);
if cbPageSize.ItemIndex = 3 then
FSCS_Main.aA3Execute(Sender);
if cbPageSize.ItemIndex = 4 then
FSCS_Main.aA4Execute(Sender);
if cbPageSize.ItemIndex = 5 then
FSCS_Main.aA5Execute(Sender);
if cbPageSize.ItemIndex = 6 then
FSCS_Main.aA6Execute(Sender);
if cbPageSize.ItemIndex = 7 then
FSCS_Main.aB4Execute(Sender);
if cbPageSize.ItemIndex = 8 then
FSCS_Main.aB5Execute(Sender);
if cbPageSize.ItemIndex = 9 then
FSCS_Main.aLetterExecute(Sender);
if cbPageSize.ItemIndex = 10 then
FSCS_Main.aTabloidExecute(Sender);
if cbPageSize.ItemIndex = 11 then
FSCS_Main.aCustomExecute(Sender);
if GCadForm.PCad.WorkWidth <> edWidth.Value then
GCadForm.PCad.WorkWidth := edWidth.Value;
if GCadForm.PCad.WorkHeight <> edHeight.Value then
GCadForm.PCad.WorkHeight := edHeight.Value;
GCadForm.ChangeScrollsOnChangeListSize;
ReAssignNavigatorParams;
except
ShowMessage('EXCEPTION: TF_PageParams.bOKClick');
end;
end;
procedure TF_PageParams.rbPortraitClick(Sender: TObject);
begin
SetPageParamsOnChange;
end;
procedure TF_PageParams.rbLandscapeClick(Sender: TObject);
begin
SetPageParamsOnChange;
end;
procedure TF_PageParams.cbPageSizePropertiesCloseUp(Sender: TObject);
begin
SetPageParamsOnChange;
end;
procedure TF_PageParams.SetPageParamsOnChange;
begin
try
if cbPageSize.ItemIndex = 0 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 1189;
edHeight.Value := 841;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 841;
edHeight.Value := 1189;
end;
end;
if cbPageSize.ItemIndex = 1 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 841;
edHeight.Value := 594;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 594;
edHeight.Value := 841;
end;
end;
if cbPageSize.ItemIndex = 2 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 594;
edHeight.Value := 421;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 421;
edHeight.Value := 594;
end;
end;
if cbPageSize.ItemIndex = 3 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 421;
edHeight.Value := 297;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 297;
edHeight.Value := 421;
end;
end;
if cbPageSize.ItemIndex = 4 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 297;
edHeight.Value := 210;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 210;
edHeight.Value := 297;
end;
end;
if cbPageSize.ItemIndex = 5 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 210;
edHeight.Value := 148;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 148;
edHeight.Value := 210;
end;
end;
if cbPageSize.ItemIndex = 6 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 105;
edHeight.Value := 74;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 74;
edHeight.Value := 105;
end;
end;
if cbPageSize.ItemIndex = 7 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 353;
edHeight.Value := 250;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 250;
edHeight.Value := 353;
end;
end;
if cbPageSize.ItemIndex = 8 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 250;
edHeight.Value := 176;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 176;
edHeight.Value := 250;
end;
end;
if cbPageSize.ItemIndex = 9 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 279;
edHeight.Value := 215;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 215;
edHeight.Value := 279;
end;
end;
if cbPageSize.ItemIndex = 10 then
begin
if rbLandscape.Checked then
begin
edWidth.Value := 431;
edHeight.Value := 279;
end;
if rbPortrait.Checked then
begin
edWidth.Value := 279;
edHeight.Value := 431;
end;
end;
except
ShowMessage('TF_PageParams.cbPageSizePropertiesCloseUp');
end;
end;
procedure TF_PageParams.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #27 then
Close;
end;
procedure TF_PageParams.edWidthKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
bOK.SetFocus;
bOK.Click;
end;
end;
procedure TF_PageParams.edHeightKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
bOK.SetFocus;
bOK.Click;
end;
end;
procedure TF_PageParams.edWidthExit(Sender: TObject);
begin
if edWidth.Value = '' then
edWidth.Value := CurrentWorkWidth;
end;
procedure TF_PageParams.edHeightExit(Sender: TObject);
begin
if edHeight.Value = '' then
edHeight.Value := CurrentWorkHeight;
end;
end.