谁有QuickReport的打印预览汉化的,然后最好在预览窗口有导出多种格式的(XLS、TXT……)~ 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 小弟以前曾做过,帖一给你了,是从QuickReport自带的预览窗体改写过来的,如需使用只要在QuickRep控件的OnPreview事件中增加如下调用即可:procedure TMainForm.QuickRep1Preview(Sender: TObject);begin uPreview.CustomPreview(QuickRep1.QRPrinter);end;窗体文件 uPreview.dfm:object fmPreview: TfmPreview Left = 114 Top = 52 AutoScroll = False BorderIcons = [biSystemMenu, biMaximize] Caption = '打印预览' ClientHeight = 468 ClientWidth = 651 Color = clBtnFace ParentFont = True KeyPreview = True OldCreateOrder = True Position = poScreenCenter ShowHint = True OnClose = FormClose OnDestroy = FormDestroy OnKeyDown = FormKeyDown OnResize = FormResize OnShow = FormShow PixelsPerInch = 96 TextHeight = 13 object StatusBar: TStatusBar Left = 0 Top = 449 Width = 651 Height = 19 Panels = < item Alignment = taRightJustify Text = '0%' Width = 40 end item Text = 'Page' Width = 50 end> end object QRPreview: TQRPreview Left = 0 Top = 25 Width = 651 Height = 424 HorzScrollBar.Tracking = True VertScrollBar.Tracking = True Align = alClient TabOrder = 1 OnPageAvailable = QRPreviewPageAvailable OnProgressUpdate = QRPreviewProgressUpdate PageNumber = 1 Zoom = 100 end object Panel1: TPanel Left = 0 Top = 0 Width = 651 Height = 25 Align = alTop BevelOuter = bvNone Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -12 Font.Name = '宋体' Font.Style = [] ParentFont = False TabOrder = 0 object PrintButton: TBitBtn Left = 0 Top = 1 Width = 60 Height = 22 Caption = '打印(&P)' TabOrder = 0 OnClick = PrintButtonClick end object FirstPage: TBitBtn Tag = 1 Left = 72 Top = 1 Width = 60 Height = 22 Caption = '首页 |<' TabOrder = 1 OnClick = FirstPageClick end object PreviousPage: TBitBtn Tag = 2 Left = 136 Top = 1 Width = 60 Height = 22 Caption = '上页 <<' TabOrder = 2 OnClick = FirstPageClick end object NextPage: TBitBtn Tag = 3 Left = 200 Top = 1 Width = 60 Height = 22 Caption = '下页 >>' TabOrder = 3 OnClick = FirstPageClick end object LastPage: TBitBtn Tag = 4 Left = 264 Top = 1 Width = 60 Height = 22 Caption = '末页 >|' TabOrder = 4 OnClick = FirstPageClick end object ExitButton: TBitBtn Left = 352 Top = 1 Width = 60 Height = 22 Caption = '关闭(&C)' TabOrder = 5 OnClick = ExitClick end endend单元文件 uPreview.pas:unit uPreview;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, QRPrntr, QR3const;type TfmPreview = class(TForm) StatusBar: TStatusBar; QRPreview: TQRPreview; Panel1: TPanel; PrintButton: TBitBtn; FirstPage: TBitBtn; PreviousPage: TBitBtn; NextPage: TBitBtn; LastPage: TBitBtn; ExitButton: TBitBtn; procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FirstPageClick(Sender: TObject); procedure PrintButtonClick(Sender: TObject); procedure ExitClick(Sender: TObject); procedure QRPreviewPageAvailable(Sender: TObject; PageNum: Integer); procedure QRPreviewProgressUpdate(Sender: TObject; Progress: Integer); private FQRPrinter : TQRPrinter; Gauge : TProgressBar; LastProgress : integer; WindowList: Pointer; ActiveWindow: HWnd; public constructor CreatePreview(AOwner : TComponent; aQRPrinter : TQRPrinter); virtual; procedure Show; procedure UpdateInfo; property QRPrinter : TQRPrinter read FQRPrinter write FQRPrinter; end;procedure CustomPreview(AQRPrinter: TQRPrinter);implementationuses QuickRpt;{$R *.DFM}procedure CustomPreview(AQRPrinter: TQRPrinter);begin with TfmPreview.CreatePreview(Application, AQRPrinter) do begin Show; end;end;constructor TfmPreview.CreatePreview(AOwner : TComponent; aQRPrinter : TQRPrinter);begin inherited Create(AOwner); QRPrinter := aQRPrinter; WindowState := wsMaximized; QRPreview.QRPrinter := aQRPrinter; if (QRPrinter <> nil) and (QRPrinter.Title <> '') then Caption := QRPrinter.Title; Gauge := TProgressBar.Create(Self); // Gauge.Parent := self;// Gauge.Top := 2; Gauge.Left := 2; Gauge.Height := 10;// Gauge.Width := 100; LastProgress := 0; if QRPrinter.Status = mpFinished then PrintButton.Enabled := true;end;procedure TfmPreview.FormShow(Sender: TObject);begin ActiveWindow := GetActiveWindow; WindowList := DisableTaskWindows(0);end;procedure TfmPreview.FormClose(Sender: TObject; var Action: TCloseAction);begin QRPrinter.ClosePreview(Self); Action := caFree;end;procedure TfmPreview.FormDestroy(Sender: TObject);begin if ActiveWindow <> 0 then SetActiveWindow(ActiveWindow); EnableTaskWindows(WindowList);end;procedure TfmPreview.UpdateInfo;begin QRPreview.Zoom := 100; //StatusBar.Panels[1].Text := SqrPage + ' ' + IntToStr(QRPreview.PageNumber) + ' ' + // SqrOf + ' ' + IntToStr(QRPreview.QRPrinter.PageCount); StatusBar.Panels[1].Text := Format('第 %d 页/共 %d 页', [QRPreview.PageNumber, QRPreview.QRPrinter.PageCount]);end;procedure TfmPreview.FormResize(Sender: TObject);begin QRPreview.UpdateZoom;end;procedure TfmPreview.Show;begin {QRPreview.QRPrinter.ShowingPreview:=true;} inherited Show; UpdateInfo;end;procedure TfmPreview.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin case Key of VK_Next : if Shift = [ssCtrl] then LastPage.Click else NextPage.Click; VK_Prior : if Shift = [ssCtrl] then FirstPage.Click else PreviousPage.Click; VK_Home : FirstPage.Click; VK_End : LastPage.Click; VK_Escape : ExitButton.Click; end;end;procedure TfmPreview.FirstPageClick(Sender: TObject);begin case TComponent(Sender).Tag of 1: QRPreview.PageNumber := 1; 2: QRPreview.PageNumber := QRPreview.PageNumber - 1; 3: QRPreview.PageNumber := QRPreview.PageNumber + 1; 4: QRPreview.PageNumber := QRPrinter.PageCount; else Exit; end; UpdateInfo;end;procedure TfmPreview.PrintButtonClick(Sender: TObject);begin if QRPrinter.Master = nil then QRPrinter.Print else if TCustomQuickRep(QRPrinter.Master).QRPrinter.Status = mpFinished then QRPrinter.Print;end;procedure TfmPreview.ExitClick(Sender: TObject);begin Close;end;procedure TfmPreview.QRPreviewPageAvailable(Sender: TObject; PageNum: Integer);begin UpdateInfo; if qrprinter.status = mpFinished then begin PrintButton.Enabled := true; end;end;procedure TfmPreview.QRPreviewProgressUpdate(Sender: TObject; Progress: Integer);begin if Progress >= LastProgress + 5 then begin StatusBar.Panels[0].Text := IntToStr(Progress) + '%'; LastProgress := Progress; end; // Gauge.Position := Progress; if (Progress = 0) or (Progress = 100) then StatusBar.Panels[0].Text := '';end;end. 请问怎样修改Tstringlist第一行的数据啊? 有没有高人识啊??? delphi根据数据库记录生成准考证以及打印的问题 想用showmessage显示一句比较长的话,需要换行,应该怎么写? string 与WideString 的问题 数据库中的图片问题 搞不懂,是Delphi真的可以这样用,还是别的什么??谁帮我解释一下,谢谢了。 按条件查询时怎样让数据在edit中显示出来呢? sos:关于自定义报表的问题(不好意思,这是我的最高分啦!!!!!) delphi3.0 如何将光标定位在EDIT框 用modem编程,如何用at命令来识别是否忙音??
procedure TMainForm.QuickRep1Preview(Sender: TObject);
begin
uPreview.CustomPreview(QuickRep1.QRPrinter);
end;窗体文件 uPreview.dfm:
object fmPreview: TfmPreview
Left = 114
Top = 52
AutoScroll = False
BorderIcons = [biSystemMenu, biMaximize]
Caption = '打印预览'
ClientHeight = 468
ClientWidth = 651
Color = clBtnFace
ParentFont = True
KeyPreview = True
OldCreateOrder = True
Position = poScreenCenter
ShowHint = True
OnClose = FormClose
OnDestroy = FormDestroy
OnKeyDown = FormKeyDown
OnResize = FormResize
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object StatusBar: TStatusBar
Left = 0
Top = 449
Width = 651
Height = 19
Panels = <
item
Alignment = taRightJustify
Text = '0%'
Width = 40
end
item
Text = 'Page'
Width = 50
end>
end
object QRPreview: TQRPreview
Left = 0
Top = 25
Width = 651
Height = 424
HorzScrollBar.Tracking = True
VertScrollBar.Tracking = True
Align = alClient
TabOrder = 1
OnPageAvailable = QRPreviewPageAvailable
OnProgressUpdate = QRPreviewProgressUpdate
PageNumber = 1
Zoom = 100
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 651
Height = 25
Align = alTop
BevelOuter = bvNone
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -12
Font.Name = '宋体'
Font.Style = []
ParentFont = False
TabOrder = 0
object PrintButton: TBitBtn
Left = 0
Top = 1
Width = 60
Height = 22
Caption = '打印(&P)'
TabOrder = 0
OnClick = PrintButtonClick
end
object FirstPage: TBitBtn
Tag = 1
Left = 72
Top = 1
Width = 60
Height = 22
Caption = '首页 |<'
TabOrder = 1
OnClick = FirstPageClick
end
object PreviousPage: TBitBtn
Tag = 2
Left = 136
Top = 1
Width = 60
Height = 22
Caption = '上页 <<'
TabOrder = 2
OnClick = FirstPageClick
end
object NextPage: TBitBtn
Tag = 3
Left = 200
Top = 1
Width = 60
Height = 22
Caption = '下页 >>'
TabOrder = 3
OnClick = FirstPageClick
end
object LastPage: TBitBtn
Tag = 4
Left = 264
Top = 1
Width = 60
Height = 22
Caption = '末页 >|'
TabOrder = 4
OnClick = FirstPageClick
end
object ExitButton: TBitBtn
Left = 352
Top = 1
Width = 60
Height = 22
Caption = '关闭(&C)'
TabOrder = 5
OnClick = ExitClick
end
end
end单元文件 uPreview.pas:
unit uPreview;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Buttons, ComCtrls, QRPrntr, QR3const;type
TfmPreview = class(TForm)
StatusBar: TStatusBar;
QRPreview: TQRPreview;
Panel1: TPanel;
PrintButton: TBitBtn;
FirstPage: TBitBtn;
PreviousPage: TBitBtn;
NextPage: TBitBtn;
LastPage: TBitBtn;
ExitButton: TBitBtn; procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormDestroy(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FirstPageClick(Sender: TObject);
procedure PrintButtonClick(Sender: TObject);
procedure ExitClick(Sender: TObject); procedure QRPreviewPageAvailable(Sender: TObject; PageNum: Integer);
procedure QRPreviewProgressUpdate(Sender: TObject; Progress: Integer);
private
FQRPrinter : TQRPrinter;
Gauge : TProgressBar;
LastProgress : integer;
WindowList: Pointer;
ActiveWindow: HWnd;
public
constructor CreatePreview(AOwner : TComponent; aQRPrinter : TQRPrinter); virtual;
procedure Show;
procedure UpdateInfo;
property QRPrinter : TQRPrinter read FQRPrinter write FQRPrinter;
end;procedure CustomPreview(AQRPrinter: TQRPrinter);implementationuses QuickRpt;{$R *.DFM}procedure CustomPreview(AQRPrinter: TQRPrinter);
begin
with TfmPreview.CreatePreview(Application, AQRPrinter) do
begin
Show;
end;
end;constructor TfmPreview.CreatePreview(AOwner : TComponent; aQRPrinter : TQRPrinter);
begin
inherited Create(AOwner);
QRPrinter := aQRPrinter;
WindowState := wsMaximized;
QRPreview.QRPrinter := aQRPrinter;
if (QRPrinter <> nil) and (QRPrinter.Title <> '') then Caption := QRPrinter.Title;
Gauge := TProgressBar.Create(Self);
// Gauge.Parent := self;//
Gauge.Top := 2;
Gauge.Left := 2;
Gauge.Height := 10;//
Gauge.Width := 100;
LastProgress := 0;
if QRPrinter.Status = mpFinished then
PrintButton.Enabled := true;
end;procedure TfmPreview.FormShow(Sender: TObject);
begin
ActiveWindow := GetActiveWindow;
WindowList := DisableTaskWindows(0);
end;procedure TfmPreview.FormClose(Sender: TObject; var Action: TCloseAction);
begin
QRPrinter.ClosePreview(Self);
Action := caFree;
end;procedure TfmPreview.FormDestroy(Sender: TObject);
begin
if ActiveWindow <> 0 then SetActiveWindow(ActiveWindow);
EnableTaskWindows(WindowList);
end;procedure TfmPreview.UpdateInfo;
begin
QRPreview.Zoom := 100;
//StatusBar.Panels[1].Text := SqrPage + ' ' + IntToStr(QRPreview.PageNumber) + ' ' +
// SqrOf + ' ' + IntToStr(QRPreview.QRPrinter.PageCount);
StatusBar.Panels[1].Text := Format('第 %d 页/共 %d 页', [QRPreview.PageNumber, QRPreview.QRPrinter.PageCount]);
end;procedure TfmPreview.FormResize(Sender: TObject);
begin
QRPreview.UpdateZoom;
end;procedure TfmPreview.Show;
begin
{QRPreview.QRPrinter.ShowingPreview:=true;}
inherited Show;
UpdateInfo;
end;procedure TfmPreview.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_Next : if Shift = [ssCtrl] then
LastPage.Click
else
NextPage.Click;
VK_Prior : if Shift = [ssCtrl] then
FirstPage.Click
else
PreviousPage.Click;
VK_Home : FirstPage.Click;
VK_End : LastPage.Click;
VK_Escape : ExitButton.Click;
end;
end;procedure TfmPreview.FirstPageClick(Sender: TObject);
begin
case TComponent(Sender).Tag of
1: QRPreview.PageNumber := 1;
2: QRPreview.PageNumber := QRPreview.PageNumber - 1;
3: QRPreview.PageNumber := QRPreview.PageNumber + 1;
4: QRPreview.PageNumber := QRPrinter.PageCount;
else Exit; end; UpdateInfo;
end;procedure TfmPreview.PrintButtonClick(Sender: TObject);
begin
if QRPrinter.Master = nil then
QRPrinter.Print
else if TCustomQuickRep(QRPrinter.Master).QRPrinter.Status = mpFinished then
QRPrinter.Print;
end;procedure TfmPreview.ExitClick(Sender: TObject);
begin
Close;
end;procedure TfmPreview.QRPreviewPageAvailable(Sender: TObject;
PageNum: Integer);
begin
UpdateInfo;
if qrprinter.status = mpFinished then
begin
PrintButton.Enabled := true;
end;
end;procedure TfmPreview.QRPreviewProgressUpdate(Sender: TObject;
Progress: Integer);
begin
if Progress >= LastProgress + 5 then
begin
StatusBar.Panels[0].Text := IntToStr(Progress) + '%';
LastProgress := Progress;
end;
// Gauge.Position := Progress;
if (Progress = 0) or (Progress = 100) then StatusBar.Panels[0].Text := '';
end;end.