Search Results for

    Show / Hide Table of Contents

    クライアント側(スレッド使用)

    \FastReport VCL Enterprise\Demos\ClientServer\Client\Advanced フォルダーには、この例のすべてのソース ファイルがあります。

    この例では、スレッドで TfrxReportClient コンポーネントを使用できる方法を示します。

    スレッド クラス:

    TfrxClientTestThread = class (TThread)
      protected
        procedure Execute; override;
      private
        CountRep: Integer;
        ErrorsCount: Integer;
        Log: TMemo;
        ThreadID: Integer;
        procedure AppendLog;
        procedure FinishLog;
      public
        Report: TfrxReportClient;
        constructor Create(C: TfrxServerConnection; RepName: String; Id: Integer; Rep: Integer; L: TMemo);
        destructor Destroy; override;
    end;
    

    TfrxClientTestThread クラスのコンストラクター:

    constructor TfrxClientTestThread.Create(C: TfrxServerConnection; RepName: String; Id: Integer; Rep: Integer; L: TMemo);
    begin
      inherited Create(True);
      FreeOnTerminate := False;
      ErrorsCount := 0;
      ThreadId := Id;
      CountRep := Rep;
      Log := L;
      Report := TfrxReportClient.Create(nil);
      Report.EngineOptions.ReportThread := Self;
      Report.Connection := C;
      Report.ReportName := RepName;
      Resume;
    end;
    

    TfrxClientTestThread.Execute メソッドは CountRep サーバーへ要求を送信します。実行結果のすべての情報は、AppendLog および FinishLog メソッドによって Memo1 に表示されます。

    procedure TfrxClientTestThread.Execute;
    var
      i: Integer;
    begin
      inherited;
      for i := 1 to CountRep do
      begin
        if Terminated then break;
        Report.PrepareReport;
        if not Terminated then
        begin
          Synchronize(AppendLog);
          ErrorsCount := ErrorsCount + Report.Errors.Count;
        end;
      end;
      Synchronize(FinishLog);
    end;
    

    このプログラムを開始する前に、前述のサーバー アプリケーションを実行してください。

    [Start]ボタンを押下すると、以下のコードを実行します。

    procedure TMainForm.TestBtnClick(Sender: TObject);
    var
      i, j, k: Integer;
      Thread: TfrxClientTestThread;
    begin
      frxServerConnection1.Host := Host.Text;
      frxServerConnection1.Port := StrToInt(Port.Text);
      frxServerConnection1.Login := Login.Text;
      frxServerConnection1.Password := Password.Text;
      frxServerConnection1.Compression := Compression.Checked;
      if (Length(ProxyHost.Text) > 0) then
      begin
        frxServerConnection1.PrxoyHost := ProxyHost.Text;
        frxServerConnection1.ProxyPort := StrToInt(ProxyPort.Text);
      end;
      ClearThreads;
      Memo1.Lines.Add('Start test');
      j := StrToInt(Threads.Text);
      k := StrToInt(Rep.Text);
      for i := 1 to j do
      begin
        Thread := TfrxClientTestThread.Create(frxServerConnection1, ReportsList[ListBox1.ItemIndex], i, k, Memo1);
        ThreadList.Add(Thread);
      end;
    end;
    
    Back to top © Copyright Fast Reports Inc.