定制绘制组合框以减少箭头大小[C++生成器XE/2]

问题描述:

我有下拉组合框的字符串(水平)。考虑到它们中的数据非常小,下拉箭头占用了大量空间,并且使整个外观看起来很难看。定制绘制组合框以减少箭头大小[C++生成器XE/2]

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

目标是C++ Builder的XE2,但Visual C++针对性的例子也没关系。我不希望(当然,除非有一个完全工作的组成部分在那里已经等待拖放,没点在这种情况下重塑)

+0

你能后显示您认为什么是屏幕截图是“丑陋”? –

你不”完整工作示例,只是在正确的方向上推不能控制下拉箭头。它是由操作系统管理的底层ComboBox窗口的一部分,而不是VCL。

我会建议你做的是使用TEdit代替TComboBox,然后创建一个单独的TForm在其上有一个TListBox。当用户将鼠标悬停在TEdit或点击它,可以显示TForm并更新其TListBox遏制初步认识项目。如果用户点击TListBox中的项目,则可以将该字符串值分配给当前的TEdit。这使您可以更好地控制显示屏的外观,让您更好地控制其屏幕上的位置,甚至可以通过TForm.AlphaBlend属性等添加一些特殊效果,例如淡入/淡出等。

+0

谢谢,我想到了类似的东西,我将在下面提出。为什么TForm?动态创建对象非常简单,不会带来尝试排列整个表单的复杂性? – Moose

使用的TLabel而不是TEDIT(如用户永远不需要直接编辑),当用户将鼠标悬停在标签,它显示在完全相同的位置TComboBox所以它变得很明显,你可以点击它。一旦鼠标位于区域之外,TComboBox就会隐藏,只显示标签。

或者说,有一个TEDIT我展示我自己的箭头,点击后显示的TListBox(非常类似于上面张贴的答案,但没有形式)