1 怎样使TButton,TToolbutton等按钮可以选择颜色?
2 怎样使TToolbutton不是立体的而是平面的?

解决方案 »

  1.   

    不使用TToolButton而使用TSpeedButton或是第三方控件的TFlatButton
      

  2.   

    1、设置TToolBar的color,Toolbutton是透明的,TButton恐怕得自己写代码了
    2、设置TToolBar的flat:=True //Toolbutton没有flat属性
      

  3.   

    我每天都贴一遍,呵呵,收分
    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;
      

  4.   

    那么如何使Tmainmenu变成透明的呢?
      

  5.   

    www.51delphi.com//下载第三方控件