请大虾助我:我用Panel、TButton组合做一个下拉框控件 ( 积分: 100 )

  • 主题发起人 主题发起人 LoveKilly
  • 开始时间 开始时间
L

LoveKilly

Unregistered / Unconfirmed
GUEST, unregistred user!
单击按钮时创建一个窗体,在窗体上画一个列表框,算是“弹出下拉列表”,但是我不知道怎么关闭这个窗体。我想实现的功能类似:弹出一个菜单,当单击别的窗体时,自动关闭这个菜单。
 
单击按钮时创建一个窗体,在窗体上画一个列表框,算是“弹出下拉列表”,但是我不知道怎么关闭这个窗体。我想实现的功能类似:弹出一个菜单,当单击别的窗体时,自动关闭这个菜单。
 
当鼠标离开窗体的时候关闭很好实现,为什么不用这个方法?

要实现单击别的窗体自动关闭菜单,要接收主表单的消息来实现
 
siaosa兄可否详细介绍你说的第二种方法?
 
那用菜单不就可以了?
procedure TForm1.Button1Click(Sender: TObject);
begin
PopupMenu1.Popup(Button1.ClientOrigin.X,
Button1.ClientOrigin.Y + Button1.Height);
end;
 
wm_killFocus
不过如果是ocx控件可能会有问题,收不到消息,这就是delphi
祝你好运吧
 
dreamisx兄:不行啊,弹出的窗体上还要放一个控件呢!
RailGundi兄:你说的方法我先试下,:)
 
to RailGundi:
下拉框弹出以后单击别的窗体不能把它收回来 呀
 
运行时把鼠标从上面拿走不就行了嘛!
 
to eagleql:
没听懂你的意思。
 
个人看法:如果你的这个东西只有在一个Form里面用,那么就不用另外启动一个Form了,直接用一个Panel就可以了,然后控制这个Panel的显示与否,当你点击Form的其他地方的时候也就是Form的OnClick事件,隐藏这个Panel,这样就可以控制你说的哪钟情况了,把Panel分格设置一下,看起来象一个Form

如果是多个窗体都用的话,也可以,因为这个窗体的Form里面本来就有个变量的,比如说var
ShowForm: TShowForm

那么在你引用的Form里面判断就可以了,比如在MainForm里面
if Assigned(ShowForm) then ShowForm.Hide 或者
if Assigned(ShowForm) then ShowForm.Free
以上还是在OnClick里面判断

至于显示你自己已经搞定了,看看能不能对你有参考价值
 

Similar threads

D
回复
0
查看
841
DelphiTeacher的专栏
D
D
回复
0
查看
847
DelphiTeacher的专栏
D
D
回复
0
查看
681
DelphiTeacher的专栏
D
D
回复
0
查看
544
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部