我是一个有用的助手,可以帮你进行翻译。
我刚开始学习Delphi,遇到了一个问题。我想从另一个窗体刷新DBGrid。我的代码如下:
Form1:
unit uForm1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
btnAdd: TButton;
grid: TDBGrid;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
procedure btnAdd(Sender: TObject);
private
public
constructor Create(Owner:TComponent); overload;
end;
var
form1: TForm1;
implementation
uses uForm2, uDbOperations;
{$R *.dfm}
procedure TForm1.btnAddClick(Sender: TObject);
var
frm : TForm2;
begin
frm := TForm2.Create(form1);
frm.ShowModal;
frm.Free;
end;
表单2:
unit uForm2;
procedure TForm2.btnAddClick(Sender: TObject);
var
query : string;
begin
query := 'Insert into Employees(Name) Values('''+txtName.Text+''');';
DbOperations.InsertOrUpdate(query, ADOQuery1);
ModalResult := mrCancel;
//And this here I'd refresh grid on form1
end;
end.
在form2添加记录后,如何刷新form1中的dbgrid?我尝试了很多方法,但都没有成功。我知道在C#中需要在构造函数中传递引用,但是在Delphi中该怎么做呢?
DataSource1.DataSet.Refresh
。 - Val Marinovx'; DROP TABLE Employees;
到您的txtName
控件时会发生什么。并使用try..finally
块确保资源将被释放(在您的代码中为frm
实例)。而且返回mrCancel
看起来很奇怪。 - TLama