mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 17:25:39 +02:00
150 lines
3.8 KiB
ObjectPascal
150 lines
3.8 KiB
ObjectPascal
unit PCBlockDlg;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
DlgBase,BlockFrm,FileCtrl,PCTypesUtils,GUIStrings;
|
|
|
|
type
|
|
TPCBlockDlg = class(TDlgBase)
|
|
private
|
|
{ Private declarations }
|
|
Dial : TBlockForm;
|
|
FBlockDir: String;
|
|
Procedure GetCommand( comId: integer; values: string; valueI: integer );
|
|
procedure SetBlockDir(Value: String);
|
|
protected
|
|
{ Protected declarations }
|
|
public
|
|
{ Public declarations }
|
|
constructor create(Aowner: TComponent);override;
|
|
destructor destroy;override;
|
|
procedure show;override;
|
|
Procedure SyncronizeContext;
|
|
Procedure Syncronize;override;
|
|
Procedure Locate(px,py:Integer);override;
|
|
Procedure GetBlockFileNames(List:TStringlist);
|
|
published
|
|
{ Published declarations }
|
|
Property CadControl;
|
|
Property BlockDirectory:String read FBlockDir write SetBlockDir;
|
|
end;
|
|
|
|
implementation
|
|
{$R *.DCR}
|
|
|
|
var Filelist : TFileListBox;
|
|
|
|
constructor TPCBlockDlg.create(aowner: TComponent);
|
|
begin
|
|
inherited create(Aowner);
|
|
dial := TBlockForm.create(self);
|
|
oncommand := GetCommand;
|
|
DlgName := 'Block';
|
|
Filelist := TFileListBox.Create(self);
|
|
FileList.Parent := Dial;
|
|
FileList.Visible := false;
|
|
end;
|
|
|
|
Procedure TPCBlockDlg.Show;
|
|
begin
|
|
SyncronizeContext;
|
|
dial.Show;
|
|
end;
|
|
|
|
Procedure TPCBlockDlg.Locate(px,py:Integer);
|
|
begin
|
|
dial.Left := px;
|
|
dial.top := py;
|
|
end;
|
|
|
|
Procedure TPCBlockDlg.SyncronizeContext;
|
|
var a: integer;
|
|
begin
|
|
if assigned(CadControl) then
|
|
begin
|
|
with Dial do
|
|
begin
|
|
Cad := CadControl;
|
|
Blckdir := BlockDirectory;
|
|
Combobox1.Items.Clear;
|
|
if (BlockDirectory <> '') and (DirectoryExists(BlockDirectory)) then begin
|
|
Filelist.Directory := BlockDirectory;
|
|
FileList.Mask := '*.pwl';
|
|
FileList.Update;
|
|
For a := 0 to FileList.Items.Count - 1 do
|
|
begin
|
|
Combobox1.Items.add(Copy(FileList.Items[a],1,Length(FileList.Items[a])-4));
|
|
end;
|
|
Combobox1.Items.add(asAllBlocks);
|
|
If Combobox1.Items.Count > 0 then
|
|
begin
|
|
Combobox1.ItemIndex := 0;
|
|
LoadBlockLib;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
Procedure TPCBlockDlg.Syncronize;
|
|
begin
|
|
If Dial.Visible then SyncronizeContext;
|
|
end;
|
|
|
|
Procedure TPCBlockDlg.GetCommand(comId: integer; values: string; valueI: integer );
|
|
var blName: String;
|
|
begin
|
|
If assigned(CadControl) then
|
|
begin
|
|
case ComId of
|
|
0: // NewLibrary added
|
|
SyncronizeContext;
|
|
1: CadControl.InsertBlockwithFileName(CadControl.ActiveLayer,values,-1,-1);
|
|
2: begin
|
|
if InputQuery('Make Block', 'Block Name', blname) then
|
|
begin
|
|
CadControl.MakeSelectionBlock(BlockDirectory+blname+'.pwb');
|
|
Dial.AddBlockToCurrentLib(blName);
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TPCBlockDlg.GetBlockFileNames(List: TStringlist);
|
|
var path: string;
|
|
FileRec:TWIN32FindData;
|
|
FHandle: THandle;
|
|
begin
|
|
path := Self.BlockDirectory;
|
|
if not DirectoryExists(Path) then exit;
|
|
if not assigned(list) then exit;
|
|
FHandle := FindFirstFile(pchar(path+'*.pwb'),FileRec);
|
|
if FHandle <> INVALID_HANDLE_VALUE then
|
|
begin
|
|
List.Add(Self.BlockDirectory+FileRec.cFileName);
|
|
while FindNextFile(Fhandle,FileRec) do
|
|
begin
|
|
List.Add(Self.BlockDirectory+FileRec.cFileName);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TPCBlockDlg.SetBlockDir(Value: String);
|
|
begin
|
|
if (value <> '') and (copy(value,length(value),1) <> '\') then value := value +'\';
|
|
FBlockDir := Value;
|
|
if (Value <> '') then RegWrite('BlockDir',Value);
|
|
if not (csDesigning in self.ComponentState) then SyncronizeContext;
|
|
end;
|
|
|
|
destructor TPCBlockDlg.destroy;
|
|
begin
|
|
inherited;
|
|
end;
|
|
|
|
end.
|