Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 显示父边框外的栅格_Delphi - Fatal编程技术网

Delphi 显示父边框外的栅格

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“

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

问题是:网格不适合groupbox

如何在不改变分组框边框的情况下显示分组框外的网格边框

伪代码:

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案例,我希望网格发送到分组框前面,并在分组框边框中显示所有网格,而不进行更改这正是此答案所提供的。你为什么不试试呢?