以下代码可用:
procedure TLyxxfrm.FormCreate(Sender: TObject);
var i,j,l:Integer;
dd:TtreeNode; //树的节点
begin
tv.Items.Clear;
tv.Items.Add(nil,'我的同事');
tv.items[0].DeleteChildren;
with data do
begin
dltv_SP.close;
dltv_SP.UnPrepare;
dltv_SP.ParamByName('@flag').AsString:='SELECTZXLB';
dltv_SP.Prepare;
dltv_SP.open;
dltv_SP.First;
I:=0;
j:=0;
l:=0;
dd:=tv.items[0];
while not dltv_SP.eof do //**************************在线离线同事
begin
tv.Items.AddChild(dd,dltv_SP.fieldbyname('zxqk').asstring);
xltv_SP.close;
xltv_SP.UnPrepare;
xltv_SP.ParamByName('@flag').AsString:='SELECTALL';
xltv_SP.parambyname('@DLBS').asstring:=dltv_SP.fieldbyname('dlbs').Value;
dldm[i]:=dltv_SP.fieldbyname('dlbs').Value;
xltv_SP.prepare;
xltv_SP.open;
xltv_SP.first;
j:=j+1;
l:=0;
dd:=tv.Items[j];
tv.items[j].ImageIndex:=2;
while not xltv_SP.eof do
begin
xldm[i,l]:=xltv_SP.fieldbyname('dlbs').Value;
tv.Items.AddChild(dd,xltv_SP.fieldbyname('xm').asstring);
xltv_SP.next;
j:=j+1;
l:=l+1;
tv.items[j].ImageIndex:=3;
end;
dd:=tv.Items[0];
i:=i+1;
dltv_SP.Next;
end;
//**************************在线离线同事
//**************************留言同事
BEGIN
tv.Items.AddChild(dd,'留言同事');
lyxx_SP.close;
lyxx_SP.UnPrepare;
lyxx_SP.ParamByName('@flag').AsString:='SELECTLYXM';
lyxx_SP.ParamByName('@TOBH').AsString:=MainBH;
lyxx_SP.prepare;
lyxx_SP.open;
lyxx_SP.first;
// lyxx_LYXM:=lyxx_SP.FieldByName('LYXM').AsString; j:=j+1;
l:=0;
dd:=tv.Items[j];
tv.items[j].ImageIndex:=2;
while not lyxx_SP.eof do
begin
tv.Items.AddChild(dd,lyxx_SP.FieldByName('LYXM').asstring);
// tv.Items.AddChild(dd,lyxx_LYXM);
// tv.Items.AddChild(dd,lyxx_SP.FieldByName('FROMBH').asstring);
lyxx_SP.next;
j:=j+1;
l:=l+1;
tv.items[j].ImageIndex:=3;
end;
dd:=tv.Items[0];
i:=i+1;
lyxx_SP.Next;
END;
//**************************留言同事
{ //**************************所有同事 BEGIN
tv.Items.AddChild(dd,'所有同事');
xltv_SP.close;
xltv_SP.UnPrepare;
xltv_SP.ParamByName('@flag').AsString:='SELECT';
xltv_SP.prepare;
xltv_SP.open;
xltv_SP.first;
j:=j+1;
l:=0;
dd:=tv.Items[J];
tv.items[j].ImageIndex:=2;
while not xltv_SP.eof do
begin
tv.Items.AddChild(dd,xltv_SP.fieldbyname('xm').asstring);
xltv_SP.next;
j:=j+1;
l:=l+1;
tv.items[j].ImageIndex:=3;
end;
dd:=tv.Items[0];
i:=i+1;
dltv_SP.Next;
END; //**************************所有同事 } tv.items[0].expand(false);
xltv_SP.close;
dltv_SP.close;
lyxx_SP.Close;
end;
tv.Refresh;end;但刷新按钮写为:
Begin
FormCreate(Sender);
end;点击刷新时整个工程自动关闭。这是为什么??
还望大虾们多多指点!谢了!
procedure TLyxxfrm.FormCreate(Sender: TObject);
var i,j,l:Integer;
dd:TtreeNode; //树的节点
begin
tv.Items.Clear;
tv.Items.Add(nil,'我的同事');
tv.items[0].DeleteChildren;
with data do
begin
dltv_SP.close;
dltv_SP.UnPrepare;
dltv_SP.ParamByName('@flag').AsString:='SELECTZXLB';
dltv_SP.Prepare;
dltv_SP.open;
dltv_SP.First;
I:=0;
j:=0;
l:=0;
dd:=tv.items[0];
while not dltv_SP.eof do //**************************在线离线同事
begin
tv.Items.AddChild(dd,dltv_SP.fieldbyname('zxqk').asstring);
xltv_SP.close;
xltv_SP.UnPrepare;
xltv_SP.ParamByName('@flag').AsString:='SELECTALL';
xltv_SP.parambyname('@DLBS').asstring:=dltv_SP.fieldbyname('dlbs').Value;
dldm[i]:=dltv_SP.fieldbyname('dlbs').Value;
xltv_SP.prepare;
xltv_SP.open;
xltv_SP.first;
j:=j+1;
l:=0;
dd:=tv.Items[j];
tv.items[j].ImageIndex:=2;
while not xltv_SP.eof do
begin
xldm[i,l]:=xltv_SP.fieldbyname('dlbs').Value;
tv.Items.AddChild(dd,xltv_SP.fieldbyname('xm').asstring);
xltv_SP.next;
j:=j+1;
l:=l+1;
tv.items[j].ImageIndex:=3;
end;
dd:=tv.Items[0];
i:=i+1;
dltv_SP.Next;
end;
//**************************在线离线同事
//**************************留言同事
BEGIN
tv.Items.AddChild(dd,'留言同事');
lyxx_SP.close;
lyxx_SP.UnPrepare;
lyxx_SP.ParamByName('@flag').AsString:='SELECTLYXM';
lyxx_SP.ParamByName('@TOBH').AsString:=MainBH;
lyxx_SP.prepare;
lyxx_SP.open;
lyxx_SP.first;
// lyxx_LYXM:=lyxx_SP.FieldByName('LYXM').AsString; j:=j+1;
l:=0;
dd:=tv.Items[j];
tv.items[j].ImageIndex:=2;
while not lyxx_SP.eof do
begin
tv.Items.AddChild(dd,lyxx_SP.FieldByName('LYXM').asstring);
// tv.Items.AddChild(dd,lyxx_LYXM);
// tv.Items.AddChild(dd,lyxx_SP.FieldByName('FROMBH').asstring);
lyxx_SP.next;
j:=j+1;
l:=l+1;
tv.items[j].ImageIndex:=3;
end;
dd:=tv.Items[0];
i:=i+1;
lyxx_SP.Next;
END;
//**************************留言同事
{ //**************************所有同事 BEGIN
tv.Items.AddChild(dd,'所有同事');
xltv_SP.close;
xltv_SP.UnPrepare;
xltv_SP.ParamByName('@flag').AsString:='SELECT';
xltv_SP.prepare;
xltv_SP.open;
xltv_SP.first;
j:=j+1;
l:=0;
dd:=tv.Items[J];
tv.items[j].ImageIndex:=2;
while not xltv_SP.eof do
begin
tv.Items.AddChild(dd,xltv_SP.fieldbyname('xm').asstring);
xltv_SP.next;
j:=j+1;
l:=l+1;
tv.items[j].ImageIndex:=3;
end;
dd:=tv.Items[0];
i:=i+1;
dltv_SP.Next;
END; //**************************所有同事 } tv.items[0].expand(false);
xltv_SP.close;
dltv_SP.close;
lyxx_SP.Close;
end;
tv.Refresh;end;但刷新按钮写为:
Begin
FormCreate(Sender);
end;点击刷新时整个工程自动关闭。这是为什么??
还望大虾们多多指点!谢了!
之间的代码不能够同时调用,只能够有一个存在时才生效,不懂! //**************************留言同事
BEGIN
tv.Items.AddChild(dd,'留言同事');
lyxx_SP.close;
lyxx_SP.UnPrepare;
lyxx_SP.ParamByName('@flag').AsString:='SELECTLYXM';
lyxx_SP.ParamByName('@TOBH').AsString:=MainBH;
lyxx_SP.prepare;
lyxx_SP.open;
lyxx_SP.first; j:=j+1;
l:=0;
dd:=tv.Items[j];
tv.items[j].ImageIndex:=2;
while not lyxx_SP.eof do
begin
tv.Items.AddChild(dd,lyxx_SP.FieldByName('LYXM').asstring);('FROMBH').asstring);
lyxx_SP.next;
j:=j+1;
l:=l+1;
tv.items[j].ImageIndex:=3;
end;
dd:=tv.Items[0];
i:=i+1;
lyxx_SP.Next;
END;
//**************************留言同事
{ //**************************所有同事 BEGIN
tv.Items.AddChild(dd,'所有同事');
xltv_SP.close;
xltv_SP.UnPrepare;
xltv_SP.ParamByName('@flag').AsString:='SELECT';
xltv_SP.prepare;
xltv_SP.open;
xltv_SP.first;
j:=j+1;
l:=0;
dd:=tv.Items[J];
tv.items[j].ImageIndex:=2;
while not xltv_SP.eof do
begin
tv.Items.AddChild(dd,xltv_SP.fieldbyname('xm').asstring);
xltv_SP.next;
j:=j+1;
l:=l+1;
tv.items[j].ImageIndex:=3;
end;
dd:=tv.Items[0];
i:=i+1;
dltv_SP.Next;
END; //**************************所有同事 }
这样:tv.Refresh;好象不行。
tv.Items.Add(nil,'我的同事');
tv.items[0].DeleteChildren;这都有啊