各位大哥哥:
我在FORM1上设置一系列的控件来给用户设置’查寻条件‘,FORM2上放置QUERY及DOTASOURSE控件及DBGRID控件,想通过FORM1来给FORM2的QUERY配置查找参数,可QUERY总是接收不到FORM1上的参数。我该怎么办呢?
简单的我就是想问:如何在某个窗体源文件(.pas)定义一个变量,使另一个窗体能够共享(或说是‘接收到’)这个变量值呢?应该在哪个地方声明变量呢?(interface部分里?....)
求教!求教!
我在FORM1上设置一系列的控件来给用户设置’查寻条件‘,FORM2上放置QUERY及DOTASOURSE控件及DBGRID控件,想通过FORM1来给FORM2的QUERY配置查找参数,可QUERY总是接收不到FORM1上的参数。我该怎么办呢?
简单的我就是想问:如何在某个窗体源文件(.pas)定义一个变量,使另一个窗体能够共享(或说是‘接收到’)这个变量值呢?应该在哪个地方声明变量呢?(interface部分里?....)
求教!求教!
解决方案 »
- 一个复杂的循环条件判断问题,把我转晕了还是不行,急!!!!
- 介绍一个免费下载电影的网址...
- 一个几乎是难以启齿的问题
- 怎样得到WINDOWS的SYSTEM路径?
- cg1120(代码最优化-§为这世界,添些美丽色彩§) 给我进来.
- Delphi里怎样动态添加菜单?
- 我终于跟老板说辞职了,爽......
- 我是一名大四学生,学了1年多的DELPHI,熟悉SQL SERVER 2000,我想在北京找一个地方锻炼一下自己。
- 主从表中, 主表移动记录时,相应的从表对应的记录都会显示出来。
- 关于串口通讯的内存管理
- 遇到一个SQL问题,大家帮解决一下
- QucikReport打印问题及Table的edit状态问题
然后使用from2.query1访问query2上得query
加上:
use form2
就可了
i : Integer ;
我早试了此方法。
可总是变量的值传送不到
因为FORM1上的数值我都是通过其上的一个BUTTON-ON CLICK事件来赋给变量。我怀疑FORM2的QUERY之所以收不到FORM1的参数就是因为我给那些全局变量赋值是在PROCUDE BUTTONONCLICK事件过程中赋于的----会不会是这个原因呢?
i : Integer ; //变量定义在这儿
uses ThisUnit ;
这是FORM1的源代码:
unit FindRegi;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
T_FindRegi = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject); private
{ Private declarations }
procedure kfind(x:integer); public
{ Public declarations }
end;var
_FindRegi: T_FindRegi;
mysql1:string;
mysql2:string;
implementationuses FindResult;
{$R *.dfm}procedure T_FindRegi.Button2Click(Sender: TObject);
begin
close;
end;
procedure T_FindRegi.Button1Click(Sender: TObject);
begin
mysql1:='select * from fa.register where ';
kfind(1);
close;
_findresult.show;
end;procedure T_findregi.KFind(x:integer);
begin
if checkbox1.checked=true then
begin
mysql1:=mysql1+'帐号=:zh ';
mysql2:=edit1.text;
end;
end;end.
这是FROM2的源代码:
unit FindResult;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;type
T_FindResult = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Query1: TQuery;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
_FindResult: T_FindResult;implementationuses FindRegi;{$R *.dfm}procedure T_FindResult.FormCreate(Sender: TObject);
begin
query1.Close;
query1.SQL.Clear;
query1.sql.Add(findregi.mysql1);
Query1.ParamByName('zh').asfloat:=strtofloat(findregi.mysql2);
query1.Open;
end;procedure T_FindResult.Button3Click(Sender: TObject);
begin
close;
end;procedure T_FindResult.Button1Click(Sender: TObject);
begin
_findregi.Show;
end;end.
先弹出一个错误提示框:'''is not a 有效的 floating value '
然后,FROM1 botton1 click后,form2的dbgrid里什么也没有显示why??????
unit syst1;interface
var
namec,passc,syspassc,delpass1,czname1,dnamec:string;implementationend.
_FindRegi: T_FindRegi;
mysql1:string;
mysql2:string;----------------------------------mysql2 不从属于对象FindRegi
use from2;
begin
query1.Close;
query1.SQL.Clear;
query1.sql.Add(findregi.mysql1);
//Query1.ParamByName('zh').asfloat:=strtofloat(findregi.mysql2);Query1.ParamByName('zh').asfloat:=strtofloat(mysql2); //不行 ?
query1.Open;
end;
我的一个QuickRep控件上的DetailBank,上面放有几个QRDBText(显示字段的),可打印出来的行距(每次记录之间的距离)太大了,能否弄小呢?而有打印出来的并不是表格形式啊,每条记录之间并没有像Excel它们那样有线条将它们分开啊?????
unit RegiEdit;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, StdCtrls, Mask, DB, DBTables, Grids, DBGrids;type
T_RegiEdit = class(TForm)
DBNavigator1: TDBNavigator;
Button1: TButton;
Button3: TButton;
DataSource1: TDataSource;
Table1: TTable;
DBGrid1: TDBGrid;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
_RegiEdit: T_RegiEdit;implementation{$R *.dfm}
procedure T_RegiEdit.FormCreate(Sender: TObject);
begin
table1.Open;
table1.Active:=true;
table1.edit;
end;procedure T_RegiEdit.Button1Click(Sender: TObject);
begin
table1.Post;
showmessage('修改操作成功!');
table1.active:=false;
table1.Close;
close;
end;end. 修改这个表的数据后,再次调用这个窗体察看时,为什么总是出现错误提示窗'table not in insert or edit 状态',然后dbgrid里又是什么也没有。
不对啊,我不是已经在FormCreate里加上
table1.Open;
table1.Active:=true;
table1.edit;
了吗?按道理说每次该窗体被激活时,table1就被设置成edit状态啊。它怎么还提示我没在edit状态啊???????
procedure T_findregi.KFind(x:integer);
begin
if checkbox1.checked=true then
begin
mysql1:=mysql1+'帐号=:zh ';
mysql2:=edit1.text;
end;
end;
在这个我自定义的过程赋值,使mysql2变量的值对_FindResult不可见啊???
procedure T_FindRegi.Button1Click(Sender: TObject);
begin
mysql1:='select * from fa.register where 帐号='''+edit1.text+'''';
close;
_findresult.show;
end;procedure T_FindResult.FormCreate(Sender: TObject);
begin
query1.Close;
query1.SQL.Clear;
query1.sql.Add(findregi.mysql1);
query1.Open;
end;
但不可以用这种方法,因为我有很多的checkbox是对查询条件的选择,我得动态决定哪个查询条件是要加入的。实际上FORM1上还有很多的edit,所以我不能直接把某个edit里的值就赋给SQL语句了!而必须利用变量
但我得反应一段时间。。唉呀,怎么问题返回来了。我的确是这样像你所说的那样做的,但问题是如何传递这个condition变量值!!!