⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 libmanage.pas

📁 delphi语言开发的矢量图形处理对象
💻 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 + -