我要在两个窗体之间传递数据,和查询问题是这样的
我在窗体1上单击一个按钮,带着两个数据到窗体2,我要这两个数据中的一个做查询条件,
但我还要调用一个编辑按钮(窗体2上的按钮)的CLICK后才能查询数据,等窗体2,SHOW之前查出数据,在窗体2上显示,
请问用什么方法才能完成,代码写在哪个事件里,请指教谢谢大家,
我的窗体2是着个形式的大家看一下代码就知道了
procedure setbtnvisible;
begin
Form_PF.Btn_Add.Visible := not(Form_PF.Btn_Add.Visible);
Form_PF.Btn_del.Visible := not(Form_PF.Btn_del.Visible);
Form_PF.Btn_Edit.Visible := not(Form_PF.Btn_Edit.Visible);
Form_PF.Btn_Save.Visible := not(Form_PF.Btn_Save.Visible);
Form_PF.Btn_Cancel.Visible := not(Form_PF.Btn_Cancel.Visible);
Form_PF.Btn_Exit.Visible := not(Form_PF.Btn_Exit.Visible);
Form_PF.EdtCode.Enabled := not(Form_PF.EdtCode.Enabled);
Form_PF.EdtName.Enabled := not(Form_PF.EdtName.Enabled);
Form_PF.Edtbz.Enabled := not(Form_PF.Edtbz.Enabled);
Form_PF.StringGrid1.Enabled := not(Form_PF.StringGrid1.Enabled);
end;
我在窗体1上单击一个按钮,带着两个数据到窗体2,我要这两个数据中的一个做查询条件,
但我还要调用一个编辑按钮(窗体2上的按钮)的CLICK后才能查询数据,等窗体2,SHOW之前查出数据,在窗体2上显示,
请问用什么方法才能完成,代码写在哪个事件里,请指教谢谢大家,
我的窗体2是着个形式的大家看一下代码就知道了
procedure setbtnvisible;
begin
Form_PF.Btn_Add.Visible := not(Form_PF.Btn_Add.Visible);
Form_PF.Btn_del.Visible := not(Form_PF.Btn_del.Visible);
Form_PF.Btn_Edit.Visible := not(Form_PF.Btn_Edit.Visible);
Form_PF.Btn_Save.Visible := not(Form_PF.Btn_Save.Visible);
Form_PF.Btn_Cancel.Visible := not(Form_PF.Btn_Cancel.Visible);
Form_PF.Btn_Exit.Visible := not(Form_PF.Btn_Exit.Visible);
Form_PF.EdtCode.Enabled := not(Form_PF.EdtCode.Enabled);
Form_PF.EdtName.Enabled := not(Form_PF.EdtName.Enabled);
Form_PF.Edtbz.Enabled := not(Form_PF.Edtbz.Enabled);
Form_PF.StringGrid1.Enabled := not(Form_PF.StringGrid1.Enabled);
end;
我在show和,create中调用都有错误
uses窗体2后就执行form2.Button1.Click;就可以了
begin
Button1.Click;
end;
窗体2中建立2个公共变量:var1,var2。
窗体2中建立一个公共函数或者过程,该函数可以执行查询。ExecuteQuery。
窗体2中放一个按钮。该按钮中调用ExecuteQuery。窗体1中建立一个函数来调用窗体2:
procedure ExeForm2
begin
Form2.Var1:=...
Form2.Var2:=...
Form2.ExeCuteQuery;
Form2.Show;
end;
begin
Form_PF.Btn_Add.Visible := not(Form_PF.Btn_Add.Visible);
Form_PF.Btn_del.Visible := not(Form_PF.Btn_del.Visible);
Form_PF.Btn_Edit.Visible := not(Form_PF.Btn_Edit.Visible);
Form_PF.Btn_Save.Visible := not(Form_PF.Btn_Save.Visible);
Form_PF.Btn_Cancel.Visible := not(Form_PF.Btn_Cancel.Visible);
Form_PF.Btn_Exit.Visible := not(Form_PF.Btn_Exit.Visible);
Form_PF.EdtCode.Enabled := not(Form_PF.EdtCode.Enabled);
Form_PF.EdtName.Enabled := not(Form_PF.EdtName.Enabled);
Form_PF.Edtbz.Enabled := not(Form_PF.Edtbz.Enabled);
Form_PF.StringGrid1.Enabled := not(Form_PF.StringGrid1.Enabled);
end;
这段代码什么错误啊
Form_PF.Btn_Add.Visible := not(Form_PF.Btn_Add.Visible);直做这行
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, DB, DBTables, ADODB;type
TForm_PF = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
EdtCode: TEdit;
EdtName: TEdit;
Edtbz: TEdit;
Panel1: TPanel;
Btn_Add: TBitBtn;
Btn_del: TBitBtn;
Btn_Edit: TBitBtn;
Btn_Save: TBitBtn;
Btn_Cancel: TBitBtn;
Btn_Exit: TBitBtn;
StringGrid1: TStringGrid;
Query1: TADOQuery;
Label4: TLabel;
Label5: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Btn_SaveClick(Sender: TObject);
procedure Btn_CancelClick(Sender: TObject);
procedure Btn_delClick(Sender: TObject);
procedure Btn_ExitClick(Sender: TObject);
procedure Btn_AddClick(Sender: TObject);
procedure Btn_EditClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure EdtCodeExit(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure EdtbzExit(Sender: TObject);
procedure EdtCodeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure EdtNameKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure EdtbzKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure EdtbzKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form_PF: TForm_PF;
edit_flag:string;implementationuses frm_smxz, MD_prnsp, unit_var;
{$R *.dfm}procedure setbtnvisible;
begin
Form_PF.Btn_Add.Visible := not(Form_PF.Btn_Add.Visible);
Form_PF.Btn_del.Visible := not(Form_PF.Btn_del.Visible);
Form_PF.Btn_Edit.Visible := not(Form_PF.Btn_Edit.Visible);
Form_PF.Btn_Save.Visible := not(Form_PF.Btn_Save.Visible);
Form_PF.Btn_Cancel.Visible := not(Form_PF.Btn_Cancel.Visible);
Form_PF.Btn_Exit.Visible := not(Form_PF.Btn_Exit.Visible);
Form_PF.EdtCode.Enabled := not(Form_PF.EdtCode.Enabled);
Form_PF.EdtName.Enabled := not(Form_PF.EdtName.Enabled);
Form_PF.Edtbz.Enabled := not(Form_PF.Edtbz.Enabled);
Form_PF.StringGrid1.Enabled := not(Form_PF.StringGrid1.Enabled);
end;procedure TForm_PF.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
Form_PF := nil;
end;procedure TForm_PF.Btn_SaveClick(Sender: TObject);
var
i:integer;
ssql:string;
begin
if self.StringGrid1.Cells[0,StringGrid1.rowcount-1]='' then self.StringGrid1.RowCount := self.StringGrid1.RowCount-1;
if self.StringGrid1.RowCount<2 then
begin
showmessage('没有输入配方,请重新输入!');
exit;
end;
if edit_flag='insert' then
begin
Data_prnsp.ADOConnection1.BeginTrans;
try
with query1 do
begin
close;
sql.Clear;
sql.Add('insert into yspf_main values('''+trim(EdtCode.Text)+''','''+trim(EdtName.Text)+''','+trim(edtbz.Text)+')');
//prepare;
execsql;
close;
end;
except
Data_prnsp.ADOConnection1.RollbackTrans;
showmessage('保存颜色配方主表不成功,请仔细检查!');
exit;
end;
for i:=1 to self.StringGrid1.RowCount-1 do
begin
ssql:='insert into yspf_detail values('''+trim(edtcode.Text)+''','''+trim(StringGrid1.Cells[0,i])+''','+trim(stringGrid1.Cells[2,i])+','+trim(stringgrid1.Cells[3,i])+')';
try
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(ssql);
//query1.Prepare;
query1.ExecSQL;
except
data_prnsp.ADOConnection1.RollbackTrans;
showmessage('保存颜色配方明细表出错,请仔细检查!');
exit;
end;
end;
query1.Close;
Data_prnsp.ADOConnection1.CommitTrans;
end;
if edit_flag='update' then
begin
data_prnsp.ADOConnection1.BeginTrans;
try
with query1 do
begin
close;
sql.Clear;
sql.Add('update yspf_main set name='''+trim(EdtName.Text)+''',proportion='+trim(edtbz.Text)+' where code='''+trim(edtcode.Text)+'''');
//prepare;
execsql;
end;
except
data_prnsp.ADOConnection1.RollbackTrans;
showmessage('更新颜色主表出错,请仔细检查!');
exit;
end;
ssql := 'delete from yspf_detail where code='''+trim(edtcode.Text)+'''';
try
with query1 do
begin
close;
sql.Clear;
sql.Add(ssql);
Execsql;
end;
except
data_prnsp.ADOConnection1.RollbackTrans;
showmessage('更新颜色明细表出错,请仔细检查!');
exit;
end;
for i:=1 to self.StringGrid1.RowCount-1 do
begin
ssql := 'insert into yspf_detail values('''+trim(edtcode.Text)+''','''+trim(StringGrid1.Cells[0,i])+''','+trim(stringGrid1.Cells[2,i])+','+trim(stringgrid1.Cells[3,i])+')';
try
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(ssql);
//query1.Prepare;
query1.ExecSQL;
except
data_prnsp.ADOConnection1.RollbackTrans;
showmessage('更新颜色明细表出错,请仔细检查!');
exit;
end;
end;
query1.Close;
data_prnsp.ADOConnection1.CommitTrans;
end;
if edit_flag='delete' then
begin
data_prnsp.ADOConnection1.BeginTrans;
ssql := 'delete from yspf_main where code='''+trim(edtcode.Text)+'''';
try
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(ssql);
//query1.Prepare;
query1.ExecSQL;
query1.Close;
except
data_prnsp.ADOConnection1.RollbackTrans;
showmessage('删除颜色主表出错,请仔细检查!');
exit;
end;
ssql := 'delete from yspf_detail where code='''+trim(edtcode.Text)+'''';
try
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(ssql);
//query1.Prepare;
query1.ExecSQL;
query1.Close;
except
data_prnsp.ADOConnection1.RollbackTrans;
showmessage('删除颜色附表出错,请仔细检查!');
exit;
end;
data_prnsp.ADOConnection1.CommitTrans;
end;
showmessage('保存成功!');
setbtnvisible;
end;procedure TForm_PF.Btn_CancelClick(Sender: TObject);
begin
setbtnvisible;
end;
比如第一个窗口名为:MainFrm
Public
Str,KeyStr:String;你在第二窗口里可以这样调用。
MainFrm.Str
MainFrm.KeyStr
....................................................
好好学学好不好,
还有,楼上的几个,不要误人好不好?
type
formName=class(TForm)
private
public
//这里不是摆设!
end;
在窗体2的onclick事件里,执行你自己想要执行的sql语句.这样就行了