一个简单的菜单按钮的实现

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

使用过速达2000的朋友都知道,其基本资料的浏览界面中有一种按钮,点击后会弹出一个和按钮对得很整齐的菜单.用Delphi制作一个类似的控件十分容易,代码如下:

unit MenuBtnVCL;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Buttons, CommCtrl,

ExtCtrls,Menus;

type

TMenuBtn = class(TBitBtn)

protected

procedure DoEnter;override;

procedure DoExit;override;

{ Protected declarations }

public

constructor Create(AOwner: TComponent); override;

procedure Click; override;

{ Public declarations }

published

{ AL: }

{ Published declarations }

end;

procedure Register;

implementation

procedure Register;

begin

RegisterComponents('Samples', [TMenuBtn]);

end;

constructor TMenuBtn.Create(AOwner: TComponent);

begin

inherited Create(AOwner);

layout:=blGlyphRight;

Font.Charset := GB2312_CHARSET;

Font.Color := clWindowText;

Font.Height := -12;

Font.Name := '宋体';

end;

procedure TMenuBtn.Click;

var tmp:TPoint;

begin

inherited Click;

if Assigned(PopUpMenu) then

begin

{ calc where to put menu }

tmp := ClientToScreen(Point(0, Height));

PopUpMenu.Popup(tmp.X, tmp.Y);

end;

end;

procedure TMenuBtn.DoEnter;

begin

Font.Style := [fsBold];

inherited DoEnter;

end;

procedure TMenuBtn.DoExit ;

begin

Font.Style := [];

inherited DoExit;

end;

end.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航