0

我有一个下拉组合框的字符串(水平)。考虑到其中的数据非常小,下拉箭头占用了大量空间,让整个东西看起来很丑。

所以我想知道让“箭头”只在鼠标悬停时打开,或者类似的东西。但我不希望其他人看到它并让他们的眼睛流血。我知道,我知道,UI 标准是有原因的,但这对我来说似乎是个例外。我假设如果有人想要更改数据,他们至少会将鼠标悬停在它上面,如果不点击它。

目标是 C++ Builder XE2,但 Visual C++ 目标示例也很好。我不期望一个完整的工作示例,只是朝着正确的方向推动(当然,除非有一个完全工作的组件已经在等待拖放,在这种情况下没有必要重新发明)

4

2 回答 2

0

您无法控制下拉箭头。它是由操作系统管理的底层组合框窗口的一部分,而不是 VCL。

我建议你做的是使用TEdit而不是TComboBox,然后创建一个单独的,上面TForm有一个TListBox。当用户将鼠标悬停在 aTEdit上或单击它时,您可以显示TForm并更新其TListBox以包含相关项。如果用户单击 中的某个项目TListBox,您可以将该字符串值分配给当前TEdit. 这使您可以更好地控制显示器的外观TListBox,让您可以更好地控制其屏幕定位,甚至可以通过TForm.AlphaBlend属性添加一些特殊效果,例如淡入/淡出等。

于 2012-09-08T01:42:13.633 回答
0

使用 TLabel 而不是 TEdit(因为用户永远不需要直接编辑它),当用户将鼠标悬停在标签上时,它会在完全相同的位置显示一个 TComboBox,因此很明显您可以单击它。一旦鼠标离开该区域,TComboBox 就会隐藏,只显示标签。

或者,有一个 TEdit,我在自己身上显示箭头,并在单击时显示一个 TListBox(与上面发布的答案非常相似,但没有表单)

于 2012-09-08T11:34:51.413 回答