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

📄 adfaxsrv.pas

📁 测试用例
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    with TStandardFaxDisplay(FStatusDisplay.Display) do begin          
      if First then begin
        fsLabel2.Caption := 'Job file name:';
        fsLabel3.Caption := 'Job name:';
      end else if Last then begin
        fsLabel2.Caption := 'Fax file name:';
        fsLabel3.Caption := 'Cover file name:';
      end;
      fsFaxFileName.Caption := CurrentJobFileName;
      fsCoverFileName.Caption := CurrentJobHeader.JobName;
      fsDialAttempt.Caption := IntToStr(CurrentRecipient.AttemptNum + 1);
    end;
  end;

  if Assigned(FFaxServerStatusEvent) then begin
    if FSwitchingModes then                                            
      Status := fpSwitchModes                                          
    else if FFaxServerMode = fsmSend then
      Status := FSendFax.FaxProgress
    else if FFaxServerMode = fsmReceive then
      Status := FRecvFax.FaxProgress
    else
      Status := 0;
    OnFaxServerStatus(Self, FaxMode, First, Last, Status);
  end;
end;

procedure TApdCustomFaxServer.FInternalPortToggle(CP: TObject;
  Opening: Boolean);
begin
  if Assigned(FFaxServerPortOpenCloseEvent) then
    FFaxServerPortOpenCloseEvent(Self, Opening);                       
end;

procedure TApdCustomFaxServer.FInternalSendQueryTimer(Sender: TObject);
var
  JobFileName, FaxFileName, CoverFileName: TPassString;                
  Recipient: TFaxRecipientRec;
