📄 createpalette.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 + -