什么使button变颜色?

itlcx 2003-03-03 11:33:34
什么使button变颜色?think.
...全文
22 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Comer 2003-03-03
  • 打赏
  • 举报
回复
UP
用个第三方控件不是更方便吗?
yuanyu368 2003-03-03
  • 打赏
  • 举报
回复
up
ghbh 2003-03-03
  • 打赏
  • 举报
回复
canvas
「已注销」 2003-03-03
  • 打赏
  • 举报
回复
TForm1 = class(TForm)
but_OwnerDraw: TBitBtn;

private
{ Private declarations }
procedure WMDrawItem(var Message: TWMDrawItem); message WM_DrawItem;



procedure TForm1.WMDrawItem(var Message: TWMDrawItem);
var
Brush1: THandle;
begin
Message.Result := 1;
if Message.Ctl <> but_OwnerDraw.Handle then
inherited else
begin
SelectObject(Message.DrawItemStruct.hDC, but_OwnerDraw.Font.Handle);
if Message.DrawItemStruct.itemState = ODS_DISABLED then
begin
{test the itemState to see if disabled
this is painting for a Disabled button
a Grey color}
SetBkColor(Message.DrawItemStruct.hDC, $00BBBBBB);
FillRect(Message.DrawItemStruct.hDC, Message.DrawItemStruct.rcItem, GetStockObject(LTGRAY_BRUSH));
SetBkMode(Message.DrawItemStruct.hDC,TRANSPARENT);
SetTextColor(Message.DrawItemStruct.hDC,$00DDDDDD);
TextOut(Message.DrawItemStruct.hDC,8,8,PChar(but_OwnerDraw.Caption),Length(but_OwnerDraw.Caption));
SetTextColor(Message.DrawItemStruct.hDC,$00666666);
TextOut(Message.DrawItemStruct.hDC,6,6,PChar(but_OwnerDraw.Caption),Length(but_OwnerDraw.Caption));
end else
begin
{this is painting for a normal button
an Yellow color}
Brush1 := CreateSolidBrush($0000FFFF);
SetBkColor(Message.DrawItemStruct.hDC, $0000FFFF);
FillRect(Message.DrawItemStruct.hDC, Message.DrawItemStruct.rcItem, Brush1);
DeleteObject(Brush1);
TextOut(Message.DrawItemStruct.hDC,6,6,PChar(but_OwnerDraw.Caption),Length(but_OwnerDraw.Caption));
end;
if (Message.DrawItemStruct.itemState and ODS_SELECTED) <> 0 then
DrawEdge(Message.DrawItemStruct.hDC, Message.DrawItemStruct.rcItem, EDGE_SUNKEN, BF_RECT)
else
DrawEdge(Message.DrawItemStruct.hDC, Message.DrawItemStruct.rcItem, EDGE_RAISED, BF_RECT);
if Message.DrawItemStruct.itemState = ODS_FOCUS then
begin
InflateRect(Message.DrawItemStruct.rcItem,-4,-4);
DrawFocusRect(Message.DrawItemStruct.hDC, Message.DrawItemStruct.rcItem);
{make the rcRect smaller and draw a focus Rect}
end;
end;
end;
outer2000 2003-03-03
  • 打赏
  • 举报
回复
canvas
bluemeteor 2003-03-03
  • 打赏
  • 举报
回复
canvas

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