我事初学着,用的是D7,想编写个SOCKET CLIENT端程序。再网上复制了如下代码。然后在D7里新建一个APPLICATION,这时出现了一个空FORM,在UNIT1里,把网上的代码复制过去。那么能否自动的在FORM上产生对应的控件呢?
unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient;type
  TForm1 = class(TForm)
    IdTCPClient1: TIdTCPClient;
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Button2: TButton;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure IdTCPClient1Connected(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure IdTCPClient1Disconnected(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  td:Dword;
  doRead:boolean;implementation{$R *.dfm}procedure ReadThread;
var
  s:String;
begin
  form1.Memo1.Lines.Add('Begin reading...');
  s:=Form1.IdTCPClient1.ReadLn;
  while doRead do
  begin
    s:=Form1.IdTCPClient1.ReadLn;
    form1.Memo1.Lines.Add(s);
    sleep(100);
  end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
  IdTCPClient1.Connect(3000);
  doRead:=true;
  CreateThread(nil,0,@ReadThread,nil,0,td);
end;procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
  Memo1.Lines.Clear;
  Memo1.Lines.Add('connected to server');
end;procedure TForm1.Button2Click(Sender: TObject);
begin
  IdTCPClient1.WriteLn(Edit1.Text);
end;procedure TForm1.IdTCPClient1Disconnected(Sender: TObject);
begin
  ExitThread(td);
  Memo1.Lines.Add('disConnected from server');
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  doRead:=false;
  IdTCPClient1.Disconnect;
  ExitThread(td);
end;procedure TForm1.Button3Click(Sender: TObject);
begin
//  IdTCPClient1.Disconnect;
  doRead:=false;
end;end.