home *** CD-ROM | disk | FTP | other *** search
- unit CPreview;
- interface
-
- uses
- {$IFDEF WIN32}
- Windows,
- {$ELSE}
- WinTypes, WinProcs,
- {$ENDIF}
- Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- Buttons, ExtCtrls, DRBase, DREng, StdCtrls;
-
- type
- TFormPreview = class(TForm)
- PToolBar: TPanel;
- SBFirst: TSpeedButton;
- SBPrevious: TSpeedButton;
- SBNext: TSpeedButton;
- SBLast: TSpeedButton;
- SBZoomIn: TSpeedButton;
- SBZoomOut: TSpeedButton;
- LPage: TPanel;
- BBPrint: TSpeedButton;
- BBClose: TSpeedButton;
- PrintDlg: TPrintDialog;
- DRView: TDRView;
- CBZoom: TComboBox;
- DuckReport: TDuckReport;
- procedure SBFirstClick(Sender: TObject);
- procedure SBPreviousClick(Sender: TObject);
- procedure SBNextClick(Sender: TObject);
- procedure SBLastClick(Sender: TObject);
- procedure SBZoomOutClick(Sender: TObject);
- procedure SBZoomInClick(Sender: TObject);
- procedure BBCloseClick(Sender: TObject);
- procedure BBPrintClick(Sender: TObject);
- procedure DRViewPageChange(Sender: TObject);
- procedure DRViewZoomChange(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure CBZoomClick(Sender: TObject);
- procedure DRViewGetZoom(Sender: TObject; var iZoom: Integer;
- bZoomIn: Boolean);
- private
- Function GetZoom (StZoom: String): Integer;
- public
- Procedure PaintPage;
- end;
-
- var
- FormPreview: TFormPreview;
-
- implementation
-
- {uses Main;}
-
- {$R *.DFM}
- Procedure TFormPreview.FormCreate(Sender: TObject);
- Begin
- // asd
- End;
- Procedure TFormPreview.FormDestroy(Sender: TObject);
- Begin
- FormPreview := nil;
- End;
- Procedure TFormPreview.FormClose(Sender: TObject;
- var Action: TCloseAction);
- Begin
- DuckReport.Terminated := TRUE;
- Action := caFree;
- End;
- Procedure TFormPreview.SBFirstClick(Sender: TObject);
- Begin
- if DRView.PageIndex <= 1 Then Exit;
- DRView.PageIndex := 1;
- End;
- Procedure TFormPreview.SBPreviousClick(Sender: TObject);
- Begin
- if DRView.PageIndex <= 1 Then Exit;
- DRView.PageIndex := DRView.PageIndex - 1;
- End;
- Procedure TFormPreview.SBNextClick(Sender: TObject);
- Begin
- if DRView.PageIndex >= DRView.PageCount Then Exit;
- DRView.PageIndex := DRView.PageIndex + 1;
- End;
- Procedure TFormPreview.SBLastClick(Sender: TObject);
- Begin
- if DRView.PageIndex >= DRView.PageCount Then Exit;
- DRView.PageIndex := DRView.PageCount;
- End;
- Function TFormPreview.GetZoom (StZoom: String): Integer;
- Var
- St: String;
- i: Integer;
- iCode: Integer;
- Begin
- St := StZoom;
- Trim (St);
- i := 1;
- While TRUE Do
- Begin
- if i > Length (st) Then Break;
- if not (St[i] in ['0'..'9']) Then
- Delete (St, i, 1)
- Else
- Inc (i);
- End;
- Val (St, Result, iCode);
- if iCode <> 0 Then
- Result := 0;
- End;
- Procedure TFormPreview.CBZoomClick(Sender: TObject);
- Var
- iZoom: Integer;
- Begin
- iZoom := GetZoom (CBZoom.Text);
- if iZoom <= 0 Then Exit;
- DRView.Zoom := iZoom;
- End;
- Procedure TFormPreview.DRViewGetZoom(Sender: TObject;
- var iZoom: Integer; bZoomIn: Boolean);
- Var
- St: String;
- iIndex: Integer;
- Begin
- St := IntToStr (iZoom) + '%';
- iIndex := CBZoom.Items.IndexOf (St);
- if iIndex < 0 Then Exit;
- if bZoomIn Then
- Inc (iIndex)
- Else
- Dec (iIndex);
- if iIndex < 0 Then Exit;
- St := CBZoom.Items[iIndex];
- iZoom := GetZoom (St);
- if iZoom <= 0 Then
- DRView.Zoom := iZoom;
- End;
- Procedure TFormPreview.SBZoomOutClick(Sender: TObject);
- Begin
- DRView.ZoomOut;
- End;
- Procedure TFormPreview.SBZoomInClick(Sender: TObject);
- Begin
- DRView.ZoomIn;
- End;
- Procedure TFormPreview.DRViewZoomChange(Sender: TObject);
- Var
- St: String;
- iTemp: Integer;
- Procedure SetZoomStatus (bZoomOut, bZoomIn: Boolean);
- Begin
- SBZoomOut.Enabled := bZoomOut;
- SBZoomIn.Enabled := bZoomIn;
- End;
- Begin
- iTemp := DRView.Zoom;
- St := IntToStr (iTemp) + '%';
- iTemp := CBZoom.Items.IndexOf (St);
- if iTemp < 0 Then Exit;
- CBZoom.ItemIndex := iTemp;
- if iTemp = 0 Then
- SetZoomStatus (FALSE, TRUE)
- Else
- if iTemp = CBZoom.Items.Count - 1 Then
- SetZoomStatus (TRUE, FALSE)
- Else
- SetZoomStatus (TRUE, TRUE);
- End;
- Procedure TFormPreview.PaintPage;
- Procedure SetPrintButton (bFist, bPre, bNext, bLast: Boolean);
- Begin
- SBFirst.Enabled := bFist;
- SBPrevious.Enabled := bPre;
- SBNext.Enabled := bNext;
- SBLast.Enabled := bLast;
- End;
- Begin
- With DRView Do
- Begin
- LPage.Caption := IntToStr (PageIndex) + ' in ' +
- IntToStr (PageCount);
- if PageCount <= 1 Then
- SetPrintButton (FALSE, FALSE, FALSE, FALSE)
- Else
- if PageIndex <= 1 Then
- SetPrintButton (FALSE, FALSE, TRUE, TRUE)
- Else
- if PageIndex >= PageCount Then
- SetPrintButton (TRUE, TRUE, FALSE, FALSE)
- Else
- SetPrintButton (TRUE, TRUE, TRUE, TRUE);
- End;
- if DRView.PageCount <= 0 Then
- Begin
- SBZoomOut.Enabled := FALSE;
- SBZoomIn.Enabled := FALSE;
- End
- Else
- Begin
- SBZoomOut.Enabled := TRUE;
- SBZoomIn.Enabled := TRUE;
- End;
- End;
- Procedure TFormPreview.BBCloseClick(Sender: TObject);
- Begin
- Close;
- End;
- procedure TFormPreview.DRViewPageChange(Sender: TObject);
- begin
- PaintPage;
- end;
- Procedure TFormPreview.BBPrintClick(Sender: TObject);
- Begin
- PrintDlg.MinPage := 1;
- PrintDlg.MaxPage := DRView.PageCount;
- PrintDlg.FromPage := 1;
- PrintDlg.ToPage := DRView.PageCount;
- if not PrintDlg.Execute Then Exit;
- DuckReport.PrintCustom (PrintDlg.FromPage, PrintDlg.ToPage,
- PrintDlg.Copies, PrintDlg.Collate);
- End;
-
- End.
-