mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 17:25:39 +02:00
128 lines
3.2 KiB
ObjectPascal
128 lines
3.2 KiB
ObjectPascal
unit PCFillDlg;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
FillForm,DlgBase,PCTypesUtils,DrawObjects,Powercad;
|
|
|
|
type
|
|
TPCFillDlg = class(TDlgBase)
|
|
private
|
|
{ Private declarations }
|
|
Syncing: Boolean;
|
|
Dial : TfrmFill;
|
|
Procedure Apply(Sender:TObject);
|
|
Function GetVisible:boolean;
|
|
protected
|
|
{ Protected declarations }
|
|
Procedure SetControl(value: TPowerCad);override;
|
|
public
|
|
{ Public declarations }
|
|
constructor create(Aowner: TComponent);override;
|
|
procedure show;override;
|
|
Procedure SyncronizeContext;
|
|
Procedure Syncronize;override;
|
|
Procedure Locate(px,py:Integer);override;
|
|
published
|
|
{ Published declarations }
|
|
Property CadControl;
|
|
Property Visible: Boolean read GetVisible;
|
|
end;
|
|
procedure EventBack(Client:TObject; EventId: Integer;
|
|
NumVal:Integer; Strval:String; DblVal:Double;Enabled:Boolean);stdcall;
|
|
|
|
implementation
|
|
{$R *.DCR}
|
|
|
|
|
|
|
|
uses PCDrawing;
|
|
|
|
constructor TPCFillDlg.create(Aowner: TComponent);
|
|
begin
|
|
inherited create(Aowner);
|
|
dial := TfrmFill.create(self);
|
|
OnApply := Apply;
|
|
DlgName := 'Fill Dialog';
|
|
Syncing := False;
|
|
end;
|
|
|
|
Procedure TPCFillDlg.SyncronizeContext;
|
|
var a: integer;
|
|
Info : TLayerInfo;
|
|
Count : Integer;
|
|
Figure: TFigure;
|
|
Begin
|
|
if syncing then exit;
|
|
Syncing := True;
|
|
If assigned(CadControl) then Dial.SetControl(CadControl);
|
|
If assigned(CadControl) and (CadControl.Selection.Count > 0) then
|
|
begin
|
|
Figure := TFigure(CadControl.Selection[0]);
|
|
if Figure.RegHandle <> 0 then begin
|
|
Dial.SelFigure := Figure;
|
|
Dial.Sync;
|
|
end;
|
|
end;
|
|
Syncing := False;
|
|
end;
|
|
|
|
Procedure TPCFillDlg.Show;
|
|
begin
|
|
SyncronizeContext;
|
|
dial.show;
|
|
if CadControl = nil then begin
|
|
ShowMessage('The Fill Dialog is not related with any Powercad control!');
|
|
end;
|
|
end;
|
|
|
|
Procedure TPCFillDlg.Locate(px,py:Integer);
|
|
begin
|
|
Dial.Left := px;
|
|
Dial.Top := py;
|
|
end;
|
|
|
|
Function TPCFillDlg.GetVisible: Boolean;
|
|
begin
|
|
Result := Dial.Visible;
|
|
end;
|
|
|
|
Procedure TPCFillDlg.Syncronize;
|
|
begin
|
|
If Dial.Visible then SyncronizeContext;
|
|
end;
|
|
|
|
procedure TPCFillDlg.Apply(Sender: TObject);
|
|
begin
|
|
if CadControl <> nil then begin
|
|
if dial.FillType = fsHatch then begin
|
|
CadControl.SetSelectionHatch(Dial.HatchStyle,Dial.ForeColor,Dial.BackColor,Dial.FillSize);
|
|
end else if dial.FillType = fsGradient then begin
|
|
CadControl.SetSelectionGradient(Dial.GradStyle,Dial.ForeColor,Dial.BackColor);
|
|
end else if dial.FillType = fsTexture then begin
|
|
CadControl.SetSelectionTexture(Dial.TextureStyle,Dial.TextureSize);
|
|
end;
|
|
SyncronizeContext;
|
|
end else begin
|
|
ShowMessage('The Fill Dialog is not related with any Powercad control!');
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TPCFillDlg.SetControl(value: TPowerCad);
|
|
begin
|
|
inherited;
|
|
if assigned(Value) then begin
|
|
Value.RegisterEvent(cBrushStyle,Self,EventBack);
|
|
end;
|
|
end;
|
|
|
|
procedure EventBack(Client:TObject; EventId: Integer;
|
|
NumVal:Integer; Strval:String; DblVal:Double;Enabled:Boolean);stdcall;
|
|
begin
|
|
TPCFillDlg(Client).SyncronizeContext;
|
|
end;
|
|
|
|
end.
|