拉撒路形式创造

时间:2011-10-04 10:45:11

标签: forms lazarus

以下代码来自http://wiki.freepascal.org/MySQLDatabases

procedure TFormTryMySQL.OpenQueryButtonClick(Sender: TObject);
begin
 ShowQueryForm := TShowQueryForm.Create(self);
 ShowQueryForm.Datasource1.DataSet := SQLQuery1;
 SQLQuery1.SQL.Text := CommandEdit.Text;
 SQLQuery1.Open;
 ShowQueryForm.ShowModal;
 ShowQueryForm.Free;
 SQLQuery1.Close;
end;

我是Lazarus的新手。有人可以解释 ShowQueryForm:= TShowQueryForm.Create(self); 这一行吗?我特别好奇:

  1. 为什么我们需要以编程方式创建表单?
  2. 什么是TShowQueryForm?
  3. 我的表单没有T.为什么SQLQuery1 控件可以访问新表单上的数据吗?
  4. 如果这不是一个措辞严谨的问题,我很抱歉,但我很困惑:(

    谢谢!

2 个答案:

答案 0 :(得分:0)

如果在Project |中自动创建表单表单自动创建一个在应用程序启动时自动创建的表单,无需创建它。

显示的表单是Modal表单,这意味着它就像一个不是自动创建的对话框,只是按需创建。

答案 1 :(得分:0)

 1.    Why do we need to CREATE a form programmatically?

这是可选的。正如vfclists所说,你可以让表单自动创建,其中设计者将表单创建添加到LPR。 (就像Delphi btw)。

 2. What is the TShowQueryForm? My form is without a T. 

表单的类型。因此,您有一个变量名称xxxsomeForm,其中包含Txxxsomeform作为其特定类型。

 3. How come the SQLQuery1 control can access the data on the new form?

其他方式。 showqueryform中的网格或任何db感知控件都从数据源对象获取数据。在第二行:

 ShowQueryForm.Datasource1.DataSet := SQLQuery1;

将当前表单的sqlquery组件分配给新创建的表单上的数据集。