如何在TForm的边界之外显示控件(例如TListbox)

时间:2018-07-02 14:17:27

标签: delphi tform tlistbox

在运行时如何在父窗体的边界之外显示一个列表框:

enter image description here

在设计时单击列表框时,从IDE获取图像。我想在运行时实现这种效果。

1 个答案:

答案 0 :(得分:5)

您不能真正在外观上将控件扩展到父窗体之外。但是,您可以通过为此控件创建单独的无边界表单并部分在第一个表单上显示此辅助表单来实现此效果:

enter image description here

Form1是一种主要形式,下面是OnClick的{​​{1}}处理程序:

Button1

由于第二个格式(procedure TForm1.Button1Click(Sender: TObject); begin Form2 := TForm2.Create(nil); try Form2.Left := ClientOrigin.X + 140; Form2.Top := ClientOrigin.Y + ClientHeight - 20; Form2.ShowModal; Edit1.Text := IntToStr(Form2.ModalResult); finally Form2.Free; end; end; )与Form2不相关(子级为父级),因此我们必须将其位置指定为屏幕像素,但仍要相对于Form1。因此,我们使用Form1(“ Form1客户区顶部和左侧作为屏幕坐标”)作为参考。

包含Form1.ClientOrigin的第二种形式Form2具有以下属性设置

TListBox

,它的BorderStyle = bsNone KeyPreview = True (to catch `Enter` key) 事件处理程序写为

OnKeyUp