ClientForm.pas
上传用户:fh681027
上传日期:2022-07-23
资源大小:1959k
文件大小:4k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit ClientForm;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   StdCtrls, ScktComp, DBCtrls, ExtCtrls, Db, Mask, DBTables;
  6. type
  7.   TForm1 = class(TForm)
  8.     ClientSocket1: TClientSocket;
  9.     EditServer: TEdit;
  10.     Server: TLabel;
  11.     Table1: TTable;
  12.     Table1Company: TStringField;
  13.     Table1CompID: TFloatField;
  14.     Table1Address: TStringField;
  15.     Table1State: TStringField;
  16.     Table1Country: TStringField;
  17.     Table1Email: TStringField;
  18.     Table1Contact: TStringField;
  19.     Label1: TLabel;
  20.     DBEdit1: TDBEdit;
  21.     DataSource1: TDataSource;
  22.     Label2: TLabel;
  23.     Label3: TLabel;
  24.     DBEdit3: TDBEdit;
  25.     Label4: TLabel;
  26.     DBEdit4: TDBEdit;
  27.     Label5: TLabel;
  28.     DBEdit5: TDBEdit;
  29.     Label6: TLabel;
  30.     DBEdit6: TDBEdit;
  31.     Label7: TLabel;
  32.     DBEdit7: TDBEdit;
  33.     DBNavigator1: TDBNavigator;
  34.     DBText1: TDBText;
  35.     btnSendAll: TButton;
  36.     lbLog: TListBox;
  37.     BtnStop: TButton;
  38.     BtnDelete: TButton;
  39.     Label8: TLabel;
  40.     Bevel1: TBevel;
  41.     procedure btnSendAllClick(Sender: TObject);
  42.     procedure ClientSocket1Connect(Sender: TObject;
  43.       Socket: TCustomWinSocket);
  44.     procedure ClientSocket1Disconnect(Sender: TObject;
  45.       Socket: TCustomWinSocket);
  46.     procedure FormCreate(Sender: TObject);
  47.     procedure BtnStopClick(Sender: TObject);
  48.     procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
  49.     procedure BtnDeleteClick(Sender: TObject);
  50.   private
  51.     { Private declarations }
  52.   public
  53.     fWaiting: Boolean;
  54.   end;
  55. var
  56.   Form1: TForm1;
  57. implementation
  58. {$R *.DFM}
  59. procedure TForm1.btnSendAllClick(Sender: TObject);
  60. var
  61.   Data: TStringList;
  62.   I: Integer;
  63. begin
  64.   // activate the connection
  65.   ClientSocket1.Address := EditServer.Text;
  66.   ClientSocket1.Active := True;
  67.   Application.ProcessMessages;
  68.   // save database data in a string list
  69.   Data := TStringList.Create;
  70.   try
  71.     table1.First;
  72.     while not Table1.Eof do
  73.     begin
  74.       // if the record is still not logged
  75.       if Table1CompID.IsNull or (Table1CompId.AsInteger = 0) then
  76.       begin
  77.         lbLog.Items.Add ('Sending ' + Table1Company.AsString);
  78.         Data.Clear;
  79.         // create strings with structure "FieldName=Value"
  80.         for I := 0 to Table1.FieldCount - 1 do
  81.           Data.Values [Table1.Fields[I].FieldName] :=
  82.             Table1.Fields [I].AsString;
  83.         // send the record
  84.         ClientSocket1.Socket.SendText (Data.Text);
  85.         // wait for reponse
  86.         fWaiting := True;
  87.         while fWaiting do
  88.           Application.ProcessMessages;
  89.       end;
  90.       Table1.Next;
  91.     end;
  92.   finally
  93.     // free the data and close the connection
  94.     Data.Free;
  95.     ClientSocket1.Active := False;
  96.   end;
  97. end;
  98. procedure TForm1.ClientSocket1Connect(Sender: TObject;
  99.   Socket: TCustomWinSocket);
  100. begin
  101.   Caption := 'Connected';
  102. end;
  103. procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  104.   Socket: TCustomWinSocket);
  105. begin
  106.   Caption := 'Disconnected';
  107. end;
  108. procedure TForm1.FormCreate(Sender: TObject);
  109. begin
  110.   fWaiting := False;
  111.   // use a table in the current directory
  112.   Table1.DatabaseName :=
  113.     ExtractFilePath (Application.ExeName);
  114.   // create it if it doesn't exist
  115.   if not Table1.Exists then
  116.     Table1.CreateTable;
  117.   Table1.Active := True;
  118. end;
  119. procedure TForm1.BtnStopClick(Sender: TObject);
  120. begin
  121.   fWaiting := False;
  122. end;
  123. procedure TForm1.ClientSocket1Read(Sender: TObject;
  124.   Socket: TCustomWinSocket);
  125. begin
  126.   if fWaiting then
  127.   begin
  128.     Table1.Edit;
  129.     Table1CompId.AsString := Socket.ReceiveText;
  130.     Table1.Post;
  131.     lbLog.Items.Add (Table1Company.AsString +
  132.       ' logged as ' + Table1CompId.AsString);
  133.     fWaiting := False;
  134.   end;
  135. end;
  136. procedure TForm1.BtnDeleteClick(Sender: TObject);
  137. begin
  138.   table1.First;
  139.   while not Table1.Eof do
  140.   begin
  141.     // if the record is still logged
  142.     if not Table1CompID.IsNull and (Table1CompId.AsInteger <> 0) then
  143.       Table1.Delete;
  144.     Table1.Next;
  145.   end;
  146. end;
  147. end.