我有一个宽度= 130且高度= 130的GroupBox,包含一个TEdit和一个可见= false的网格。当在TEdit中输入文本时,我希望网格可见(它看起来像一个列组合框)。
问题是:网格不适合组框。
如何在群组框边框中显示网格,而无需更改组框边框。
伪代码:
if Edit.Text <>'' then
begin
dbgrid.height :=260
end
else
begin
dbgrid.Height :=0;
end;
答案 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;
使用此解决方案,网格仍然无法超越当前形式。如果需要,您必须创建一个完全独立的表单,并将网格作为唯一组件。