gpt4 book ai didi

delphi - 单击此项目时更改列表框项目的颜色

转载 作者:行者123 更新时间:2023-12-03 19:03:11 25 4
gpt4 key购买 nike

所以我在窗体上有一个ListBox,它由不同的链接组成,所有链接都是蓝色的并带有下划线(就像html链接一样,您知道)。当用户单击其中一个项目(链接)时,它将在默认浏览器中打开,但我也希望该特定链接将颜色更改为紫色。这是我现在在OnClick过程中所拥有的:

procedure TForm1.ListBox1Click(Sender: TObject);

begin
ShellExecute(Handle, 'open', PAnsiChar(ListBox1.Items[ListBox1.ItemIndex]), nil, nil, SW_SHOWNORMAL);
end;

最佳答案

您的问题归结为如何为每个项目使用不同的字体设置绘制列表。您需要执行以下操作:


将列表框的Style属性设置为lbOwnerDrawFixed
处理列表框的OnDrawItem事件以绘制每个项目。


您的OnDrawItem事件将以字体绘制该项目,以指示该项目是否已被单击。您可以管理我认为的逻辑。我将展示一个简单的示例,该示例根据项目的Index不同地绘制项目。

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
ListBox: TListBox;
Canvas: TCanvas;
begin
ListBox := Control as TListBox;
Canvas := ListBox.Canvas;

// clear the destination rectangle
Canvas.FillRect(Rect);

// prepare the font style and color
Canvas.Font.Style := [fsUnderline];
if Odd(Index) then
Canvas.Font.Color := clBlue
else
Canvas.Font.Color := clPurple;

// draw the text
Canvas.TextOut(Rect.Left, Rect.Top, ListBox.Items[Index]);

// and the focus rect
if odFocused in State then
Canvas.DrawFocusRect(Rect);
end;

关于delphi - 单击此项目时更改列表框项目的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103431/

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