从delphi中的另一个表单刷新DBGrid
发布时间:2020-12-15 09:28:47 所属栏目:大数据 来源:网络整理
导读:我刚刚开始学习德尔福,我遇到了一个问题.我将从另一种形式刷新DBGrid.我的代码: Form1中: unit uForm1;interfaceuses Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,DB,ADODB,Grids,DBGrids,StdCtrls;type TForm1 = class(
我刚刚开始学习德尔福,我遇到了一个问题.我将从另一种形式刷新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如何? 解决方法
使用你的模式,我会做这样的事情:
procedure TForm1.btnAddClick(Sender: TObject); var frm : TForm2; begin frm := TForm2.Create(form1); try if frm.ShowModal = mrOK then begin Grid.Datasource.Dataset.Refresh; // some databases require open/close to refresh // in this case Grid.Datasource.Dataset.close; // Grid.Datasource.Dataset.Open; end; finally frm.Free; end end; procedure TForm2.btnAddClick(Sender: TObject); var query : string; begin query := 'Insert into Employees(Name) Values('''+txtName.Text+''');'; DbOperations.InsertOrUpdate(query,ADOQuery1); ModalResult := mrOK; // let a cancel button on Form2 perform ModalResult = mrCancel // to avoid unnecessary dataset refreshes.. end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |