收录日期:2019/03/20 19:53:35 时间:2016/05/31 07:15:52 标签:VCL组件开发及应用
我时这样写得
procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.Items.Add('0001=张三');
  ComboBox1.Items.Add('0002=李四');
  ComboBox1.Items.Add('0003=王五');
end;

在重绘事件我这样写
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  if ComboBox1.ItemIndex = Index then begin
    Canvas.Brush.Color := clHotLight;
    Canvas.FillRect(Rect);
    Canvas.Font.Color := clWindow;
  end else begin
    Canvas.Brush.Color := clWindow;
    Canvas.FillRect(Rect);
    Canvas.Font.Color := clWindowText;
  end;
  Canvas.TextRect(Rect, Rect.Left, Rect.Top + 1,ComboBox1.Items.Values[Combobox1.Items.Names[index]]);
end;

但是当运行时点击combobox的时候,其下拉菜单的文字偏移大到老远的位置,不知为何
顶上去
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with ComboBox1 do
  begin
    if ItemIndex = Index then begin
      Canvas.Brush.Color := clHotLight;
      Canvas.FillRect(Rect);
      Canvas.Font.Color := clWindow;
    end else begin
      Canvas.Brush.Color := clWindow;
      Canvas.FillRect(Rect);
      Canvas.Font.Color := clWindowText;
    end;
    Canvas.TextRect(Rect, Rect.Left, Rect.Top, Items[Index]);
  end;
end;
将Canvas.TextRect(Rect, Rect.Left, Rect.Top, Items[Index]);
换成Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]);
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with ComboBox1 do
  begin
    if odSelected in State then
      begin
        Canvas.Brush.Color := clRed;
        Canvas.Font.Color := clWindow;
      end
      else
      begin
        Canvas.Brush.Color := clWindow;
        Canvas.Font.Color := clWindowText;
      end;
    Canvas.TextRect(Rect, Rect.Left, Rect.Top + 1, ComboBox1.Items.Values[Combobox1.Items.Names[index]]);
  end;
end;
揭帖了

如何学习好asp呢? 颜色常量如何定义?如颜色代码为0x008080FF,如何定义这个数字。 求助:我有一个selelct语句不能正常运行 请指教! 读excel出现乱码问题 关于网站浏量统计 请叫C++编程问题????? 关于tcp server的问题 在线等::::关于无组件上传的问题!!! 续-----<<散分了!“5月2日星期日”,永生难忘的一天! >> 如何让菜单最大化,并且禁止其大小改变?? 我得javascript怎么不执行 cpu与内存搭配的问题 打印换页问题 不能登陆 如何动态调用select语句中的字段 将SQL2000数据库中varchar改成text后,系统有问题 请问CSingleDocTemplate的用法???? 哪位大虾能给小弟讲解一下ACTIVEREPORT FOR .NET 阿!~ 谁做过考勤系统? 大家可以介绍一下现在买什么音箱好呢? 随机取数的问题 如何在linux下看Word中的文字? 很奇怪的问题呀,同一个页面相同的语句,一个不报错一个报错,何解? 谁能告诉我CommaText是身摸意思 哪位知道如何减去一行 简单,在线等 AQA是什么? 一台P4的主机做VOD点歌服务器,到底能带多少台点歌用的客户机? 怎么在查找一个表单里的所有输入域的NAME?? 对话框继承问题