Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Custom controls 用于减小箭头大小的自定义绘图组合框[C+;+;生成器XE/2]_Custom Controls_C++builder_Builder_Vcl - Fatal编程技术网

Custom controls 用于减小箭头大小的自定义绘图组合框[C+;+;生成器XE/2]

Custom controls 用于减小箭头大小的自定义绘图组合框[C+;+;生成器XE/2],custom-controls,c++builder,builder,vcl,Custom Controls,C++builder,Builder,Vcl,我有一串(水平)下拉组合框。考虑到其中的数据非常小,下拉箭头会占用大量空间,使整个内容看起来很难看 因此,我想知道如何使“箭头”只在鼠标悬停时打开,或者类似的事情。但我不想让其他人看着它眼睛流血。我知道,我知道,UI标准是有原因的,但这对我来说似乎是个例外。我假设,如果有人想更改数据,他们至少会将鼠标悬停在数据上,如果没有单击的话 目标是C++ Builder XE2,但Visual C++目标实例也很好。我不希望有一个完整的工作示例,只是朝正确的方向推动(当然,除非有一个完全工作的组件已经在等

我有一串(水平)下拉组合框。考虑到其中的数据非常小,下拉箭头会占用大量空间,使整个内容看起来很难看

因此,我想知道如何使“箭头”只在鼠标悬停时打开,或者类似的事情。但我不想让其他人看着它眼睛流血。我知道,我知道,UI标准是有原因的,但这对我来说似乎是个例外。我假设,如果有人想更改数据,他们至少会将鼠标悬停在数据上,如果没有单击的话


目标是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?动态创建对象非常简单,并且不会带来尝试排列整个表单的复杂性?