以下代码来自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); 这一行吗?我特别好奇:
如果这不是一个措辞严谨的问题,我很抱歉,但我很困惑:(
谢谢!
答案 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组件分配给新创建的表单上的数据集。