Kısaca yapmak istediğim şu:
iki adet listview kullanıyorum. İlk listviewdeki iteme tıklayınca ikinci listview'a eklettiriyorum.. Yapmak istediğim ikinci listviewda biriken kayıtların quickreport aracılığı ile printpreview ve sonrasında print etmek..
diğer bir deyişle Tlistview'ın içeriğini qreport ile yazdırmak. ..
Genelde forumlarda qreport ile ilgili açıklamalarda dataset örnekleri verilmiş o yüzden bu konuda bir açıklama bulamadım..
Bu konuda bana yardım edecek yada kaynak gösterecek arkadaşlara şimdiden tşk ederim..
listview içeriğini qreporta almak
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 46
- Kayıt: 25 May 2005 09:08
- Konum: izmir
Kod: Tümünü seç
TQRapYazdir = class(TForm)
....
....
procedure QuickRep1NeedData(Sender: TObject; var MoreData: Boolean);
procedure QRBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
private
{ Private declarations }
satirpump : integer;
repview : TListview;
public
{ Public declarations }
end;
procedure TQRapYazdir.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
satirpump:=0;
end;
procedure TQRapYazdir.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
if satirpump < rapview.Items.Count then
with rapview do
begin
QRLabel1.Caption:=Items[satirpump].Caption;
QRLabel2.caption:=Items[satirpump].SubItems[0];
....
QRLabel4.caption:=Items[satirpump].SubItems[3];
// Listview daki columns adedi kadar QRLabel oluşturabilirsin
end;
inc(satirpump);
MoreData:=rapview.items.count >= satirpump ;
end;
.........
with TQRapYazdir.Create(Self) do
try
rapview:=mylistview2;
PreviewModal;
finally
Free;
end;
Cevap için teşekkür ederim ama qreporta da yabancıyım o yüzden kodun type kısmı ile birlikte gönderirsen çok sevinirim
...
Birde ben ana forma yazdır diye bir button koydum ve buna basılınca açılan formda göstericem
yardımların için tekrar teşekkür ederim..

Birde ben ana forma yazdır diye bir button koydum ve buna basılınca açılan formda göstericem
kısmını biraz açarsan çok memnun olurum...with TQRapYazdir.Create(Self) do
try
rapview:=mylistview2;
PreviewModal;
finally
Free;
end;
yardımların için tekrar teşekkür ederim..
-
- Üye
- Mesajlar: 46
- Kayıt: 25 May 2005 09:08
- Konum: izmir
Bir tane quickreport aç, nasıl görünmesini istiyorsan o şekilde tasarla ve bu forma QRapyazdir (başka birşeyde olur, sadece alttaki koda tam uyum olsun diye söyledim.) ismini ver. Quickreportta formun tanımının altına şunları ekle (daha önce private a eklemişim, oraya erişemezsin public e almak gerek)
Object inspector da OnBeforePrint eventi ni çift tıkla gelen yere şunu yaz.
Object inspector da OnNeedData yı çift tıkla gelen yere şunu yaz.
Ana pencereye geç ve buttonu çift tıkla, kod olarak aşagıdakileri yaz. mylistview2 senin ana formundaki listview bileşeninin ismi oluyor. Bu arada use unit ile quickreport unun oldugu forma anaformun erişebilmesini saglamayı unutma.
Previewmodal metodu raporunu ekranda gösterir ve yazdır dügmesini tıklarsan yazdırır.
OnBeforePrint: Yazdırmadan önceki hazırlıklar için, biz burada listview için kullanacagımız sayacı sıfırlıyoruz.
OnNeedData: Quickreport un bilgi gerektiginde çagırdıgı bölüm. Burada listview daki bilgileri tanımladıgımız QRLabellara atıyoruz.
Umarım açıklayıcı olmuştur. Biraz deneme-yanılmayla sanırım halledebilirsin.
Kod: Tümünü seç
private
{ Private declarations }
public
{ Public declarations }
// eklenen altaki iki satır
satirpump : integer;
repview : TListview;
end;
Kod: Tümünü seç
procedure TQRapYazdir.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
begin
satirpump:=0;
end;
Kod: Tümünü seç
procedure TQRapYazdir.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
if satirpump < rapview.Items.Count then
with rapview do
begin
QRLabel1.Caption:=Items[satirpump].Caption;
QRLabel2.caption:=Items[satirpump].SubItems[0];
....
QRLabel4.caption:=Items[satirpump].SubItems[3];
// Listview daki columns adedi kadar QRLabel oluşturabilirsin
end;
inc(satirpump);
MoreData:=rapview.items.count >= satirpump ;
end;
Kod: Tümünü seç
with TQRapYazdir.Create(Self) do
try
rapview:=mylistview2;
PreviewModal;
finally
Free;
OnBeforePrint: Yazdırmadan önceki hazırlıklar için, biz burada listview için kullanacagımız sayacı sıfırlıyoruz.
OnNeedData: Quickreport un bilgi gerektiginde çagırdıgı bölüm. Burada listview daki bilgileri tanımladıgımız QRLabellara atıyoruz.
Umarım açıklayıcı olmuştur. Biraz deneme-yanılmayla sanırım halledebilirsin.