Custom controls 用于减小箭头大小的自定义绘图组合框[C+;+;生成器XE/2]
我有一串(水平)下拉组合框。考虑到其中的数据非常小,下拉箭头会占用大量空间,使整个内容看起来很难看 因此,我想知道如何使“箭头”只在鼠标悬停时打开,或者类似的事情。但我不想让其他人看着它眼睛流血。我知道,我知道,UI标准是有原因的,但这对我来说似乎是个例外。我假设,如果有人想更改数据,他们至少会将鼠标悬停在数据上,如果没有单击的话Custom controls 用于减小箭头大小的自定义绘图组合框[C+;+;生成器XE/2],custom-controls,c++builder,builder,vcl,Custom Controls,C++builder,Builder,Vcl,我有一串(水平)下拉组合框。考虑到其中的数据非常小,下拉箭头会占用大量空间,使整个内容看起来很难看 因此,我想知道如何使“箭头”只在鼠标悬停时打开,或者类似的事情。但我不想让其他人看着它眼睛流血。我知道,我知道,UI标准是有原因的,但这对我来说似乎是个例外。我假设,如果有人想更改数据,他们至少会将鼠标悬停在数据上,如果没有单击的话 目标是C++ Builder XE2,但Visual C++目标实例也很好。我不希望有一个完整的工作示例,只是朝正确的方向推动(当然,除非有一个完全工作的组件已经在等
目标是C++ Builder XE2,但Visual C++目标实例也很好。我不希望有一个完整的工作示例,只是朝正确的方向推动(当然,除非有一个完全工作的组件已经在等待拖放,在这种情况下没有重新设计的意义)
您无法控制下拉箭头。它是由操作系统(而不是VCL)管理的基础组合框窗口的一部分我建议您使用
TEdit
而不是TComboBox
,然后创建一个单独的t表单
,该表单上有一个TListBox
。当用户将鼠标悬停在TEdit
上或单击它时,您可以显示t表单
,并更新其t列表框
,以包含相关项目。如果用户单击TListBox
中的项目,则可以将该字符串值分配给当前的TEdit
。这使您可以更好地控制t列表框
显示的外观,对其屏幕定位进行更多的控制,甚至可以通过t form.AlphaBlend
属性添加一些特殊效果,如淡入/淡出等。使用TLabel而不是TEdit(因为用户从不需要直接编辑它)当用户将鼠标悬停在标签上时,它会在完全相同的位置显示一个TComboBox,因此很明显您可以单击它。一旦鼠标离开该区域,TComboBox就会隐藏,只显示标签
或者,有一个TIDIT,我在自己的箭头上显示,点击时显示一个TLIB框(非常类似于上面发布的答案,但是没有表格)
你可以发布一个屏幕截图,显示你认为是“丑陋”的东西吗?谢谢,我想到了一些类似的东西,我会把它放在下面。为什么是TForm?动态创建对象非常简单,并且不会带来尝试排列整个表单的复杂性?