📄 libmanage.pas
字号:
unit libManage;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls,drwObj;
type
TfrmLib = class(TForm)
Panel1: TPanel;
PageControl: TPageControl;
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
ATabSheet:TTabSheet;
AListView:TListView;
function IsLibFile(fileName:string):boolean;
procedure TabSheetShow(Sender: TObject);
public
{ Public declarations }
mLibManager:TLibManage;
mListView:TListView;
LibManagers:Array of TLibManage;
procedure LoadLib(LibFileName:String);
procedure RemoveLibManager(id:integer);
end;
var
frmLib: TfrmLib;
implementation
uses
frm_Main;
{$R *.dfm}
procedure TfrmLib.FormDestroy(Sender: TObject);
begin
frmMain.rightDockPanel.Width :=0;
frmLib:=nil;
end;
procedure TfrmLib.FormClose(Sender: TObject; var Action: TCloseAction);
var
i:integer;
begin
action:=caFree;
for i:=0 to High(LibManagers) do
LibManagers[i].Free;
end;
procedure TfrmLib.LoadLib(LibFileName: String);
var
i:integer;
ABitmap:TBitmap;
AListItem: TListItem;
AlibImageList:TImageList;
mCaption:string;
begin
if IsLibFile(LibFileName) then
begin
for i:=0 to High(LibManagers) do
begin
if Pos(LibManagers[High(LibManagers)].LibFileName,
LibFileName ) > 0 then
begin
ShowMessage('This Lib: '+ LibFileName +' has been opened!');
exit;
end;
end;
SetLength(LibManagers,High(LibManagers)+2);
LibManagers[High(LibManagers)]:=TLibManage.Create;
LibManagers[High(LibManagers)].LoadFromFile(LibFileName);
mLibManager:=LibManagers[High(LibManagers)];
{增加新的一页元件库}
ATabSheet:=TTabSheet.Create( PageControl);
ATabSheet.Parent:= PageControl;
ATabSheet.PageControl:= PageControl;
ATabSheet.Caption:=copy(LibManagers[High(LibManagers)].LibFileName,0,
pos('.',LibManagers[High(LibManagers)].LibFileName)-1);
ATabSheet.OnShow:= TabSheetShow;
ATabSheet.ParentFont :=false;
ATabSheet.Font.Name :='宋体';
ATabSheet.Font.Size :=9;
PageControl.ActivePage:=ATabSheet;
AlibImageList:=TImageList.Create(ATabSheet);
AlibImageList.Height := 32;
AlibImageList.Width := 32;
ABitmap:=TBitmap.Create;
ABitmap.Height :=32;ABitmap.Width :=32;
For i:=0 to mLibManager.Count -1 do
begin
mCaption:=mLibManager.getShapeName(i);
mLibManager.getIconByName(mCaption,ABitmap);
AlibImageList.AddMasked(ABitmap,clMoneyGreen);
end;
ABitmap.Free;
AListView:=TListView.Create(ATabSheet);
AListView.Parent:=ATabSheet;
AListView.Align:=alClient;
AListView.ViewStyle:= vsIcon;
AListView.IconOptions.AutoArrange:=false;
AListView.LargeImages:= AlibImageList;
AListView.Color:=clMoneyGreen;
AListView.DragMode :=dmAutomatic;
AListView.Clear ;
For i:=0 to mLibManager.Count -1 do
begin
AListItem:=AListView.Items.Add;
mCaption:= mLibManager.GetShapeName(i);
AListItem.Caption:=mCaption;
AListItem.ImageIndex:=i;
end;
mListView:=AListView;
end;
end;
procedure TfrmLib.RemoveLibManager(id: integer);
var
i:integer;
begin
for i:=id to High(LibManagers)-1 do
LibManagers[i]:= LibManagers[i+1];
LibManagers[High(LibManagers)].Free;
SetLength(LibManagers,High(LibManagers))
end;
procedure TfrmLib.TabSheetShow(Sender: TObject);
var
i:integer;
begin
if (Sender As TTabSheet).ComponentCount = 2 then
begin
for i:=0 to High(LibManagers) do
if Pos((Sender As TTabSheet).Caption, LibManagers[i].LibFileName)>0 then
begin
mLibManager := LibManagers[i];
mListView:=(Sender As TTabSheet).Components[1] as TListView;
end;
end;
end;
function TfrmLib.IsLibFile(fileName: string): boolean;
var
tmp:string;
begin
result:=false;
tmp:=lowerCase(fileName);
if extractFileExt(fileName)='.lib' then
result:=true;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -