如题,我想实现这样的一个功能:主程序中有一个pagecontrol,然后tidtcpserver的onexecute事件中,监听到某个命令,动态为主程序的pagecontrol创建一个tabsheet,并在这个新创建的tabsheet上动态添加一个控件,请问这样的代码有什么需要注意的地方吗? 为什么我写的代码运行时会卡死呢?
下面是我写的代码:
procedure TFrmServerMain.IdServerExecute(AThread: TIdPeerThread);
var
clientdata:TBidPack;//自定义的record
begin
if not AThread.Terminated and AThread.Connection.Connected then
begin
with AThread.Connection do
begin
try
AThread.Connection.ReadBuffer(clientdata,SizeOf(clientdata));
AddXM(clientdata);
finally
Disconnect;
end;
end;
end;
end;procedure TFrmServerMain.AddXM(data:TBidPack);
var
temp:TListItem;
NewPage:TTabSheet;
NewLsView:TListView;
begin
with xmLsView do
begin
temp:=Items.Add;
temp.Caption:=IntToStr(Items.Count);
temp.SubItems.Add(data.PrjID);
temp.SubItems.Add(data.PrjName);
temp.SubItems.Add('0');
end;
NewPage:=TTabSheet.Create(self);
NewPage.PageControl:=MainPageCtl;
NewPage.Caption:=data.PrjName;
NewPage.Visible:=True;
MainPageCtl.ActivePageIndex:=1;
NewLsView:=TListView.Create(nil);
NewLsView.Parent:=NewPage;
end;谢谢过路的高手回复!!! 我是新手,现在不了解出现了什么问题!!!
下面是我写的代码:
procedure TFrmServerMain.IdServerExecute(AThread: TIdPeerThread);
var
clientdata:TBidPack;//自定义的record
begin
if not AThread.Terminated and AThread.Connection.Connected then
begin
with AThread.Connection do
begin
try
AThread.Connection.ReadBuffer(clientdata,SizeOf(clientdata));
AddXM(clientdata);
finally
Disconnect;
end;
end;
end;
end;procedure TFrmServerMain.AddXM(data:TBidPack);
var
temp:TListItem;
NewPage:TTabSheet;
NewLsView:TListView;
begin
with xmLsView do
begin
temp:=Items.Add;
temp.Caption:=IntToStr(Items.Count);
temp.SubItems.Add(data.PrjID);
temp.SubItems.Add(data.PrjName);
temp.SubItems.Add('0');
end;
NewPage:=TTabSheet.Create(self);
NewPage.PageControl:=MainPageCtl;
NewPage.Caption:=data.PrjName;
NewPage.Visible:=True;
MainPageCtl.ActivePageIndex:=1;
NewLsView:=TListView.Create(nil);
NewLsView.Parent:=NewPage;
end;谢谢过路的高手回复!!! 我是新手,现在不了解出现了什么问题!!!
cmm:Integer;
From:string[36]; //guid
PrjID:string[36];
PrjName:string[200];
BidID:String[36];
BidName:string[200];
end;