delphi 如何确定BitBtn中加载的图像?

4ktjp1zp  于 2023-08-04  发布在  其他
关注(0)|答案(3)|浏览(127)

我想在 Delphi 中为一个表排序按钮。我有一个带有Glyph(向上箭头)的TBitBtn。当这个按钮被按下时,我希望发生这样的事情:

if btbSort.Glyph := 'Up.bmp' do
   Sort from down to up
or else
   Sort from up to down

字符串
这有意义吗?
似乎没有“加载标志符号”的属性。

lx0bsm1f

lx0bsm1f1#

没有办法询问Button加载了哪个Glyph,因为它不跟踪该信息。因此,您必须自己跟踪它,例如使用按钮的Tag属性,例如:

btbSort.Glyph.LoadFromFile('Up.bmp');
btbSort.Tag := 1;
...
if btbSort.Tag = 1 then begin
   // Sort from down to up ...
end
else begin
   // Sort from up to down ...
end;

字符串

vc9ivgsu

vc9ivgsu2#

一个TBitBtn确实有一个Glyph属性,它是一个TBitmap,但我不确定你是否可以很容易地使用它来确定显示的是哪个箭头。
然而,从大卫Schwartz的答案中得到启发,也许最好的方法是创建一个包含向上和向下箭头的TImageList,然后将按钮的ImageIndex设置为所需的箭头。当用户单击该按钮时,查看当前设置为ImageIndex的数字,并进行相应的排序。

irtuqstp

irtuqstp3#

把它当作一个只写属性来对待,因为没有什么简单的东西可以读。好消息是象形文字通常非常小,加载速度很快。如果控件允许您使用ImageList,那么您需要做的就是更改ImageIndex。
您需要由更改标志符号的事件来设置标志符号。在已知状态(例如,“开”或“关”)下启动相关图像,然后在每次状态改变时加载另一图像。你可以有几个想要反映的状态,而不仅仅是两个。
但是,你可以为多个图像分配字形,比如页面,我认为最多四个:上、下、上、下(或类似)。它将选择要显示的相应字形。这可能在某个地方解释过,但我不确定在哪里。
就像跳舞一样:您需要决定谁领先谁跟随-按钮的状态或(外部)排序顺序标志的状态。

相关问题