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

📄 createpalette.pas

📁 类似Delphi Ide的对象查看器 可以在RUNTIME时使用
💻 PAS
字号:
unit CreatePalette;

interface

uses Windows, Classes, Controls, Buttons, Graphics, ComCtrls, MyButton, MyAutoBtn, MyTabs;

type
  TPaletteButton = class(TMySpeedButton)
  private
    FComponentClass: TComponentClass;
  public
    property ComponentClass: TComponentClass read FComponentClass write FComponentClass;
  end;

function CreatePaletteButton(AParent: TWinControl; AClass: TComponentClass; ALeft,ATop: Integer; ClickEvent: TNotifyEvent): TPaletteButton;
function CreatePalettePage(APageControl: TMyPageControl; ACaption: string; AClasses: array of TComponentClass; ClickEvent: TNotifyEvent): TMyTabSheet;
procedure EditMode(APageControl: TMyPageControl);

implementation

//{$R *.RES}

function CreatePaletteButton(AParent: TWinControl; AClass: TComponentClass; ALeft,ATop: Integer; ClickEvent: TNotifyEvent): TPaletteButton;
var
  AClassName: string;
begin
  Result:=TPaletteButton.Create(AParent);
  with Result do
  begin
    ComponentClass:=AClass;
    if Assigned(ComponentClass) then
    begin
      RegisterClass(ComponentClass);
      AClassName:=ComponentClass.ClassName;
      with Glyph do
      begin
        Handle:=LoadBitmap(HInstance,PChar(AClassName));
        if Handle=0 then Handle:=LoadBitmap(HInstance,'TCOMPONENT');
      end;
      Hint:=Copy(AClassName,2,Pred(Length(AClassName)));
    end
    else Glyph.Handle:=LoadBitmap(HInstance,'EDITMODE');
    Left:=ALeft;
    Top:=ATop;
    Width:=28;
    Height:=28;
    Flat:=True;
    GroupIndex:=1;
    if not Assigned(ComponentClass) then Down:=True;
    ShowHint:=True;
    Parent:=AParent;
    OnClick:=ClickEvent;
  end;
end;

function CreatePalettePage(APageControl: TMyPageControl; ACaption: string; AClasses: array of TComponentClass; ClickEvent: TNotifyEvent): TMyTabSheet;
var
  i,W: Integer;
begin
  Result:=TMyTabSheet.Create(APageControl);
  with Result do
  begin
    W:=CreatePaletteButton(Result,nil,0,0,ClickEvent).Width;
    for i:=Low(AClasses) to High(AClasses) do
      CreatePaletteButton(Result,AClasses[i],Succ(i)*W+4,0,ClickEvent);
    Caption:=ACaption;
    PageControl:=APageControl;
  end;
end;

procedure EditMode(APageControl: TMyPageControl);
var
  i: Integer;
begin
  with APageControl do
    for i:=0 to Pred(PageCount) do
      if Pages[i].Controls[0] is TPaletteButton then
        TPaletteButton(Pages[i].Controls[0]).Down:=True;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -