unit PreviewFrm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, RVScroll, CRVPP, RVPP, ExtCtrls; type TfrmPreview = class(TForm) Panel1: TPanel; rvpp: TRVPrintPreview; cmb: TComboBox; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure cmbExit(Sender: TObject); procedure cmbKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure rvppZoomChanged(Sender: TObject); private { Private declarations } procedure UpdateZoom; public { Public declarations } end; implementation {$R *.DFM} {-----------------------------------------------------------------------} procedure TfrmPreview.Button1Click(Sender: TObject); begin rvpp.First; Label1.Caption :=Format('%d of %d', [rvpp.PageNo, rvpp.RVPrint.PagesCount]); end; {-----------------------------------------------------------------------} procedure TfrmPreview.Button2Click(Sender: TObject); begin rvpp.Prev; Label1.Caption :=Format('%d of %d', [rvpp.PageNo, rvpp.RVPrint.PagesCount]); end; {-----------------------------------------------------------------------} procedure TfrmPreview.Button3Click(Sender: TObject); begin rvpp.Next; Label1.Caption :=Format('%d of %d', [rvpp.PageNo, rvpp.RVPrint.PagesCount]); end; {-----------------------------------------------------------------------} procedure TfrmPreview.Button4Click(Sender: TObject); begin rvpp.Last; Label1.Caption :=Format('%d of %d', [rvpp.PageNo, rvpp.RVPrint.PagesCount]); end; {-----------------------------------------------------------------------} procedure TfrmPreview.cmbExit(Sender: TObject); begin UpdateZoom; end; {-----------------------------------------------------------------------} procedure TfrmPreview.cmbKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key=VK_RETURN then begin UpdateZoom; Key := 0; end; end; {-----------------------------------------------------------------------} procedure TfrmPreview.UpdateZoom; var s: String; zoom: Integer; begin s := Trim(cmb.Text); if s='Page width' then begin rvpp.ZoomMode := rvzmPageWidth; exit; end; if s='Full page' then begin rvpp.ZoomMode := rvzmFullPage; exit; end; if (s<>'') and (s[Length(s)]='%') then s := Copy(s,1,Length(s)-1); zoom := StrToIntDef(s,0); if (zoom<10) or (zoom>500) then Application.MessageBox('Please enter number from 10 to 500','Scale',MB_OK or MB_ICONSTOP) else rvpp.SetZoom(zoom); end; {-----------------------------------------------------------------------} procedure TfrmPreview.rvppZoomChanged(Sender: TObject); begin cmb.Text := IntToStr(rvpp.ZoomPercent)+'%'; end; end.