我在form1中定义了一个全局的函数,与几个全局的变量,在这个全局函数中
调用了这个全局变量。都是在pubulic下写的。
具体问题如下:
在form1中定义了一个名为main的全局函数 和 名为ok的全局变量,string型, 先调用的是form2,在form2中让ok:='1',然后form2就释放了。
当我在form3中调用main的时候,ok却为空了,这是为什么?
还有个问题,我在form1,form2和form3中都有一个按钮,名都为button1,
在main函数中我把button1.enabled:=false;
我的目的是,
当form1调用main的时候把form1的button1.enabled:=false;
当form2调用main的时候把form2的button1.enabled:=false;
当form3调用main的时候把form3的button1.enabled:=false;
单每次都是把form1的button1.enabled:=false;以为函数是在form1中写的
如果要实现上面的功能,这个函数该怎么写。
先谢谢各位大家了。
调用了这个全局变量。都是在pubulic下写的。
具体问题如下:
在form1中定义了一个名为main的全局函数 和 名为ok的全局变量,string型, 先调用的是form2,在form2中让ok:='1',然后form2就释放了。
当我在form3中调用main的时候,ok却为空了,这是为什么?
还有个问题,我在form1,form2和form3中都有一个按钮,名都为button1,
在main函数中我把button1.enabled:=false;
我的目的是,
当form1调用main的时候把form1的button1.enabled:=false;
当form2调用main的时候把form2的button1.enabled:=false;
当form3调用main的时候把form3的button1.enabled:=false;
单每次都是把form1的button1.enabled:=false;以为函数是在form1中写的
如果要实现上面的功能,这个函数该怎么写。
先谢谢各位大家了。
解决方案 »
- delphi 如何打印文本文件
- Delphi开发嵌入式IE浏览器监控程序
- Fastreport 中强制换页怎么设置呀?谢谢了
- 小问题高分啊。会的来
- 请问一下有免费的分割mp3的命令行程序吗?或者分割的代码也可以
- GetVersion()在不同的window下,返回值各是什么
- 如何放大TListView中的Item 200410
- 救命呀,会vb和delphi的高手,请进呀---------------------再现等待
- 看过李维《delphi5。x分布式多层应用 系统篇》的大虾请进
- 编写计算器出现的问题
- 取经关于blob和元文件存取的问题
- 在Delphi中怎么用代码实现数据库的备份和恢复功能!
form.button1.enabled:=false;
这样就不会错了
在各个form调用main的时候用main(self.button1)
为什么在函数内调用的时候就变空了呢?
在各个form调用main的时候用main(self.button1)”
不好使。main(self.button1)调试都同不过。
你的说明看不出问题,请贴出代码
2.
//Form1中的main函数
function TForm1.main(sButton: TButton): Boolean;
begin
.....
sButton.Enabled:= False;
.....
end;//Form2中调用main
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.main(Self.Button1);
end;
怎么来通过这个变量来改变按钮的状态?
比如
var
buttonname:string;
begin
buttonname:='button1';
//怎么来通过buttonname来把button1.enabled:=false;
//不是直接写button1.enabled:=false;end;
怎么来通过这个变量来改变按钮的状态?
比如
var
buttonname:string;
begin
buttonname:='button1';
//怎么来通过buttonname来把button1.enabled:=false;
//不是直接写button1.enabled:=false;end;
怎么来通过这个变量来改变按钮的状态?
比如
var
buttonname:string;
begin
buttonname:='button1';
//怎么来通过buttonname来把button1.enabled:=false;
//不是直接写button1.enabled:=false;end;
----------------
在form1中定义了一个名为main的全局函数 和 名为ok的全局变量,string型, 先调用的是form2,在form2中让ok:='1',然后form2就释放了。
当我在form3中调用main的时候,ok却为空了,这是为什么?
--你将代码这样写:
在Form2中:Form1.ok:='1';然后在Form3中可以同样调用:value:=Form1.ok
-----------------
单每次都是把form1的button1.enabled:=false;以为函数是在form1中写的
如果要实现上面的功能,这个函数该怎么写。
--那是因为函数成为Form1的成员函数,当然只是调用其中的成员数据(button1.enabled,因为button1是form1的一个域嘛)了,你可以在你的任何单元或是项目文件中写上这个函数,如果牵涉到调用你前面提到的ok的值,那么OK这个值也要放在任何form之外。这样就做到了真正的全局数据,因为它们现在都是Application级的全局数据了,所有的单元都可以调用,并确全局函数将根据参数返回不同的东东了。
如:procedure Main(var a:tcompnent);
begin
if a is tbutton then
tbutton(a).enable:=false;
end;
调用时可以这样用:Main(form1.button1);
Main(form2.button1);
Main(form3.button1);以上只是一家之言,还没有在Delphi环境下试过,你试试,有问题可以Mail:
[email protected]
怎么来通过这个变量来改变按钮的状态?
比如
var
buttonname:string;
begin
buttonname:='button1';
//怎么来通过buttonname来把button1.enabled:=false;
//不是直接写button1.enabled:=false;end;
-----------------------------
你试试用FindComponent吧,如:
Button:=findcomponent(buttonname) as TButton;
Button.enabled:=false;
也可以遍历组件,如:
var i:integer;
for i:=0 to componentcount-1 do
begin
if component[i].name=buttonname then
TButton(component[i]).enabled:=false;
end;