我想在 Delphi 中为一个表排序按钮。我有一个带有Glyph(向上箭头)的TBitBtn。当这个按钮被按下时,我希望发生这样的事情:
if btbSort.Glyph := 'Up.bmp' do Sort from down to up or else Sort from up to down
字符串这有意义吗?似乎没有“加载标志符号”的属性。
lx0bsm1f1#
没有办法询问Button加载了哪个Glyph,因为它不跟踪该信息。因此,您必须自己跟踪它,例如使用按钮的Tag属性,例如:
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;
字符串
vc9ivgsu2#
一个TBitBtn确实有一个Glyph属性,它是一个TBitmap,但我不确定你是否可以很容易地使用它来确定显示的是哪个箭头。然而,从大卫Schwartz的答案中得到启发,也许最好的方法是创建一个包含向上和向下箭头的TImageList,然后将按钮的ImageIndex设置为所需的箭头。当用户单击该按钮时,查看当前设置为ImageIndex的数字,并进行相应的排序。
TBitBtn
Glyph
TBitmap
TImageList
ImageIndex
irtuqstp3#
把它当作一个只写属性来对待,因为没有什么简单的东西可以读。好消息是象形文字通常非常小,加载速度很快。如果控件允许您使用ImageList,那么您需要做的就是更改ImageIndex。您需要由更改标志符号的事件来设置标志符号。在已知状态(例如,“开”或“关”)下启动相关图像,然后在每次状态改变时加载另一图像。你可以有几个想要反映的状态,而不仅仅是两个。但是,你可以为多个图像分配字形,比如页面,我认为最多四个:上、下、上、下(或类似)。它将选择要显示的相应字形。这可能在某个地方解释过,但我不确定在哪里。就像跳舞一样:您需要决定谁领先谁跟随-按钮的状态或(外部)排序顺序标志的状态。
3条答案
按热度按时间lx0bsm1f1#
没有办法询问Button加载了哪个Glyph,因为它不跟踪该信息。因此,您必须自己跟踪它,例如使用按钮的
Tag
属性,例如:字符串
vc9ivgsu2#
一个
TBitBtn
确实有一个Glyph
属性,它是一个TBitmap
,但我不确定你是否可以很容易地使用它来确定显示的是哪个箭头。然而,从大卫Schwartz的答案中得到启发,也许最好的方法是创建一个包含向上和向下箭头的
TImageList
,然后将按钮的ImageIndex
设置为所需的箭头。当用户单击该按钮时,查看当前设置为ImageIndex
的数字,并进行相应的排序。irtuqstp3#
把它当作一个只写属性来对待,因为没有什么简单的东西可以读。好消息是象形文字通常非常小,加载速度很快。如果控件允许您使用ImageList,那么您需要做的就是更改ImageIndex。
您需要由更改标志符号的事件来设置标志符号。在已知状态(例如,“开”或“关”)下启动相关图像,然后在每次状态改变时加载另一图像。你可以有几个想要反映的状态,而不仅仅是两个。
但是,你可以为多个图像分配字形,比如页面,我认为最多四个:上、下、上、下(或类似)。它将选择要显示的相应字形。这可能在某个地方解释过,但我不确定在哪里。
就像跳舞一样:您需要决定谁领先谁跟随-按钮的状态或(外部)排序顺序标志的状态。