显示父级边框外的网格

时间:2013-11-19 10:12:26

标签: delphi

我有一个宽度= 130且高度= 130的GroupBox,包含一个TEdit和一个可见= false的网格。当在TEdit中输入文本时,我希望网格可见(它看起来像一个列组合框)。

问题是:网格不适合组框。

如何在群组框边框中显示网格,而无需更改组框边框。

伪代码:

if Edit.Text <>'' then
begin
dbgrid.height :=260 
end
else
begin
dbgrid.Height :=0;
end;

1 个答案:

答案 0 :(得分:1)

我会使用Visible属性,而不是将Height设置为0。

如果要在组框的客户端矩形外显示网格,则必须更改父级,例如:

dbgrid.Parent := GetParentForm(groupbox);

请注意,必须在新父级的客户端坐标系中指定组件位置:

// coordinates in groupbox coordinate system
GridPopupPt := Point(edit.Left, edit.Top + edit.Height);

// coordinates in parent coordinate system
GridPopupPt := groupbox.ClientToParent(GridPopupPt, GetParentForm(groupbox));   

dbgrid.Left := GridPopupPt.X;
dbgrid.Top := GridPopupPt.Y;

使用此解决方案,网格仍然无法超越当前形式。如果需要,您必须创建一个完全独立的表单,并将网格作为唯一组件。