delphi ListBox 中如何分别设置每一行的字体样式

小白本人想做一个记事本软件,想要做成跟系统自带的记事本软件设置字形是一样,不知道有没有大神能帮我解决的样式... 小白本人想做一个记事本软件,想要做成跟系统自带的记事本软件设置字形是一样,不知道有没有大神能帮我解决的
样式
展开
 我来答
windblast
2013-11-07 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13621
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部

试解答如下:


  1. 将ListBox控件的属性设置如下:

        Style属性: lbOwnerDrawFixed

        Color属性: clMoneyGreen (也可用白色)


   2. 响应 ListBox 的事件,并编写代码如下:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  s: string;
begin
  with TListBox(Control).Canvas do
  begin
    if (odSelected in State) or (odFocused in State) then
    begin
      Brush.Color := clNavy;
      Font.Color := clWhite;
    end
    else
    begin
      Brush.Color := clMoneyGreen;
      Font.Color := clBlack;
    end;
    case Index of
      1:
        Font.Style := [fsItalic];
      2:
        Font.Style := [fsBold];
      3:
        Font.Style := [fsBold, fsItalic];
    end;
    s := TListBox(Control).Items[Index];
    DrawText(Handle, PChar(s), Length(s), Rect, DT_SingleLine or DT_VCenter);
  end;
end;
追问

这个我之前试过但是出现的问题就是有些字体会出现多个虚线框    这个怎么解决

或者有没有办法在选中一行时不出现虚线框

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式