gpt4 book ai didi

delphi - CheckListBox 项目样式

转载 作者:行者123 更新时间:2023-12-01 22:58:34 24 4
gpt4 key购买 nike

我在启动时添加项目(来自给定文件夹名称的文件名),并且我使用此过程在单击项目时完成操作:

procedure TForm1.CheckListBoxClickCheck(Sender: TObject);

如何使选中的项目改变其颜色或样式?换句话说,我单击一个项目,然后在检查后将其粗体显示。

最佳答案

您需要将 Style 属性设置为 lbOwnerDrawFixed 并在 OnDrawItem 事件中自行绘制项目。

例如

procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
Flags: Longint;
begin
with TCheckListBox(Control) do
begin
if Checked[Index] then
begin
Canvas.Font.Style := Canvas.Font.Style + [fsBold];
Canvas.Font.Color := clRed;
end;
Canvas.FillRect(Rect);
if Index < Items.Count then
begin
Flags := DrawTextBiDiModeFlags(DT_SINGLELINE or DT_VCENTER or DT_NOPREFIX);
if not UseRightToLeftAlignment then
Inc(Rect.Left, 2)
else
Dec(Rect.Right, 2);
DrawText(Canvas.Handle, PChar(Items[Index]), Length(Items[Index]), Rect,
Flags);
end;
end;
end;

procedure TForm1.CheckListBox1ClickCheck(Sender: TObject);
begin
TCheckListBox(Sender).Invalidate;
end;

请注意,还需要 OnClickCheck 中的 Invalidate,因为当选中/取消选中某个项目时,该控件不会失效(至少在我当前的 Delphi 版本中不会) )。

关于delphi - CheckListBox 项目样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53615932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com