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

📄 aceview.pas

📁 suite component ace report
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  if CurrentPreview.Description = '' then Caption := LoadStr(SCT_CViewerCaption)
  else Caption := CurrentPreview.Description;
  if LoadMeter.Progress = 100 then Generating := False;
end;

procedure TAceViewer.DividerMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  CursorPosition.left := divider.left + x;
  MouseIsDown := true;
  CursorPosition.Visible := true;

  CursorPosition.Align := alNone;
  LeftPreview.Align := alNone;
  RightPreview.Align := alNone;
  Divider.Align := alNone;
end;

procedure TAceViewer.DividerMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  NewSpot: Integer;
begin
  if MouseIsDown then
  begin
    NewSpot := Divider.Left + x;
    if NewSpot < 20 then NewSpot := 20
    else if NewSpot > (ClientWidth - 24) then NewSpot := (ClientWidth - 24);

    CursorPosition.left := NewSpot;
  end;
end;

procedure TAceViewer.DividerMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  RightPreview.Width := ClientWidth - CursorPosition.left;
  CursorPosition.Align := alRight;
  MouseIsDown := False;

  CursorPosition.Visible := False;

  RightPreview.Align := alRight;
  Divider.Align := alRight;
  LeftPreview.Align := alClient;

  ZoomValuesChange( ZoomValues );
end;

procedure TAceViewer.SetAceFile(AF: TAceFile);
begin
  LoadMeter.Progress := 0;
  Generating := True;
  ShowFirst := True;
  CurrentPreview.LoadFromAceFile(AF);
  CurrentPreview.AcePrinterSetup := AF.AcePrinterSetup;
end;

procedure TAceViewer.Close1Click(Sender: TObject);
begin
  if LeftPreview.Filer.AceFile <> RightPreview.Filer.AceFile then
  begin
    CurrentPreview.Filer.Acefile.free;
  end;
  CurrentPreview.Filer.Acefile := nil;
  CurrentPreview.Invalidate;
end;

procedure TAceViewer.ZoomValuesChange(Sender: TObject);
begin
  CurrentPreview.AceZoom := TAceZoom( TComboBox(Sender).ItemIndex );

  if Synchronized.Checked then
  begin
    if CurrentPreview = LeftPreview then RightPreview.AceZoom := LeftPreview.AceZoom
    else LeftPreview.AceZoom := RightPreview.AceZoom;
  end;

end;

procedure TAceViewer.SetZoom( zoom: TAceZoom );
begin
  ZoomValues.ItemIndex := Ord(Zoom);
  ZoomValuesChange( ZoomValues );
end;

procedure TAceViewer.SynchronizedClick(Sender: TObject);
begin
  TMenuItem(Sender).Checked := Not TMenuItem(Sender).Checked;
  { make sure zoom is same when synchronized }
  if TMenuItem(Sender).Checked then
  begin
    if CurrentPreview = LeftPreview then RightPreview.Zoom := LeftPreview.Zoom
    else LeftPreview.Zoom := RightPreview.Zoom;
  end;
end;

procedure TAceViewer.LeftPreviewVertScroll(Sender: TObject);
begin
  if Synchronized.Checked And TwoPages.Checked then
    RightPreview.VertScrollBar.Position := LeftPreview.VertScrollBar.Position;
end;

procedure TAceViewer.LeftPreviewHorzScroll(Sender: TObject);
begin
  if Synchronized.Checked And TwoPages.Checked then
    RightPreview.HorzScrollBar.Position := LeftPreview.HorzScrollBar.Position;
end;

procedure TAceViewer.RightPreviewVertScroll(Sender: TObject);
begin
  if Synchronized.Checked And TwoPages.Checked then
    LeftPreview.VertScrollBar.Position := RightPreview.VertScrollBar.Position;
end;

procedure TAceViewer.RightPreviewHorzScroll(Sender: TObject);
begin
  if Synchronized.Checked And TwoPages.Checked then
    LeftPreview.HorzScrollBar.Position := RightPreview.HorzScrollBar.Position;
end;

procedure TAceViewer.sendprinterClick(Sender: TObject);
var
  pd: TAcePrintDestination;
  ps: TAcePreviewStatus;
  CopyPS: TAcePrinterSetup;
