如何改变按钮控件的颜色请付源码 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 找第三方控件学习一下,到这看看有没有你所学要的:http://www.2ccc.com/article.asp?articleid=827 普通的按钮没法改变。如果用普通控件,用TPanel代替吧。 获取到控件DC,就可以对其进行“描绘”。比如,普通按钮:TButtonvar btnDC: HDC;begin btnDC := GetDC(Button1.Handle); FillRect(btnDC,Rect(1,1,Button1.Width-1,Button1.Height-1),HBRUSH(0)); TextOut(btnDC,0,0,PChar(Button1.Caption),Length(Button1.Caption)); ReleaseDC(Button1.Handle,btnDC); ...end; 我用的是BITBTN,你用的是API函数吧,源码能详细些么? {初始:蓝色;鼠标左键按下:红色;鼠标放开:黑色;鼠标移开:蓝色;}unit ColorBtn;interfaceuses Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, Graphics,Dialogs;type TColorBtn = class(TGraphicControl) private OnMDown: TMouseEvent; OnMUp: TMouseEvent; protected procedure Paint;override; procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);override; procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);override; procedure MouseLeave(var Message: TMessage); message CM_MOUSELEAVE; procedure Click;override; public constructor Create(AOwner: TComponent);override; published property OnMouseDown: TMouseEvent read OnMDown write OnMDown; property OnMouseUp: TMouseEvent read OnMUp write OnMup; end;procedure Register;implementationprocedure Register;begin RegisterComponents('MyTest', [TColorBtn]);end;{ TColorBtn }procedure TColorBtn.Click;begin inherited;end;constructor TColorBtn.Create(AOwner: TComponent);begin inherited Create(AOwner); Width := 30; Height := 30;end;procedure TColorBtn.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin inherited MouseDown(Button, Shift, x, y); canvas.Brush.Color := clRed; canvas.FillRect(Rect(0,0,30,30));end;procedure TColorBtn.MouseLeave(var Message: TMessage);begin Paint;end;procedure TColorBtn.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin inherited MouseUp(Button, Shift, x, y); canvas.Brush.Color := clBlack; canvas.FillRect(Rect(0,0,30,30));end;procedure TColorBtn.Paint;begin inherited Paint; canvas.Brush.Color := clBlue; canvas.FillRect(Rect(0,0,30,30));end;end. Delphi frame 在线等!不连接数据库,如何手动往DBGrid中插入数据啊? Delphi开发的ActiveX如何注册后显示默认控件图标 小弟想做一个像foxmail那样动态字幕窗体,请问动态字幕如何实现,应该不是利用一个label控件吧! 删除记录的问题 如何在列表框中画多个组合框,并进行多行选择? 高分请教:在线等待!!怎么在Delphi 里面控制拨号网络,在网上查的一些资料都没有办法通过!火急!! DbiSaveChanges怎么使用才行? 做底层开发还是做通用软件的开发? ado连接问题? ◆◆在线程中,如何退出程序◆◆ 请--高手 帮忙 操纵delphi的
到这看看有没有你所学要的:http://www.2ccc.com/article.asp?articleid=827
比如,普通按钮:TButton
var
btnDC: HDC;
begin btnDC := GetDC(Button1.Handle);
FillRect(btnDC,Rect(1,1,Button1.Width-1,Button1.Height-1),HBRUSH(0));
TextOut(btnDC,0,0,PChar(Button1.Caption),Length(Button1.Caption));
ReleaseDC(Button1.Handle,btnDC);
...end;
初始:蓝色;
鼠标左键按下:红色;
鼠标放开:黑色;
鼠标移开:蓝色;
}
unit ColorBtn;interfaceuses Windows, Messages, SysUtils, Classes, Controls, ExtCtrls,
Graphics,Dialogs;type TColorBtn = class(TGraphicControl)
private
OnMDown: TMouseEvent;
OnMUp: TMouseEvent;
protected
procedure Paint;override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);override;
procedure MouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
procedure Click;override;
public
constructor Create(AOwner: TComponent);override;
published
property OnMouseDown: TMouseEvent read OnMDown write OnMDown;
property OnMouseUp: TMouseEvent read OnMUp write OnMup;
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('MyTest', [TColorBtn]);
end;{ TColorBtn }procedure TColorBtn.Click;
begin
inherited;end;constructor TColorBtn.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Width := 30;
Height := 30;
end;procedure TColorBtn.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
inherited MouseDown(Button, Shift, x, y);
canvas.Brush.Color := clRed;
canvas.FillRect(Rect(0,0,30,30));
end;procedure TColorBtn.MouseLeave(var Message: TMessage);
begin
Paint;
end;procedure TColorBtn.MouseUp(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
inherited MouseUp(Button, Shift, x, y);
canvas.Brush.Color := clBlack;
canvas.FillRect(Rect(0,0,30,30));
end;procedure TColorBtn.Paint;
begin
inherited Paint;
canvas.Brush.Color := clBlue;
canvas.FillRect(Rect(0,0,30,30));
end;end.