当点击菜单的时候,弹出菜单下拉框,点击菜单中的某一项,出现的是一个蓝颜色的条子,怎样才能把蓝颜色的条子变成红颜色的条子

解决方案 »

  1.   

    procedure TForm1.DrawItem(Item:TMenuItem; ACanvas: TCanvas; ARect: TRect; 
    Selected: Boolean);
    var
    dc,y,i,j,xb,xe:integer;
    begin
    //设置字体和其前景色
    ACanvas.Font := Screen.IconFont;
    SetBkMode(ACanvas.Handle,TRANSPARENT); //设背景为透明//根椐菜单宽度计算渐变背景色的填充色增量;当菜单宽度大于256时没有渐变较果
    dc:=ACanvas.ClipRect.Right-ACanvas.ClipRect.Left;
    dc:=(256 div dc);
    dc:=dc*256;//计算渐变背景色的填充起点
    xb:=ARect.Left + ImageList1.Width+2;//计算渐变背景色的填充终点
    xe:=ARect.Right-xb;//绘制背景图
    ACanvas.StretchDraw(Rect(0,0,ACanvas.ClipRect.Right,ACanvas.ClipRect.Bottom),
    CoolBar1.Bitmap);//非平辅方式绘制//绘制菜单项文本
    for j:=0 to Item.Parent.Count -1 do
    begin
    y:=19*j+4;
    ACanvas.TextOut(ARect.Left+20,y,Item.Parent.Items[j].Caption);//front color is black font
    end;//绘制当前选择的菜单项
    if Selected then begin
    for i:=0 to xe do begin
    ACanvas.Brush.Color := $002222FF+i*dc; //背景的填充色,$002222FF为起始色
    ACanvas.FillRect(Rect(xb,ARect.Top,xb+1,ARect.Bottom));
    inc(xb);
    end;
    ImageList1.Draw(ACanvas,ARect.Left+1,ARect.Top+1,0,true); //在左边绘制图标
    ACanvas.Font.Color:=clWhite; //被选中时的字体前景色是白色
    SetBkMode(ACanvas.Handle,TRANSPARENT); //必须重设背景模式为透明
    ACanvas.TextOut(ARect.Left+20,ARect.Top+4,Item.Caption);//front color,which is white font
    end;
    end;