Delphi 显示父边框外的栅格
我有一个宽度为130、高度为130的GroupBox,其中包含一个TEdit和一个visible=false的网格。当在TEdit中输入文本时,我希望网格可见(一起看起来像一个列组合框) 问题是:网格不适合groupbox 如何在不改变分组框边框的情况下显示分组框外的网格边框 伪代码:Delphi 显示父边框外的栅格,delphi,Delphi,我有一个宽度为130、高度为130的GroupBox,其中包含一个TEdit和一个visible=false的网格。当在TEdit中输入文本时,我希望网格可见(一起看起来像一个列组合框) 问题是:网格不适合groupbox 如何在不改变分组框边框的情况下显示分组框外的网格边框 伪代码: if Edit.Text <>'' then begin dbgrid.height :=260 end else begin dbgrid.Height :=0; end; 如果编辑.Text“
if Edit.Text <>'' then
begin
dbgrid.height :=260
end
else
begin
dbgrid.Height :=0;
end;
如果编辑.Text“”,则
开始
dbgrid.height:=260
结束
其他的
开始
dbgrid.Height:=0;
结束;
我将使用可见
属性,而不是将高度设置为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;
使用此解决方案,网格仍然无法超出当前形式。如果需要,您必须创建一个完全独立的表单,其中网格是唯一的组件。Hikmat,我重写了您的问题,希望现在能更清楚。我知道英语不是你的第一语言,这很好,但你应该注意正确描述东西,例如命名组件类型。从原始问题文本来看,不清楚是TStringGrid还是TDBGrid。请相应地编辑您的问题。难道您不能只指定分组框的高度
和宽度
属性吗?我需要opesite案例,我希望网格发送到分组框前面,并在分组框边框中显示所有网格,而不进行更改这正是此答案所提供的。你为什么不试试呢?