首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi,在运行时更改TComboBox图像

Delphi,在运行时更改TComboBox图像
EN

Stack Overflow用户
提问于 2021-12-29 13:53:47
回答 1查看 385关注 0票数 1

如果我以编程方式将TComboBox.Images更改为新的TImageList,则只更改TComboBox中选定的图标,则TComboBox (下拉列表)中的所有其他图标保持不变。

我有两个TImageLists,一个有彩色图标,一个有黑白图标,我想将黑白图标更改为彩色图标,反之亦然。

代码语言:javascript
复制
procedure TfrmMain.Button1Click(Sender: TObject);
begin
  if ComboBox1.Images = ImageList1 then
    ComboBox1.Images := ImageList2
  else
    ComboBox1.Images := ImageList1;
end;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-14 16:07:48

正如问题注释中指出的,这确实是Delphi中的一个错误,因为在显示弹出后至少一次更改Images属性时不会刷新内部下拉列表。通过在FMX.ListBox.pas过程中对TCustomComboBox.SetImages源文件进行小改动,可以纠正这一点:

对于Delphi 11:

代码语言:javascript
复制
procedure TCustomComboBox.SetImages(const Value: TCustomImageList);
begin
  FImageLink.Images := Value;
  FItemsChanged := True;        // <- Add this
end;

特尔斐10.4 CE:

代码语言:javascript
复制
procedure TCustomComboBox.SetImages(const Value: TCustomImageList);
begin
  FImageLink.Images := Value;
  TComboBoxHelper.SetItemsChanged(Self, True);        // <- Add this
end;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70520388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档