⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uclient.pas

📁 一个很好的学习例子,有需要的请下载研究,
💻 PAS
字号:
unit uClient;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, TransInterface, PrEximTrans, ComCtrls, ExtCtrls, PrEximClasses;

type
  TfrmMain = class(TForm)
    FunctionsList: TListBox;
    Panel1: TPanel;
    pgCtrl: TPageControl;
    tbsLogin: TTabSheet;
    tbsL: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    Panel2: TPanel;
    btnExecute: TButton;
    lbeUsername: TLabeledEdit;
    lbePassword: TLabeledEdit;
    mmProfile: TMemo;
    lbeStreamFile: TLabeledEdit;
    TabSheet1: TTabSheet;
    lbeHost: TLabeledEdit;
    Label1: TLabel;
    lbePort: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FunctionsListClick(Sender: TObject);
    procedure btnExecuteClick(Sender: TObject);
  private
    fTcpClient: TImageTransClient;
    fClient: TScanClient;

    procedure DoLogin;
    procedure DoLogout;
    procedure DoGetUserProfile;
    procedure DoSend;
    procedure DoConnect;
    procedure DoSendFolder;
    procedure DoGetAllFaxes;
    procedure DoCreateFolder;
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  fTcpClient := TImageTransClient.Create(Owner);
  fClient := TScanClient.Create(Owner);

  fClient.Transport := fTcpClient;
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if fClient.Transport.Connected then fClient.Logout;
  FreeAndNil(fTcpClient);
  FreeAndNil(fClient);
end;

procedure TfrmMain.FunctionsListClick(Sender: TObject);
begin
  pgCtrl.ActivePageIndex := FunctionsList.ItemIndex;
end;

procedure TfrmMain.btnExecuteClick(Sender: TObject);
begin
  case FunctionsList.ItemIndex of
    0: DoLogin;
    1: DoLogout;
    2: DoGetUserProfile;
    3: DoSend;
    4: DoConnect;
    5: DoSendFolder;
    6: DoGetAllFaxes;
    7: DoCreateFolder;
  end;
end;

procedure TfrmMain.DoGetUserProfile;
var
  AStream: TMemoryStream;
begin                            
  AStream := TMemoryStream.Create;
  try
    fClient.GetUserProfile(AStream);
    AStream.Position := 0;
    mmProfile.Lines.LoadFromStream(AStream);
  finally
    AStream.Free;
  end;
end;

procedure TfrmMain.DoLogin;
begin
  if not fClient.Transport.Connected then fClient.Transport.Connect();

  fClient.Login(lbeUsername.Text, lbePassword.Text)
end;

procedure TfrmMain.DoLogout;
begin
  fClient.Logout;
end;

procedure TfrmMain.DoSend;
var
  AStream: TFileStream;
begin
  AStream := TFileStream.Create(lbeStreamFile.Text, fmOpenRead);
  try
    fTcpClient.Send(AStream);
  finally
    AStream.Free;
  end;
end;

procedure TfrmMain.DoConnect;
begin
  if fClient.Transport.Connected then fClient.Logout;
  fClient.Transport.Disconnect;
  fClient.Transport.Host := lbeHost.Text;
  fClient.Transport.Port := StrToIntDef(lbePort.Text, 5100);
  
  fClient.Transport.Connect();
end;

procedure TfrmMain.DoSendFolder;
var
  AFolder: TFolder;
begin
  AFolder := TFolder.Create;
  try
    with AFolder.Keys.Add do
    begin
      Name:='Test Folder';
      Value:='Test';
    end;
    fClient.SendFolder(AFolder);
  finally
    AFolder.Free;
  end;
end;

procedure TfrmMain.DoGetAllFaxes;
var
  AFaxes: TPageList;
begin
  AFaxes := TPageList.Create;
  try
    AFaxes.PageStoredPath := 'd:\';
    fClient.GetAllFaxes(AFaxes);
    ShowMessage(Format('Faxes count=%d',[AFaxes.Count]));

  finally
    AFaxes.Free;
  end;
end;

procedure TfrmMain.DoCreateFolder;
var
  AFld: TFolder;
begin
  AFld := TFolder.Create;
  try
    with AFld.Keys.Add do
      Name := 'CreateFolder';
    fClient.CreateFolder(AFld);
  finally
    AFld.Free;
  end;

end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -