Delphi4 的 Procedure 调用控件遇到的问题(200分)

  • 主题发起人 主题发起人 小咪
  • 开始时间 开始时间

小咪

Unregistered / Unconfirmed
GUEST, unregistred user!
我在DELPHI4下,在一Form中编写了一个自定义的procedure,在这个Procedure中调用了本Form中的一个Table控件,程序编译通过,但实际一运行到此调用处,即出现如下错误:
"Access violation at address 00498c37 in module 'main.exe'.Read of address FFFFFFFF."
看意思好象不能存取这个控件Table.
顺便问一下,在自定义的Proc中,为什么即便是本Form中的Control,若不指定Form则不能存取此Control(即以Form.Control的格式).
 
把自定义的procedure作为TForm的一个方法即可解决你说的问题。如:

type TMyForm=class(TForm)
.
.
private
procedure YourProcedure1;
public
procedure YourProcedure2;
end;
然后在implementation部分
procedure TMyForm.YourProcedure1;
begin
.
.
.
end;

procedure TMyForm.YourProcedure2;
begin
.
.
.
end;

注意:在private部分声明的procedure/function仅能在本Form中使用,
在public部分声明的procedure/function能在所有引用本Form的Form中使用.
 
1。关于你的程序出现的错误,你只要单步执行程序,一般找到出错行后,都可自行解决问题,你所说的错误有可能是指针没赋值,第三方控件的释放问题....。如还不能
解决,请将部分代码和说明贴上来,大家讨论讨论。
2。自定义的proc如不放入form类定义中,当然须加前缀用以介定,在form类中声明
的proc或func只不过self已指向form,故可省略form.
 
一、考虑你的table的动态生成的还是静态生成的!
二、把table设置为public试一下
 
你们的提供的方法我都试过了,还是不行,我把源程序打包EMAIL给你们,帮我看看。
谁还愿意帮助我,请与我联系,我可以把源程序给他。
 
也发一个让俺瞅瞅, cfo@163.net.
 
你可能是调用了构件的私有属性吧,要不然就是输入不标准。(类型不对)
 
我也来看看: yicai@163.net
 
修改过的GETDATA.pas已给你寄了。
 
wuyi:
能不能说一下,到底是怎么回是。
以后大家就不用犯同样的错误了 *_*
 
十分感谢各位网友的大力帮助。Menxin和Mindong的答案虽然对,但当时
解释有点模糊。还是Wuyi最终让我明白了,在DELPHI中自定义的Procedure
必须以Form的Method方式出现。
 
后退
顶部