home *** CD-ROM | disk | FTP | other *** search
/ Delphi 5 for Professionals / DELPHI5.iso / Runimage / Delphi50 / Demos / FastNet / Strm / strmdem.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-08-11  |  5.3 KB  |  175 lines

  1. ///////////////////////////////////////////////////////////////////////////
  2. //                                                                       //
  3. // Copyright ⌐ 1997-1998, NetMasters, L.L.C                              //
  4. //  - All rights reserved worldwide. -                                   //
  5. //  Portions may be Copyright ⌐ Inprise.                                 //
  6. //                                                                       //
  7. // Stream Client/Server Demo Unit 1:  (UNIT1.PAS)                        //
  8. //                                                                       //
  9. // DESCRIPTION:                                                          //
  10. //                                                                       //
  11. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY //
  12. // KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE   //
  13. // IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR //
  14. // PURPOSE.                                                              //
  15. //                                                                       //
  16. ///////////////////////////////////////////////////////////////////////////
  17. //
  18. // Revision History
  19. //
  20. //                                                                       //
  21. ///////////////////////////////////////////////////////////////////////////
  22. unit strmdem;
  23.  
  24. interface
  25.  
  26. uses
  27.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, NMStrm,
  28.   ExtDlgs, StdCtrls, Psock, ExtCtrls, ComCtrls;
  29.  
  30. type
  31.   TForm1 = class(TForm)
  32.     Panel1: TPanel;
  33.     Image1: TImage;
  34.     Button1: TButton;
  35.     Button2: TButton;
  36.     NMStrm1: TNMStrm;
  37.     NMStrmServ1: TNMStrmServ;
  38.     Edit1: TEdit;
  39.     Label1: TLabel;
  40.     Edit2: TEdit;
  41.     Label2: TLabel;
  42.     OpenPictureDialog1: TOpenPictureDialog;
  43.     StatusBar1: TStatusBar;
  44.     procedure Button1Click(Sender: TObject);
  45.     procedure NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
  46.       strm: TStream);
  47.     procedure Button2Click(Sender: TObject);
  48.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  49.     procedure NMStrm1MessageSent(Sender: TObject);
  50.     procedure NMStrm1Connect(Sender: TObject);
  51.     procedure NMStrm1Disconnect(Sender: TObject);
  52.     procedure NMStrm1HostResolved(Sender: TComponent);
  53.     procedure NMStrm1Status(Sender: TComponent; Status: String);
  54.     procedure NMStrm1PacketSent(Sender: TObject);
  55.     procedure NMStrm1InvalidHost(var handled: Boolean);
  56.     procedure NMStrm1ConnectionFailed(Sender: TObject);
  57.     procedure NMStrmServ1ClientContact(Sender: TObject);
  58.     procedure NMStrmServ1Status(Sender: TComponent; Status: String);
  59.   private
  60.     { Private declarations }
  61.   public
  62.     { Public declarations }
  63.   end;
  64.  
  65. var
  66.   Form1: TForm1;
  67.  
  68. implementation
  69.  
  70. {$R *.DFM}
  71.  
  72. procedure TForm1.Button1Click(Sender: TObject);
  73. var
  74.   MyFStream: TFileStream;
  75. begin
  76.   If OpenPictureDialog1.Execute then
  77.   Begin
  78.     NMStrm1.Host := Edit2.Text;
  79.     NMStrm1.FromName := Edit1.Text;
  80.     MyFStream := TFileStream.Create(OpenPictureDialog1.FileName, fmOpenRead);
  81.     try
  82.       NMStrm1.PostIt(MyFStream);
  83.     finally
  84.       MyFStream.Free;
  85.     end;
  86.   end;  
  87. end;
  88.  
  89. procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;
  90.   strm: TStream);
  91. var
  92.   MyFStream: TFileStream;
  93. begin
  94.   If FileExists('.\tmp.bmp') then DeleteFile('.\tmp.bmp');
  95.   MyFStream := TFileStream.Create('.\tmp.bmp', fmCreate);
  96.   try
  97.     MyFStream.CopyFrom(strm, strm.size);
  98.   finally
  99.     MYFStream.Free;
  100.   end;
  101. end;
  102.  
  103. procedure TForm1.Button2Click(Sender: TObject);
  104. begin
  105.   Image1.Picture.LoadFromFile('.\tmp.bmp');
  106. end;
  107.  
  108. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  109. begin
  110.   If FileExists('.\tmp.bmp') then DeleteFile('.\tmp.bmp');
  111. end;
  112.  
  113. procedure TForm1.NMStrm1MessageSent(Sender: TObject);
  114. begin
  115.   ShowMessage('Stream Sent');
  116. end;
  117.  
  118. procedure TForm1.NMStrm1Connect(Sender: TObject);
  119. begin
  120.   StatusBar1.SimpleText := 'Connected';
  121. end;
  122.  
  123. procedure TForm1.NMStrm1Disconnect(Sender: TObject);
  124. begin
  125.   If StatusBar1 <> nil then
  126.     StatusBar1.SimpleText := 'Disconnected';
  127. end;
  128.  
  129. procedure TForm1.NMStrm1HostResolved(Sender: TComponent);
  130. begin
  131.   StatusBar1.SimpleText := 'Host Resolved';
  132. end;
  133.  
  134. procedure TForm1.NMStrm1Status(Sender: TComponent; Status: String);
  135. begin
  136.   If StatusBar1 <> nil then
  137.     StatusBar1.SimpleText := status;
  138. end;
  139.  
  140. procedure TForm1.NMStrm1PacketSent(Sender: TObject);
  141. begin
  142.   StatusBar1.SimpleText := IntToStr(NMStrm1.BytesSent)+' of '+IntToStr(NMStrm1.BytesTotal)+' sent';
  143. end;
  144.  
  145. procedure TForm1.NMStrm1InvalidHost(var handled: Boolean);
  146. var
  147.   TmpStr: String;
  148. begin
  149.   If InputQuery('Invalid Host!', 'Specify a new host:', TmpStr) then
  150.   Begin
  151.     NMStrm1.Host := TmpStr;
  152.     Handled := TRUE;
  153.   End;
  154. end;
  155.  
  156. procedure TForm1.NMStrm1ConnectionFailed(Sender: TObject);
  157. begin
  158.   ShowMessage('Connection Failed');
  159. end;
  160.  
  161. procedure TForm1.NMStrmServ1ClientContact(Sender: TObject);
  162. begin
  163.   NMStrmServ1.ReportLevel := Status_Basic;
  164.   NMStrmServ1.TimeOut := 90000;
  165.   StatusBar1.SimpleText := 'Client connected';
  166. end;
  167.  
  168. procedure TForm1.NMStrmServ1Status(Sender: TComponent; Status: String);
  169. begin
  170.   If StatusBar1 <> nil then
  171.     StatusBar1.SimpleText := status;
  172. end;
  173.  
  174. end.
  175.