merhabalar
quickreportun preview ekranında değişiklik yapmak istiyorum, alt tarafa statusbar gibi bişey koyup kısayol tuşları atamak istiyorum.
mesela "F11 yazdır ve önizlemeyi kapat" gibi.
mümkün müdür?
şimdiden teşekkürler.
quickrepin preview ekranı üzerinde değişiklik yapmak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Dosya olarak gönderemiyorum.
Dosya olarak göndermek daha şık olurdu ama bu şekilde idare et!.
Baştan savma böyle bir çalışmam olmuştu (Baştan savma dediysem aslında daha işlevsel ama ekran görüntüsü üzerinde hiç çalışmadığım için biraz uğraşacaksın
).
----------------------------------------------
form_onizleme.dfm dosyası
----------------------------------------------
form_onizleme.pas dosyası
----------------------------------------------
bu pencerede kullanabilmek için önizleme kodlarını "QuickRep1.Preview;" şeklinde değil de "Onizle(QuickRep1);" şeklinde kullanmalısın!.. Kolay gelsin.
Baştan savma böyle bir çalışmam olmuştu (Baştan savma dediysem aslında daha işlevsel ama ekran görüntüsü üzerinde hiç çalışmadığım için biraz uğraşacaksın

----------------------------------------------
form_onizleme.dfm dosyası
Kod: Tümünü seç
object FormOnizleme: TFormOnizleme
Left = 192
Top = 108
Width = 696
Height = 480
HorzScrollBar.Tracking = True
VertScrollBar.Tracking = True
Caption = 'FormOnizleme'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnClose = FormClose
OnCreate = FormCreate
OnDestroy = FormDestroy
OnMouseWheel = FormMouseWheel
OnResize = FormResize
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object Durum: TStatusBar
Left = 0
Top = 434
Width = 688
Height = 19
Panels = <
item
Width = 50
end
item
Width = 50
end>
SimplePanel = False
end
object Panel: TPanel
Left = 0
Top = 0
Width = 688
Height = 105
Align = alTop
TabOrder = 1
object btnYukseklik: TBitBtn
Left = 8
Top = 8
Width = 75
Height = 25
Action = Yukseklik
Caption = 'Yükseklik'
TabOrder = 0
end
object btnNormal: TBitBtn
Left = 88
Top = 8
Width = 75
Height = 25
Action = Normal
Caption = 'Normal'
TabOrder = 1
end
object btnGenislik: TBitBtn
Left = 168
Top = 8
Width = 75
Height = 25
Action = Genislik
Caption = 'Genişlik'
TabOrder = 2
end
object btnilk: TBitBtn
Left = 296
Top = 8
Width = 75
Height = 25
Action = ilk
Caption = 'İlk'
TabOrder = 3
end
object btnOnceki: TBitBtn
Left = 376
Top = 8
Width = 75
Height = 25
Action = Onceki
Caption = 'Önceki'
TabOrder = 4
end
object btnSonraki: TBitBtn
Left = 456
Top = 8
Width = 75
Height = 25
Action = Sonraki
Caption = 'Sonraki'
TabOrder = 5
end
object btnSon: TBitBtn
Left = 536
Top = 8
Width = 75
Height = 25
Action = Son
Caption = 'Son'
TabOrder = 6
end
object btnAyarla: TBitBtn
Left = 24
Top = 72
Width = 75
Height = 25
Action = Ayarla
Caption = 'Ayarla'
TabOrder = 7
end
object btnYazdir: TBitBtn
Left = 104
Top = 72
Width = 75
Height = 25
Action = Yazdir
Caption = 'Yazdir'
TabOrder = 8
end
object btnKapat: TBitBtn
Left = 480
Top = 56
Width = 75
Height = 25
Action = Kapat
Caption = 'Kapat'
TabOrder = 9
end
object btnKaydet: TBitBtn
Left = 248
Top = 56
Width = 75
Height = 25
Action = Kaydet
Caption = 'Kaydet'
TabOrder = 10
end
object btnAc: TBitBtn
Left = 328
Top = 56
Width = 75
Height = 25
Action = Ac
Caption = 'Aç'
TabOrder = 11
end
object SayfaNo: TSpinEdit
Left = 576
Top = 56
Width = 65
Height = 22
MaxValue = 0
MinValue = 0
TabOrder = 12
Value = 0
OnKeyUp = SayfaNoKeyUp
end
object btnSayfayaGit: TBitBtn
Left = 648
Top = 56
Width = 33
Height = 25
Caption = 'Git'
TabOrder = 13
OnClick = btnSayfayaGitClick
end
object Olcek: TSpinEdit
Left = 40
Top = 40
Width = 65
Height = 22
MaxValue = 0
MinValue = 0
TabOrder = 14
Value = 0
OnKeyUp = OlcekKeyUp
end
object btnOlcek: TBitBtn
Left = 111
Top = 40
Width = 33
Height = 25
Caption = 'Ölçkle'
TabOrder = 15
OnClick = btnOlcekClick
end
end
object QROnizle: TQRPreview
Left = 0
Top = 105
Width = 688
Height = 329
HorzScrollBar.Tracking = True
VertScrollBar.Tracking = True
Align = alClient
TabOrder = 2
OnPageAvailable = QROnizlePageAvailable
OnProgressUpdate = QROnizleProgressUpdate
PageNumber = 1
Zoom = 100
end
object Olaylar: TActionList
Left = 248
Top = 192
object Yukseklik: TAction
Caption = 'Yükseklik'
OnExecute = YukseklikExecute
end
object Normal: TAction
Caption = 'Normal'
OnExecute = NormalExecute
end
object Genislik: TAction
Caption = 'Genişlik'
OnExecute = GenislikExecute
end
object ilk: TAction
Caption = 'İlk'
OnExecute = ilkExecute
end
object Onceki: TAction
Caption = 'Önceki'
OnExecute = OncekiExecute
end
object Sonraki: TAction
Caption = 'Sonraki'
OnExecute = SonrakiExecute
end
object Son: TAction
Caption = 'Son'
OnExecute = SonExecute
end
object Ayarla: TAction
Caption = 'Ayarla'
OnExecute = AyarlaExecute
end
object Yazdir: TAction
Caption = 'Yazdir'
OnExecute = YazdirExecute
end
object Kaydet: TAction
Caption = 'Kaydet'
OnExecute = KaydetExecute
end
object Ac: TAction
Caption = 'Aç'
OnExecute = AcExecute
end
object Kapat: TAction
Caption = 'Kapat'
OnExecute = KapatExecute
end
end
end
form_onizleme.pas dosyası
Kod: Tümünü seç
unit form_onizleme;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ExtCtrls, QRPrntr, QuickRpt, QR3const, StdCtrls, Buttons,
ActnList, Spin;
type
TFormOnizleme = class(TForm)
Durum: TStatusBar;
Panel: TPanel;
btnYukseklik: TBitBtn;
btnNormal: TBitBtn;
btnGenislik: TBitBtn;
btnilk: TBitBtn;
btnOnceki: TBitBtn;
btnSonraki: TBitBtn;
btnSon: TBitBtn;
btnAyarla: TBitBtn;
btnYazdir: TBitBtn;
btnKapat: TBitBtn;
QROnizle: TQRPreview;
btnKaydet: TBitBtn;
btnAc: TBitBtn;
Olaylar: TActionList;
Yukseklik: TAction;
Normal: TAction;
Genislik: TAction;
ilk: TAction;
Onceki: TAction;
Sonraki: TAction;
Son: TAction;
Ayarla: TAction;
Yazdir: TAction;
Kaydet: TAction;
Ac: TAction;
Kapat: TAction;
SayfaNo: TSpinEdit;
btnSayfayaGit: TBitBtn;
Olcek: TSpinEdit;
btnOlcek: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormResize(Sender: TObject);
procedure QROnizleProgressUpdate(Sender: TObject; Progress: Integer);
procedure QROnizlePageAvailable(Sender: TObject; PageNum: Integer);
procedure YukseklikExecute(Sender: TObject);
procedure NormalExecute(Sender: TObject);
procedure GenislikExecute(Sender: TObject);
procedure ilkExecute(Sender: TObject);
procedure OncekiExecute(Sender: TObject);
procedure SonrakiExecute(Sender: TObject);
procedure SonExecute(Sender: TObject);
procedure AyarlaExecute(Sender: TObject);
procedure YazdirExecute(Sender: TObject);
procedure KaydetExecute(Sender: TObject);
procedure AcExecute(Sender: TObject);
procedure KapatExecute(Sender: TObject);
procedure SayfaNoKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure btnSayfayaGitClick(Sender: TObject);
procedure btnOlcekClick(Sender: TObject);
procedure OlcekKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
private
{ Private declarations }
LastProgress : Integer;
procedure RaporPreview(Sender: TObject);
procedure RaporPreviewModal(Sender: TObject);
public
{ Public declarations }
procedure UpdateInfo;
end;
var
FormOnizleme: TFormOnizleme;
FormOlustu:Boolean=False;
type TBicim=(bNormal,bModal);
function Onizle(const Rapor:TCustomQuickRep;const Bicim:TBicim=bModal):Boolean;
implementation
{$R *.DFM}
function Onizle(const Rapor:TCustomQuickRep;const Bicim:TBicim=bModal):Boolean;
var YedOlay:TNotifyEvent;
begin
YedOlay:=Rapor.OnPreview;
try
Result:=True;
if not FormOlustu then FormOnizleme:=TFormOnizleme.Create(Application);
with FormOnizleme do begin
if Rapor.ReportTitle<>'' then Rapor.ReportTitle:=Rapor.Name;
Caption:=Format('Önizleme Formu (%s)',[Rapor.ReportTitle]);
case Bicim of
bNormal:begin Rapor.OnPreview:=RaporPreview;Rapor.Preview;end;
else
Rapor.OnPreview:=RaporPreviewModal;Rapor.PreviewModal;
end;
end;
except
Result:=False;
end;
Rapor.OnPreview:=YedOlay;
end;
procedure TFormOnizleme.FormCreate(Sender: TObject);
begin
FormOlustu:=True;
LastProgress := 0;
end;
procedure TFormOnizleme.FormDestroy(Sender: TObject);
begin
FormOlustu:=False;
end;
procedure TFormOnizleme.RaporPreview(Sender: TObject);
begin
QROnizle.QRPrinter := TQRPrinter(Sender);
Show;
end;
procedure TFormOnizleme.RaporPreviewModal(Sender: TObject);
begin
QROnizle.QRPrinter := TQRPrinter(Sender);
ShowModal;
end;
procedure TFormOnizleme.FormShow(Sender: TObject);
begin
ShowWindow(Handle,SW_SHOWMAXIMIZED);
UpdateInfo;
end;
procedure TFormOnizleme.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
QROnizle.QRPrinter.ClosePreview(Self);
Action:=caFree;
end;
procedure TFormOnizleme.FormResize(Sender: TObject);
begin
QROnizle.UpdateZoom;
end;
procedure TFormOnizleme.QROnizleProgressUpdate(Sender: TObject;
Progress: Integer);
begin
if Progress > LastProgress then
begin
Durum.Panels[0].Text := IntToStr(Progress)+'%';
LastProgress := Progress;
end;
// Gauge.Position := Progress;
if (Progress = 0) or (Progress = 100) then Durum.Panels[0].Text := 'Tamam';
end;
procedure TFormOnizleme.UpdateInfo;
var ilkSayfa,SonSayfa:Boolean;
begin
ilkSayfa:=QROnizle.PageNumber=1;
SonSayfa:=QROnizle.PageNumber=QROnizle.QRPrinter.PageCount;
ilk.Enabled:=not ilkSayfa;Onceki.Enabled:=ilk.Enabled;
Son.Enabled:=not SonSayfa;Sonraki.Enabled:=Son.Enabled;
SayfaNo.Value:=QROnizle.PageNumber;
Olcek.Value:=QROnizle.Zoom;
Durum.Panels[1].Text :='Sayfa ' + IntToStr(QROnizle.PageNumber) + ' ' +
'/' + IntToStr(QROnizle.QRPrinter.PageCount);
end;
procedure TFormOnizleme.QROnizlePageAvailable(Sender: TObject;
PageNum: Integer);
begin
UpdateInfo;
SayfaNo.Enabled:=QROnizle.QRPrinter.PageCount>1;
btnSayfayaGit.Enabled:=SayfaNo.Enabled;
SayfaNo.MinValue:=1;SayfaNo.MaxValue:=QROnizle.QRPrinter.PageCount;
SayfaNo.Value:=QROnizle.PageNumber;
end;
procedure TFormOnizleme.YukseklikExecute(Sender: TObject);
begin
Application.ProcessMessages;
QROnizle.ZoomToFit;
UpdateInfo;
end;
procedure TFormOnizleme.NormalExecute(Sender: TObject);
begin
Application.ProcessMessages;
QROnizle.Zoom := 100;
UpdateInfo;
end;
procedure TFormOnizleme.GenislikExecute(Sender: TObject);
begin
Application.ProcessMessages;
QROnizle.ZoomToWidth;
UpdateInfo;
end;
procedure TFormOnizleme.ilkExecute(Sender: TObject);
begin
QROnizle.PageNumber := 1;
UpdateInfo;
end;
procedure TFormOnizleme.OncekiExecute(Sender: TObject);
begin
QROnizle.PageNumber := QROnizle.PageNumber - 1;
UpdateInfo;
end;
procedure TFormOnizleme.SonrakiExecute(Sender: TObject);
begin
QROnizle.PageNumber := QROnizle.PageNumber + 1;
UpdateInfo;
end;
procedure TFormOnizleme.SonExecute(Sender: TObject);
begin
QROnizle.PageNumber := QROnizle.QRPrinter.PageCount;
UpdateInfo;
end;
procedure TFormOnizleme.AyarlaExecute(Sender: TObject);
begin
QROnizle.QRPrinter.PrintSetup;
end;
procedure TFormOnizleme.YazdirExecute(Sender: TObject);
begin
QROnizle.QRPrinter.Print;
end;
procedure TFormOnizleme.KaydetExecute(Sender: TObject);
var
aExportFilter : TQRExportFilter;
{$ifndef win32}
FileExt : string;
I : integer;
{$endif}
begin
aExportFilter := nil;
with TSaveDialog.Create(Application) do
try
Title := 'Raporu Kaydet';
Filter := QRExportFilterLibrary.SaveDialogFilterString;
DefaultExt := cQRPDefaultExt;
if Execute then
begin
{$ifdef win32}
if FilterIndex = 1 then
QROnizle.QRPrinter.Save(Filename)
else
begin
try
aExportFilter := TQRExportFilterLibraryEntry(
QRExportFilterLibrary.Filters[FilterIndex - 2]).ExportFilterClass.Create(Filename);
QROnizle.QRPrinter.ExportToFilter(aExportFilter);
finally
aExportFilter.Free
end
end
{$else}
FileExt := ExtractFileExt(Filename);
if copy(FileExt, 1, 1) = '.' then delete(FileExt, 1, 1);
if (FileExt = '') or (FileExt = cQRPDefaultExt) then
QROnizle.QRPrinter.Save(Filename)
else
begin
for I := 0 to QRExportFilterLibrary.Filters.Count - 1 do
begin
if TQRExportFilterLibraryEntry(QRExportFilterLibrary.Filters[I]).Extension = FileExt then
try
aExportFilter := TQRExportFilterLibraryEntry(
QRExportFilterLibrary.Filters[I]).ExportFilterClass.Create(Filename);
QROnizle.QRPrinter.ExportToFilter(aExportFilter);
finally
aExportFilter.Free;
end;
end;
end;
{$endif}
end;
finally
Free;
end;
end;
procedure TFormOnizleme.AcExecute(Sender: TObject);
begin
with TOpenDialog.Create(Application) do
try
Title := 'Rapor Yükle';
Filter := 'Rapor Dosyası' + ' (*.' +cQRPDefaultExt + ')|*.' + cqrpDefaultExt;
if Execute then
if FileExists(FileName) then
begin
QROnizle.QRPrinter.Load(Filename);
QROnizle.PageNumber := 1;
QROnizle.PreviewImage.PageNumber := 1;
UpdateInfo;
Ayarla.Enabled := False;
end
else
ShowMessage(SqrFileNotExist);
finally
free;
end;
end;
procedure TFormOnizleme.KapatExecute(Sender: TObject);
begin
Close;
end;
procedure TFormOnizleme.SayfaNoKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_RETURN:btnSayfayaGit.Click;
end;
end;
procedure TFormOnizleme.btnSayfayaGitClick(Sender: TObject);
begin
QROnizle.PageNumber:=SayfaNo.Value;
UpdateInfo;
end;
procedure TFormOnizleme.btnOlcekClick(Sender: TObject);
begin
QROnizle.Zoom:=Olcek.Value;
end;
procedure TFormOnizleme.OlcekKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_RETURN:btnOlcek.Click;
end;
end;
procedure TFormOnizleme.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
QROnizle.VertScrollBar.Position:=QROnizle.VertScrollBar.Position-WheelDelta;
end;
end.
bu pencerede kullanabilmek için önizleme kodlarını "QuickRep1.Preview;" şeklinde değil de "Onizle(QuickRep1);" şeklinde kullanmalısın!.. Kolay gelsin.
En son sabanakman tarafından 13 Ağu 2007 08:48 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
-
- Kıdemli Üye
- Mesajlar: 1026
- Kayıt: 11 Şub 2005 02:12
- Konum: İstanbul
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Zaten yukarıda da bu şekilde yapıldı.
---------
.
.
object QROnizle: TQRPreview
Left = 0
.
.
--------
dfm dosyasında mevcut. Başka türlüsü nasıl yapılır bilemiyorum. Aklıma gelen tek yöntem bu bileşenin aynısından yazmak.
---------
.
.
object QROnizle: TQRPreview
Left = 0
.
.
--------
dfm dosyasında mevcut. Başka türlüsü nasıl yapılır bilemiyorum. Aklıma gelen tek yöntem bu bileşenin aynısından yazmak.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .