ComboBox控件的下拉框是如何实现的?(50分)

  • 主题发起人 主题发起人 omvm
  • 开始时间 开始时间
O

omvm

Unregistered / Unconfirmed
GUEST, unregistred user!
如题,ComboBox 下拉框可以自动根据位置向上或向下,并且可以延伸至窗体外。这个下拉
框是如何实现的。兄弟水平低,最好有例程。有另送分。
 
前面这人头是怎么弄出来的?
 
老兄啊,这个东东呢是操作系统提供的,一般是不需要咱们操心的,它是一个窗口类,如果你想知道
你可以去问盖茨哥哥,不过,你要是有足够的闲情,可以修改他的行为,怎么做,去买一套MSDN
在 platform sdk documentation 下的 uset interface services,说的比较清楚。
 
看看这贴
http://www.delphibbs.com/delphibbs/dispq.asp?lid=458030
 
我作过类似的算法,程序如下:(以鼠标的坐标点作为参照)

procedure TForm.FormShow(Sender: TObject);
var
VL_Point:TPoint;
begin
GetCursorPos(VL_Point);
if VL_Point.x-Width>=0 then
Left:=VL_Point.x-Width
else
Left:=0;
if Screen.Height-VL_Point.y>Height then
Top:=VL_Point.y
else
Top:=VL_Point.y-Height;
Show;
end;
 
dingbaosheng大虾
偶也要露露人头:-)
 
谢谢大家,我试试。大家继续发言啊。
 
我倒觉得这个问题有新意!

有些时候,我们不能仅仅停留在 VCL 上,要真正了解其底层实现。
“知其然,还要知其所以然”!
 
那个下拉框是 Windows 原生的东西,你看看它的 CreateParams 方法就知道了
不过我们完全可以用 TEdit, TListBox, TForm 来模拟 TComboBox,
但编程比较复杂

用 TForm 主要是可以让 TListBox 延伸到当前窗体的外面
 
to balaschen:

我看了那个贴子,用 tform 还可以减轻很多 focus 的处理
 
多人接受答案了。
 
后退
顶部