dan_visualdm Postado Novembro 13, 2008 Denunciar Share Postado Novembro 13, 2008 pessoal, fiz aqui tudo certinho no QR e beleza, ele fltra os dados do BD e exibe para imprimir somente o que o usuario desejar... até ai belezinhaa!!o problema é que no preview antes de imprimir aparece em zoom to width porém eu queria que ficasse sempre em 100%... como fazer isso?obrigado! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 13, 2008 Denunciar Share Postado Novembro 13, 2008 o problema é que no preview antes de imprimir aparece em zoom to width porém eu queria que ficasse sempre em 100%... como fazer isso?Voce pode montar um preview personalizado usando o componente QuickRep ou pode puxar este exemplo:arquivo DFMhttp://www.bsdg.org/SWAG/DELPHI/0312.PREVIEW.ZIPDescrição da UnitAngus Johnson ajohnson@rpi.net.au unit Preview; { dfm file is at end .. use XX34 to decode } interface uses SysUtils, Classes, Controls, Forms, Quickrep, ExtCtrls, Messages, StdCtrls, Buttons, WinTypes, WinProcs, Dialogs, Printers, IniFiles; type TFmPreview = class(TForm) Panel1: TPanel; QRPreview1: TQRPreview; Label1: TLabel; PrintDialog1: TPrintDialog; bbPrev: TBitBtn; bbNext: TBitBtn; bbZoomOut: TBitBtn; bbZoomW: TBitBtn; bbZoomIn: TBitBtn; bbPrint: TBitBtn; bbClose: TBitBtn; procedure FormShow(Sender: TObject); procedure bbZoomOutClick(Sender: TObject); procedure bbZoomWClick(Sender: TObject); procedure bbPrevClick(Sender: TObject); procedure bbNextClick(Sender: TObject); procedure bbPrintClick(Sender: TObject); procedure bbZoomInClick(Sender: TObject); procedure bbCloseClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private procedure CMDialogKey(var message: TCMDialogKey); message CM_DIALOGKEY; public end; var FmPreview: TFmPreview; implementation uses Main; {$R *.DFM} procedure TFmPreview.FormShow(Sender: TObject); begin QRPreview1.Zoom := 100; {defaults to ZoomIn} Label1.caption := 'Page 1 of ' +inttostr(QRPrinter.PageCount); if QRPrinter.PageCount = 1 then bbNext.enabled := false else bbNext.enabled := true; bbClose.setfocus; bbZoomIn.enabled := false; bbZoomW.enabled := true; bbZoomOut.enabled := true; end; procedure TFmPreview.bbZoomOutClick(Sender: TObject); begin QRPreview1.ZoomToFit; bbZoomOut.enabled := false; bbZoomW.enabled := true; bbZoomIn.enabled := true; bbClose.setfocus; end; procedure TFmPreview.bbZoomWClick(Sender: TObject); begin QRPreview1.ZoomToWidth; bbZoomW.enabled := false; bbZoomOut.enabled := true; bbZoomIn.enabled := true; bbClose.setfocus; end; procedure TFmPreview.bbPrevClick(Sender: TObject); begin {Previous page} if QRPreview1.PageNumber > 1 then QRPreview1.PageNumber := QRPreview1.PageNumber-1; Label1.caption := 'Page ' + inttostr(QRPreview1.PageNumber)+ ' of ' +inttostr(QRPrinter.PageCount); bbNext.enabled := true; if QRPreview1.PageNumber = 1 then begin bbPrev.enabled := false; bbNext.setfocus; end; end; procedure TFmPreview.bbNextClick(Sender: TObject); begin {Next page} if QRPreview1.PageNumber < QRPrinter.PageCount then QRPreview1.PageNumber := QRPreview1.PageNumber+1; Label1.caption := 'Page ' + inttostr(QRPreview1.PageNumber)+ ' of ' +inttostr(QRPrinter.PageCount); bbPrev.enabled := true; if QRPreview1.PageNumber = QRPrinter.PageCount then begin bbNext.enabled := false; bbPrev.setfocus; end; end; procedure TFmPreview.bbPrintClick(Sender: TObject); begin {A PrintDialog component can be added to the form with an - if not PrintDialog1.execute then exit - statement placed here.} screen.cursor := crHourglass; try QRPrinter.Print; while tag > 1 do begin QRPrinter.Print; tag := tag-1; end; tag := 1; finally screen.cursor := crDefault; end; close; end; procedure TFmPreview.bbZoomInClick(Sender: TObject); begin QRPreview1.Zoom := 100; bbZoomIn.enabled := false; bbZoomW.enabled := true; bbZoomOut.enabled := true; bbClose.setfocus; end; procedure TFmPreview.bbCloseClick(Sender: TObject); begin close; end; procedure TFmPreview.FormActivate(Sender: TObject); var TrayHwnd: HWnd; Rect: TRect; CxFullScreen, CyFullScreen, CyCaption: integer; begin {size the form to fill the screen...} TrayHwnd := FindWindow('Shell_TrayWnd',''); if TrayHwnd = 0 then {not Win95 screen} WindowState := wsMaximized else begin GetWindowRect(TrayHwnd,Rect); CxFullScreen := GetSystemMetrics(SM_CXFULLSCREEN); CyFullScreen := GetSystemMetrics(SM_CYFULLSCREEN); CyCaption := GetSystemMetrics(SM_CYCAPTION); {NOTE: Position must equal either poDefault or poDesigned, and WindowState = wsNormal} Top := 0; Left := 0; Width := CxFullScreen; Height := CyFullScreen + CyCaption; if (Rect.Top < 0) and (Rect.Left < 0) then begin {Taskbar on either top or left} if Rect.Right > Rect.Bottom then {Taskbar on top} Top := Rect.Bottom else {Taskbar on left} Left := Rect.Right; end; end; bbClose.left := width - 76; bbPrint.left := width - 144; end; procedure TFmPreview.FormClose(Sender: TObject; var Action: TCloseAction); begin QRPreview1.PageNumber := 1; {this is necessary if reopening form!!!?} bbPrev.enabled := false; QRPreview1.HorzScrollbar.Position := 0; QRPreview1.VertScrollbar.Position := 0; end; procedure TFmPreview.CMDialogKey(var message: TCMDialogKey); begin {INTERCEPTS ARROW KEYS INORDER TO MOVE AROUND PAGE} with message do case CharCode of VK_LEFT: begin with QRPreview1.HorzScrollbar do Position := Position -50; exit; end; VK_RIGHT: begin with QRPreview1.HorzScrollbar do Position := Position +50; exit; end; VK_UP: begin with QRPreview1.VertScrollbar do Position := Position -50; exit; end; VK_DOWN: begin with QRPreview1.VertScrollbar do Position := Position +50; exit; end; end; inherited; end; procedure TFmPreview.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin {INTERCEPTS [PG_UP],[PG_DN], [CTRL][PG_UP],[CTRL][PG_DN], [HOME],[END]} if (((Key = VK_NEXT) and (Shift = [ssCtrl])) or (Key = VK_END)) and bbNext.enabled then begin QRPreview1.PageNumber := QRPrinter.PageCount; {GOTO LAST PAGE} Label1.caption := 'Page ' + inttostr(QRPrinter.PageCount)+ ' of ' +inttostr(QRPrinter.PageCount); bbPrev.enabled := true; bbNext.enabled := false; bbPrev.setfocus; end else if (((Key = VK_PRIOR) and (Shift = [ssCtrl])) or (Key = VK_HOME)) and bbPrev.enabled then begin QRPreview1.PageNumber := 1; {GOTO FIRST PAGE} Label1.caption := 'Page 1' + ' of ' +inttostr(QRPrinter.PageCount); bbPrev.enabled := false; bbNext.enabled := true; bbNext.setfocus; end else if (Key = VK_NEXT) and bbNext.enabled then bbNextClick(Sender) else if (Key = VK_PRIOR) and bbPrev.enabled then bbPrevClick(Sender); end; end.abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 dan_visualdm Postado Novembro 14, 2008 Autor Denunciar Share Postado Novembro 14, 2008 o problema é que no preview antes de imprimir aparece em zoom to width porém eu queria que ficasse sempre em 100%... como fazer isso?Voce pode montar um preview personalizado usando o componente QuickRep ou pode puxar este exemplo:arquivo DFMhttp://www.bsdg.org/SWAG/DELPHI/0312.PREVIEW.ZIPDescrição da UnitAngus Johnson ajohnson@rpi.net.au unit Preview; { dfm file is at end .. use XX34 to decode } interface uses SysUtils, Classes, Controls, Forms, Quickrep, ExtCtrls, Messages, StdCtrls, Buttons, WinTypes, WinProcs, Dialogs, Printers, IniFiles; type TFmPreview = class(TForm) Panel1: TPanel; QRPreview1: TQRPreview; Label1: TLabel; PrintDialog1: TPrintDialog; bbPrev: TBitBtn; bbNext: TBitBtn; bbZoomOut: TBitBtn; bbZoomW: TBitBtn; bbZoomIn: TBitBtn; bbPrint: TBitBtn; bbClose: TBitBtn; procedure FormShow(Sender: TObject); procedure bbZoomOutClick(Sender: TObject); procedure bbZoomWClick(Sender: TObject); procedure bbPrevClick(Sender: TObject); procedure bbNextClick(Sender: TObject); procedure bbPrintClick(Sender: TObject); procedure bbZoomInClick(Sender: TObject); procedure bbCloseClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); private procedure CMDialogKey(var message: TCMDialogKey); message CM_DIALOGKEY; public end; var FmPreview: TFmPreview; implementation uses Main; {$R *.DFM} procedure TFmPreview.FormShow(Sender: TObject); begin QRPreview1.Zoom := 100; {defaults to ZoomIn} Label1.caption := 'Page 1 of ' +inttostr(QRPrinter.PageCount); if QRPrinter.PageCount = 1 then bbNext.enabled := false else bbNext.enabled := true; bbClose.setfocus; bbZoomIn.enabled := false; bbZoomW.enabled := true; bbZoomOut.enabled := true; end; procedure TFmPreview.bbZoomOutClick(Sender: TObject); begin QRPreview1.ZoomToFit; bbZoomOut.enabled := false; bbZoomW.enabled := true; bbZoomIn.enabled := true; bbClose.setfocus; end; procedure TFmPreview.bbZoomWClick(Sender: TObject); begin QRPreview1.ZoomToWidth; bbZoomW.enabled := false; bbZoomOut.enabled := true; bbZoomIn.enabled := true; bbClose.setfocus; end; procedure TFmPreview.bbPrevClick(Sender: TObject); begin {Previous page} if QRPreview1.PageNumber > 1 then QRPreview1.PageNumber := QRPreview1.PageNumber-1; Label1.caption := 'Page ' + inttostr(QRPreview1.PageNumber)+ ' of ' +inttostr(QRPrinter.PageCount); bbNext.enabled := true; if QRPreview1.PageNumber = 1 then begin bbPrev.enabled := false; bbNext.setfocus; end; end; procedure TFmPreview.bbNextClick(Sender: TObject); begin {Next page} if QRPreview1.PageNumber < QRPrinter.PageCount then QRPreview1.PageNumber := QRPreview1.PageNumber+1; Label1.caption := 'Page ' + inttostr(QRPreview1.PageNumber)+ ' of ' +inttostr(QRPrinter.PageCount); bbPrev.enabled := true; if QRPreview1.PageNumber = QRPrinter.PageCount then begin bbNext.enabled := false; bbPrev.setfocus; end; end; procedure TFmPreview.bbPrintClick(Sender: TObject); begin {A PrintDialog component can be added to the form with an - if not PrintDialog1.execute then exit - statement placed here.} screen.cursor := crHourglass; try QRPrinter.Print; while tag > 1 do begin QRPrinter.Print; tag := tag-1; end; tag := 1; finally screen.cursor := crDefault; end; close; end; procedure TFmPreview.bbZoomInClick(Sender: TObject); begin QRPreview1.Zoom := 100; bbZoomIn.enabled := false; bbZoomW.enabled := true; bbZoomOut.enabled := true; bbClose.setfocus; end; procedure TFmPreview.bbCloseClick(Sender: TObject); begin close; end; procedure TFmPreview.FormActivate(Sender: TObject); var TrayHwnd: HWnd; Rect: TRect; CxFullScreen, CyFullScreen, CyCaption: integer; begin {size the form to fill the screen...} TrayHwnd := FindWindow('Shell_TrayWnd',''); if TrayHwnd = 0 then {not Win95 screen} WindowState := wsMaximized else begin GetWindowRect(TrayHwnd,Rect); CxFullScreen := GetSystemMetrics(SM_CXFULLSCREEN); CyFullScreen := GetSystemMetrics(SM_CYFULLSCREEN); CyCaption := GetSystemMetrics(SM_CYCAPTION); {NOTE: Position must equal either poDefault or poDesigned, and WindowState = wsNormal} Top := 0; Left := 0; Width := CxFullScreen; Height := CyFullScreen + CyCaption; if (Rect.Top < 0) and (Rect.Left < 0) then begin {Taskbar on either top or left} if Rect.Right > Rect.Bottom then {Taskbar on top} Top := Rect.Bottom else {Taskbar on left} Left := Rect.Right; end; end; bbClose.left := width - 76; bbPrint.left := width - 144; end; procedure TFmPreview.FormClose(Sender: TObject; var Action: TCloseAction); begin QRPreview1.PageNumber := 1; {this is necessary if reopening form!!!?} bbPrev.enabled := false; QRPreview1.HorzScrollbar.Position := 0; QRPreview1.VertScrollbar.Position := 0; end; procedure TFmPreview.CMDialogKey(var message: TCMDialogKey); begin {INTERCEPTS ARROW KEYS INORDER TO MOVE AROUND PAGE} with message do case CharCode of VK_LEFT: begin with QRPreview1.HorzScrollbar do Position := Position -50; exit; end; VK_RIGHT: begin with QRPreview1.HorzScrollbar do Position := Position +50; exit; end; VK_UP: begin with QRPreview1.VertScrollbar do Position := Position -50; exit; end; VK_DOWN: begin with QRPreview1.VertScrollbar do Position := Position +50; exit; end; end; inherited; end; procedure TFmPreview.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin {INTERCEPTS [PG_UP],[PG_DN], [CTRL][PG_UP],[CTRL][PG_DN], [HOME],[END]} if (((Key = VK_NEXT) and (Shift = [ssCtrl])) or (Key = VK_END)) and bbNext.enabled then begin QRPreview1.PageNumber := QRPrinter.PageCount; {GOTO LAST PAGE} Label1.caption := 'Page ' + inttostr(QRPrinter.PageCount)+ ' of ' +inttostr(QRPrinter.PageCount); bbPrev.enabled := true; bbNext.enabled := false; bbPrev.setfocus; end else if (((Key = VK_PRIOR) and (Shift = [ssCtrl])) or (Key = VK_HOME)) and bbPrev.enabled then begin QRPreview1.PageNumber := 1; {GOTO FIRST PAGE} Label1.caption := 'Page 1' + ' of ' +inttostr(QRPrinter.PageCount); bbPrev.enabled := false; bbNext.enabled := true; bbNext.setfocus; end else if (Key = VK_NEXT) and bbNext.enabled then bbNextClick(Sender) else if (Key = VK_PRIOR) and bbPrev.enabled then bbPrevClick(Sender); end; end.abraçoolá amigo, obrigado pela resposta ao tópico....entendi essa paradinha de criar personalizado... mas, esse preview pronto, para alterar somente a forma de exibição é possível ou não? é que na verdade esse projeto tem que ser entregue segundona e tem várias coisas ainda pra terminar... ai se tiver como dessa vez iria facilitar...obrigado pela atenção! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 14, 2008 Denunciar Share Postado Novembro 14, 2008 mas, esse preview pronto, para alterar somente a forma de exibição é possível ou não?Este é um exemplo de preview com a possibilidade de se alterar o zoom QRPreview1.Zoom := 100; {defaults to ZoomIn}procedure TFmPreview.bbZoomInClick(Sender: TObject); begin QRPreview1.Zoom := 200; // zoom de 200 % bbZoomIn.enabled := false; bbZoomW.enabled := true; bbZoomOut.enabled := true; bbClose.setfocus; end;voce pode fazer alterações neste código ou criar o seu proprio preview usando este como exemploabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
dan_visualdm
pessoal, fiz aqui tudo certinho no QR e beleza, ele fltra os dados do BD e exibe para imprimir somente o que o usuario desejar... até ai belezinhaa!!
o problema é que no preview antes de imprimir aparece em zoom to width porém eu queria que ficasse sempre em 100%... como fazer isso?
obrigado!
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.