begin
  CopyPS := TAcePrinterSetup.Create;
  CopyPS.Assign(CurrentPreview.AcePrinterSetup);

  pd := TAcePrintDestination.Create(Application);
  pd.Viewer := Self;
  pd.Preview := CurrentPreview;
  pd.AcePrinterSetup := CurrentPreview.AcePrinterSetup;
  pd.AcePrinterSetup.SetData;

  try
    if (pd.ShowModal = mrOk) then
    begin
      Include(FViewerMode, vmPrinting);
      UpdateControls;
      ps := TAcePreviewStatus.Create(Self);
      try
        ps.Preview := CurrentPreview;
        ps.Show;
        CurrentPreview.IgnorePrinterSettings := Not CopyPS.IsEqual(pd.AcePrinterSetup);
        CurrentPreview.PrintStatus := ps.UpdateStatus;
        CurrentPreview.SendPagesToPrinter(pd.StartPage, pd.EndPage);
      finally
        ps.free;
      end;
    end;
  finally
    pd.free;
    CopyPS.Free;
    Exclude(FViewerMode, vmPrinting);
    UpdateControls;
  end;

end;

procedure TAceViewer.FormClose(Sender: TObject; var Action: TCloseAction);
begin

  if Generating And Assigned(FOnAbort) then
  begin
    try
      FOnAbort(Self);
    except
      Application.HandleException(Self);
    end;
  end;
  { make sure this isn't called again }
  FOnAbort := nil;
  Generating := False;


  Action := caFree;
end;

function TAceViewer.GetLoadPercent: Single;
begin
  result := 0;
  if CurrentPreview.Filer.AceFile <> nil then
    result := TAceAceFile(CurrentPreview.Filer.AceFile).PercentDone;
end;

procedure TAceViewer.StopClick(Sender: TObject);
begin
  if Assigned(FOnAbort) then
  begin
    try
      FOnAbort(Self);
    except
      Application.HandleException(Self);
    end;
  end;
  { make sure this isn't called again }
  FOnAbort := nil;

  Generating := False;
end;

procedure TAceViewer.FormDestroy(Sender: TObject);
begin
  { make sure they are not deleting the same object }
  if LeftPreview.Filer.AceFile = RightPreview.Filer.AceFile then
    RightPreview.Filer.AceFile := nil;
end;

procedure TAceViewer.SetGenerating( Value: Boolean);
begin
  if FGenerating <> Value then
  begin
    FGenerating := Value;
  end;
  stop.Enabled := FGenerating;

  if Value then Include(FViewerMode, vmGenerating)
  else Exclude(FViewerMode, vmGenerating);

  UpdateControls;
end;

procedure TAceViewer.UpdateStatus(Sender: TObject);
begin
  UpdatePage;
end;

procedure TAceViewer.UpdateControls;
begin
  File1.Enabled := FViewerMode = [];
  ToolBar.Enabled := Not (vmPrinting in FViewerMode);
end;

procedure TAceViewer.GotoPage1Click(Sender: TObject);
var
  ag: TAceGotoPage;
  pg: Integer;
begin
  ag := TAceGotoPage.Create(self);
  try
    ag.Label1.Caption := LoadStr(SCT_CGotoPrompt);
    ag.Caption := LoadStr(SCT_CGotoTitle);
    ag.Button1.Caption := LoadStr(SCT_CGotoBtn);
    ag.Button2.Caption := LoadStr(SCT_CGotoCancel);

    if (ag.ShowModal = mrOk) then
    begin
      pg := StrToInt(ag.PageNum.Text);
      CurrentPreview.Page := pg;
      UpdatePage;
    end;
  finally
    ag.free;
  end;
end;

procedure TAceViewer.ToolBarMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if (mbLeft = Button) And (ssCtrl in Shift) then
  begin
    ShowMessage('Ace Reporter Version ' + AceVersion);
  end;

end;

procedure TAceViewer.sendprinterMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 ps: TAcePreviewStatus;
begin
  if Button = mbRight then
  begin
    try
      Include(FViewerMode, vmPrinting);
      UpdateControls;
      ps := TAcePreviewStatus.Create(Self);
      try
        ps.Preview := CurrentPreview;
        ps.Show;
        CurrentPreview.IgnorePrinterSettings := False;
        CurrentPreview.PrintStatus := ps.UpdateStatus;
        CurrentPreview.SendPagesToPrinter(0,0);
      finally
        ps.free;
      end;
    finally
      Exclude(FViewerMode, vmPrinting);
      UpdateControls;
    end;
  end;
end;


procedure TAceViewer.ToolBarDblClick(Sender: TObject);
begin
  if CurrentPreview.AceZoom = azPage then SetZoom(az100) else SetZoom(azPage);
end;

end.

⌨️ 快捷键说明

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