我有一个控件是产从TBUTTON派生出来的,请问怎么给他添加背景颜色
急!!!!!!!!
急!!!!!!!!
解决方案 »
- chm帮助文档打开定位
- ClientDataSet内存表反复的插入和删除记录后(最后总记录数基本不变),会不会内存越占越多
- MapViewOfFile详解
- 我用VC写的DLL,用Delphi调用,出错,请教!
- 求助小数点保留问题.用在控件stringgrid中
- 關于動態產生tmonthcalendar使用的問題﹖
- 如何捕捉数值重复异常?
- TComponentname 为何不支持中文?
- 问一个很简单的问题?解决了马上给分!
- GetNextChild的问题
- 有什么办法在字符位数不够的情况下自动补位,比如我需要位数位8个字节,但是现在有字符串‘我们’,不够8位,我想它自动补位
- 有关程序中“流程图”的设计,恳请高手请进来帮帮小弟!
用第三方控件是比较现实的事情
TBitBtn扩展得能改变字体颜色。我想应该也能改变背景颜色。你研究一下TBitBtn呀。
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TButton1 = class(TButton)
private
FCanvas: TCanvas;
FControlState: TControlState;
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
protected
procedure Paint; virtual;
procedure PaintWindow(DC: HDC); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Canvas: TCanvas read FCanvas;
end;
procedure Register;
implementation
constructor TButton1.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCanvas := TControlCanvas.Create;
TControlCanvas(FCanvas).Control := Self;
end;
destructor TButton1.Destroy;
begin
FCanvas.Free;
inherited Destroy;
end;
procedure TButton1.WMPaint(var Message: TWMPaint);
begin
Include(FControlState, csCustomPaint);
inherited;
Exclude(FControlState, csCustomPaint);
end;
procedure TButton1.PaintWindow(DC: HDC);
begin
FCanvas.Lock;
try
FCanvas.Handle := DC;
try
TControlCanvas(FCanvas).UpdateTextFlags;
Paint;
finally
FCanvas.Handle := 0;
end;
finally
FCanvas.Unlock;
end;
end;
procedure TButton1.Paint;
begin
end;
procedure Register;
begin
RegisterComponents('Samples', [TButton1]);
end;
end.