如何写这样的公用函数????

sundayboys 2002-05-21 11:08:44
说不清楚,写个简单例子:
...
type
TForm1 = class (TForm)
ListView: TListView;
...
Procedure FormCreate(Sender: TObject);
public
function LoadData:Boolean;
end;
...

Function TForm1.LoadData: Boolean;
Begin
ListView.Items.BeginUpdate;
ListView.Items.EndUpdate;
End;

Procedure TForm1.FormCreate(Sender: TObject);
Begin
LoadData;
End;

结果运行的时候报告av错误,如果将LoadData函数中的代码直接写到FormCreate中就没有问题,和Focus讨论半天也没有什么好办法,不知道大家有没有好办法,最后能写成独立的函数,要不然重复代码很多,量也很大:(
...全文
34 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
很土 2002-05-21
  • 打赏
  • 举报
回复
代码没有问题,除非你犯低级错误,如:Form1.ListView....
佛的光辉 2002-05-21
  • 打赏
  • 举报
回复
没有问题啊
王集鹄 2002-05-21
  • 打赏
  • 举报
回复
我测试了一下你给的代码没有出现异常呀?给个可以出现异常的来调试吧!
王集鹄 2002-05-21
  • 打赏
  • 举报
回复
我测试了,可以呀?你把具体能出异常的代码贴出来,好调试
chongyang 2002-05-21
  • 打赏
  • 举报
回复
这是建立顺序的问题
如果你一定要这样做,解决方法有两个,
1。OldCreateOrder 设置为True
2。就不告诉你!
开个玩笑了,第二个比较麻烦!
--The end;
sundayboys 2002-05-21
  • 打赏
  • 举报
回复
同样不行,跟踪进去,发现在函数LoadData中Form1=nil!!!
taidy 2002-05-21
  • 打赏
  • 举报
回复
我这里不报错的,同意lxpbuaa(桂枝香在故国晚秋) 的观点,写进FormShow里试试
Delphi_Li 2002-05-21
  • 打赏
  • 举报
回复
BeginUpdate和EndUpdate方法与显示是有一定关系的,所以不要写在OnCreate事件中!最好写在OnShow事件中,但只要注意,在Onshow事件中一定要加一个标志,否则在窗口从最小化还原时,也要处理以上的内容!
bear_c 2002-05-21
  • 打赏
  • 举报
回复
你的这段代码没有问题啊
lxpbuaa 2002-05-21
  • 打赏
  • 举报
回复
你写到FormShow中应该可以的。


—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”等字样,删除它们';
I.Desire := '加不加分随你';
—————————————————————————————————


       
bluemeteor 2002-05-21
  • 打赏
  • 举报
回复
up
sundayboys 2002-05-21
  • 打赏
  • 举报
回复
我是犯了一个低级错误,调用的时候写成Form1.LoadData了:(将Form1去掉就ok了。结帖。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