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_Events_Delphi 7_Frame - Fatal编程技术网

Delphi 单击按钮时显示帧

Delphi 单击按钮时显示帧,delphi,events,delphi-7,frame,Delphi,Events,Delphi 7,Frame,我正在尝试做一个简单的程序,当点击另一个框架/表单上的按钮时,它将显示一个框架。更清楚地说,我想要一个类似MessageDialogBox的东西,但是我想要显示一个框架,而不是MessageDialogBox 到目前为止,我在then OnClickEvent上尝试了这段代码 procedure TFrame3.SpeedButton1Click(Sender: TObject); var frm : TfrmVizorFunctii; // This is the frame I w

我正在尝试做一个简单的程序,当点击另一个框架/表单上的按钮时,它将显示一个框架。更清楚地说,我想要一个类似MessageDialogBox的东西,但是我想要显示一个框架,而不是MessageDialogBox

到目前为止,我在then OnClickEvent上尝试了这段代码

procedure TFrame3.SpeedButton1Click(Sender: TObject);
var 
    frm : TfrmVizorFunctii; // This is the frame I want to be appear;  
begin
    frm := TfrmVizorFunctii.Create(nil);
    frm.Parent := nil;
    frm.ABDBGrid1.ActiveColumn:=2;
    frm.Left:=(Screen.Width-Width)  div 2;
    frm.Top:=(Screen.Height-Height) div 2;
    frm.Show;


end;

我做错了什么?

如果没有父帧,则无法显示帧。必须将现有表单(或该表单上的任何
TWinControl
)设置为父表单,或创建新的空表单并将其设置为父表单,如下所示:

Form := TEmptyForm.Create (Application);
Frame := TMyFrame.Create (Form);
Frame.Parent := Form;
Frame.Align := alClient;
Form.Show;

如果您真的只想显示帧,那么
atteryForm
可以将
BorderStyle
设置为
bsNone

由于帧没有父帧,因此它将不可见。请改用
frm.Parent:=Self
。@AndreasRejbrand如果我这样做,它将显示我的帧,但帧显示在我的父帧上,我不希望这样,我希望它是独立的。@AndreasRejbrand谢谢!现在清楚了。从技术上讲,您可以重新声明“Show”以调用“ShowWindow”,并重写“CreateParams”以删除子标志。但是你最终会遇到很多问题。谢谢!它是这样工作的。但是现在我想知道,用框架来思考这样的问题,或者简单地使用表单,是否有好处。如果你总是这样使用它,我只会使用表单。只有当你想在多个表单上重复使用同一个UI时,框架才会带来好处。例如,您可以使用一个主窗体和两个框架:一个用于显示一组记录(DBGrid),另一个用于显示choosen记录的详细信息。