begin
  if csDestroying in ComponentState then Exit;                         
  if FFaxInProgress then
    Exit;

  FaxFileName := '';
  CoverFileName := '';
  { shut the timer down while we are looking }
  FSendQueryTimer.Enabled := False;

  if Assigned(FServerManager) then
    if FServerManager.GetJob(Recipient, Self, JobFileName, FaxFileName,
      CoverFileName) then begin

      { generate the manager's OnQuery event }
      if Assigned(FServerManager.FFaxServerManagerQueriedEvent) then   
        FServerManager.FFaxServerManagerQueriedEvent(FServerManager,   
          Self, JobFileName);

      CurrentJobFileName := JobFileName;
      CurrentJobNumber := Recipient.JobID;
      CurrentRecipient := Recipient;
      FServerManager.GetJobHeader(CurrentJobFileName, CurrentJobHeader);

      HeaderSender := CurrentJobHeader.Sender;                         
      PhoneNumber := Recipient.PhoneNumber;
      HeaderLine := Recipient.HeaderLine;
      HeaderRecipient := Recipient.HeaderRecipient;
      HeaderTitle := Recipient.HeaderTitle;
      FaxFile := FaxFileName;
      CoverFile := CoverFileName;

      CheckPort;

      if not FComPort.Open then begin                                  
        { the port couldn't be opened, so we'll just update the status }
        { so we can try to get the port later }
        FServerManager.UpdateStatus(CurrentJobFileName,                
          CurrentJobNumber, Abs(ecCommNotOpen), False);                
        FSendQueryTimer.Enabled := True;                               
        Exit;                                                          
      end;                                                             

      { save Monitoring, we will revert in the FInternalFaxFinish event }
      FOldMonitoring := Monitoring;
      { turn off receive mode }
      if FWaitForRing then begin
        FSwitchingModes := True;
        FRecvFax.CancelFax;
        DelayTicks(18, True);
      end else
        FSwitchingModes := False;                                      
      { make sure we don't have any residual input }
      FComPort.FlushInBuffer;                                          
      FaxServerMode := fsmSend;
      FSendFax.StartTransmit;
    end else begin                                                     
      { generate the manager's OnQuery event, no job ready }
      if Assigned(FServerManager.FFaxServerManagerQueriedEvent) then
        FServerManager.FFaxServerManagerQueriedEvent(FServerManager,   
          Self, '');                                                   

      if FSendQueryInterval <> 0 then begin                            
        FSendQueryTimer.Interval := FSendQueryInterval * 1000;         
        FSendQueryTimer.Enabled := True;
      end;                                                             
      if not FMonitoring then begin                                    
        { done with the port, close it }                               
        if FComPort.TapiMode = tmOn then                               
          FTapiDevice.CancelCall                                       
        else                                                           
          FComPort.Open := False;                                      
      end else if not FWaitForRing then begin                          
        FaxServerMode := fsmReceive;                                   
        FRecvFax.StartReceive;                                         
        FWaitForRing := True;                                          
      end else                                                         
        FSwitchingModes := False;                                      
    end;                                                               

end;

procedure TApdCustomFaxServer.FInternalTapiPortOpenClose(Sender: TObject);
begin
  { this event handler is only used to update the flag }
  WaitingOnTapi := False;
end;

procedure TApdCustomFaxServer.FInternalTapiFail(Sender : TObject);
begin
  WaitingOnTapi := False;
end;

procedure TApdCustomFaxServer.ForceSendQuery;
var                                                                      {!!.02}
  OldPaused : Boolean;                                                   {!!.02}
begin
  OldPaused := FServerManager.FPaused;                                   {!!.02}
  FServerManager.Paused := False;                                        {!!.02}
  FInternalSendQueryTimer(nil);
  FServerManager.Paused := OldPaused;                                    {!!.02}
end;

function TApdCustomFaxServer.GetBytesTransferred: LongInt;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.BytesTransferred
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.BytesTransferred
  else
    Result := 0;
end;

function TApdCustomFaxServer.GetCurrentPage: Word;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.CurrentPage
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.CurrentPage
  else
    Result := 0;
end;

function TApdCustomFaxServer.GetDialAttempt: Word;                     
begin
  if Assigned(FSendFax) then
    Result := FSendFax.DialAttempt
  else
    Result := 0;
end;

function TApdCustomFaxServer.GetDialAttempts: Word;                    
begin
  Result := FDialAttempts;
end;

function TApdCustomFaxServer.GetFaxProgress: Word;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.FaxProgress
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.FaxProgress
  else
    Result := 0;
end;

function TApdCustomFaxServer.GetHangupCode: Word;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.HangupCode
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.HangupCode
  else
    Result := 0;
end;

function TApdCustomFaxServer.GetModemBPS: LongInt;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.ModemBPS
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.ModemBPS
  else
    Result := 0;
end;

function TApdCustomFaxServer.GetModemChip: string;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.ModemChip
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.ModemChip
  else
    Result := '';
end;

function TApdCustomFaxServer.GetModemECM: Boolean;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.ModemECM
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.ModemECM
  else
    Result := False;
end;

function TApdCustomFaxServer.GetModemModel: string;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.ModemModel
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.ModemModel
  else
    Result := '';
end;

function TApdCustomFaxServer.GetModemRevision: string;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.ModemRevision
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.ModemRevision
  else
    Result := ''
end;

function TApdCustomFaxServer.GetPageLength: LongInt;
var
  F: File;
begin
  Result := FPageLength;
  if FPageLength = 0 then
    if (FFaxFile <> '') and FileExists(FFaxFile) then begin
      AssignFile(F, FFaxFile);
      Reset(F, 1);
      FPageLength := FileSize(F);
      CloseFile(F);
      Result := FPageLength;
  end;
end;

function TApdCustomFaxServer.GetRemoteID: string;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.RemoteID
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.RemoteID
  else
    Result := '';
end;

function TApdCustomFaxServer.GetSessionBPS: Word;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.SessionBPS
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.SessionBPS
  else
    Result := 0;
end;

function TApdCustomFaxServer.GetSessionECM: Boolean;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.SessionECM
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.SessionECM
  else
    Result := False;
end;

function TApdCustomFaxServer.GetSessionResolution: Boolean;            
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.SessionResolution
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.SessionResolution
  else
    Result := True;
end;

function TApdCustomFaxServer.GetSessionWidth: Boolean;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.SessionWidth
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.SessionWidth
  else
    Result := True;
end;

function TApdCustomFaxServer.GetSupportedFaxClasses: TFaxClassSet;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.SupportedFaxClasses
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.SupportedFaxClasses
  else
    Result := [];
end;

function TApdCustomFaxServer.GetTotalPages: Word;
begin
  if FFaxServerMode = fsmSend then
    Result := FSendFax.TotalPages
  else if FFaxServerMode = fsmReceive then
    Result := FRecvFax.TotalPages
  else
    Result := 0;
end;

procedure TApdCustomFaxServer.Notification(AComponent: TComponent;
  Operation: TOperation);
{ - handle dependent components coming and going }
begin
  inherited Notification(AComponent, Operation);
  if Operation = opRemove then begin
    if AComponent = FComPort then begin
      FComPort := nil;
      if not (csDesigning in ComponentState) then begin
        FSendFax.ComPort := nil;
        FRecvFax.ComPort := nil;
      end;
    end;
    if AComponent = FFaxLog then
      FFaxLog := nil;
    if AComponent = FFaxPrinter then begin
      FFaxPrinter := nil;
      FPrintOnReceive := False;
    end;
    if AComponent = FServerManager then
      FServerManager := nil;
    if AComponent = FStatusDisplay then
      FStatusDisplay := nil;
    if AComponent = FTapiDevice then begin
      FTapiDevice := nil;
      if Assigned(FComPort) then
        FComPort.TapiMode := tmOff;
    end;

  end else if Operation = opInsert then begin
    if AComponent is TApdCustomComPort then begin

⌨️ 快捷键说明

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