如何写这样的公用函数????(50分)

  • 主题发起人 主题发起人 MY-FAQ
  • 开始时间 开始时间
M

MY-FAQ

Unregistered / Unconfirmed
GUEST, unregistred user!
说不清楚,写个简单例子:
...
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讨论半天也没有什么好办法,不知道大家有没有好办法,最后能写成独立的函数,
要不然重复代码很多,量也很大:(
 
运行下没发现什么问题啊??????
 
我这样试了试,没有问题,看来问题出在BeginUpdate和EndUpdate中间?,把中间的部分贴出来!
function TForm2.LoadData:boolean;
begin
with TreeView1 do
begin
Items.BeginUpdate;
Items.Add(nil,'hello');
Items.EndUpdate;
end
// with
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
LoadData;
end;
 
我也试了,没问题.
 
给你一个例子,只要传入要调用的窗体就行
该窗体只能有一个listview,如有两个listview,可以设置它的
tag属性来区别。这个函数可以有多个窗体共同调用
可以节省很多代码
Function LoadData(CurrentForm:Tform): Boolean;
var
i:integer;
Begin
for i:=0 to CurrentForm.componentcount-1 do
if Currentform.components is TlistView then
//如果有多个 listview,可以设定tag属性
if Tlistview(currentForm.components).tag=10 then
begin
TListView(currentform.components).Items.BeginUpdate;
....
TListView(currentform.components).Items.EndUpdate;
end;
End;
 
是我调用代码在项目文件中写错了,谢谢大家。
 
后退
顶部