Delphi独特的动态表单创建

时间:2016-11-26 21:57:56

标签: forms delphi dynamic chat creation

我在我的项目中使用多个表单。 (客户端服务器应用程序)我使用聊天但我有一些问题。

1-我的listview上有一个用户列表。我在这里打开新的聊天表格。

procedure CreateNewChat(User: String);
var
 ChatForm: TChatForm;
begin
 ChatForm:= TChatForm.Create(nil); 
 if assigned (ChatForm) then
  ChatForm.User:= User;
  Chat.Socket:= MySocket; // TClientSocket new Instance
  ChatForm.Show;
end;

///Chatform

procedure ParseData(Cmd:string);
begin
if Cmd <> '' then
 begin
  /// parsing...
 end;

新连接正在添加到列表视图中

var
  Item: TListItem;
  NewTempForm: TTempForm;
begin

  NewTempForm := tempForm.Create;
  Item := Listview.Items.Add;

  if User = '' then
    Exit;

  Item.Caption := User;
  Item.SubItems.Add('OK');
  Item.GroupId := GroupId;
  Item.SubItems.Objects[0] := NewTempForm;
end;

我的问题是从这里开始的。

1-如何根据用户检测表格?那么,如果两个或更高的形式是开放的,那么我如何在它们上显示收到的消息?因为我是动态创建的。我需要一个检测对象。

我试着像那样

 var
  tempForm: TTempForm; // this is an empty object class
  sTempStr: String;
begin
  if ListView.Selected <> nil then
  begin
    tempForm := TTempForm(ListView.Selected.SubItems.Objects[0]); // this is for unique form creation
    if tempForm.frmTasks = nil then // if there is not, create!
    begin
      tempForm.frmTasks := TfrmTasks.Create(nil);
    end; 

但我收到的消息显示在所有表格上。实际上应该只出现一种形式。 (哪位用户发送了它)

感谢。

0 个答案:

没有答案