为窗体TForm1增加了属性,但是object inspector中显示不出来type
TForm1 = class(TForm)
private
{ Private declarations }
FqrySPXX:TADOQuery;
public
{ Public declarations }
published
property qrySPXX:TADOQuery read FqrySPXX write SetQrySPXX;
end; procedure TForm1.SetQrySPXX(Value:TADOQuery);
begin
FqrySPXX := Value;
end;
TForm1 = class(TForm)
private
{ Private declarations }
FqrySPXX:TADOQuery;
public
{ Public declarations }
published
property qrySPXX:TADOQuery read FqrySPXX write SetQrySPXX;
end; procedure TForm1.SetQrySPXX(Value:TADOQuery);
begin
FqrySPXX := Value;
end;
修改成procedure呀
.bpl包吗
我不想再OUT了
怎么个情况
shuihan20e你的那个“星星”难道也是“偷”来的
有form1,form2,form3三个窗体,
form3是一个编辑基础资料的窗体,form3上使用了很多的cx数据绑定组件,
form3上的这些数据绑定组件是绑定到form1的ADOQuery上呢还是绑定到form2的adoquery上呢
这需要根据用户的操作来确定
也就是说,当form1调用form3时,form3上的组件就绑定到form1的adoquery上,当form2调用form3时,form3上的组件就绑定到form2的adoquery上,
如果要在设计窗体时就为form3的数据绑定组件指定adoquery,那么就需要在据绑定组件的object inspector的中设置数datasource属性
也就是需要从下拉解表中选择一个adoquery相关的dataset,如果手工输入一个下拉列表中不存在的内容则会当场报错“Invalid Property value”
为此,我计划在form3窗体类中增加了一个名为qrySPXX的adoquery属性,然后从数据绑定组建的Object inspector中的datasource中的下拉列表中选择qrySPXX(相关的dataset)
bpl好像是delphi特色的dll吧
方法1:在form3里面定义一个函数,用来创建、初始化、显示form3,其它Form中需要使用这个Form的时候来调用。
procedure ShowForm3(ADataSet: TADOQuery);var
Form3: TForm3;implementationprocedure ShowForm3(ADataSet: TADOQuery);
var
i: Integer;
begin
if not Assigned(Form3) then
Form3 := TForm3.Create(Application);
for i:=0 to Form3.ComponentCount-1 do
begin
if (Form3.Components[i] is TDataSource) then
(Form3.Components[i] as TDataSource).DataSet := ADataSet;
end;
Form3.ShowModal;
end;方法2:创建一个DataModule,然后把所有的ADOConnection,ADOQuery等统统放到这里作为一个公用模块,然后在每个Unit的Interface部分uses它,这样,在设计期的Object Inspector面板中就可以找到你需要的那个ADOQuery了。希望我提出的两个方法能给你一些帮助……
你提供的方法二的思路不错,
但方法一有些效率低,并且设计时也不能将adoqury出现在object inspector中
你提供的方法二,是多个窗体公用datamodule中一个adoqury,
这样的话,多个窗体的操作会发生冲突,且这种冲突不好控制和处理。