quickreport ile verileri yan yana yazdırmak

Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Cevapla
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

quickreport ile verileri yan yana yazdırmak

Mesaj gönderen sarp_halit »

merhaba arkadaşlar.
ben muhtarlık için bir program yazıyorum. programda yan yana yazdırma yapmam gereken alanlar var. bu işlemi nasıl yapabilirim?
bir de dikey label kullanmam gerekiyor. bu bileşeni bulabileceğim bir adres lazım.
yardımlarınızı bekliyorum.
şimdiden teşekkürler
saygılar ...
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Sorunuzu daha net izah ederseniz yardimci olabiliriz saniyorum. Bir de onun oncesinde Quickreport ile ilgili gelen örnek raporlara bakmanızı tavsiye ederim muhtemeldir ki oradan bir cozum de bulabilirsiniz....
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

iyi çalışmalar.
quickrep in columns (yanlış yazmadıysam) özelliği ile raporu birden fazla sütunlu hale getirebilirsin. yanlız sütunları sıra ile dolduruyor. yani ikinci sütuna yazması için önce biirinci sütunu doldurması gerekiyor.

Label in word wrap özelliğini true yapıp genişliğini küçülttükten sonra birde harflerin arasına boşluk koyarsan ('ahmet --> a h m e t' gibi) alt alta yazdırabilirsin. Ama açılı olmuyor tabiki.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
mehmet_solaris
Üye
Mesajlar: 3
Kayıt: 16 Oca 2004 12:23
Konum: İZMİR

iyi çalışmalar...

Mesaj gönderen mehmet_solaris »

Quick report biraz hantaldır bence. eğer temin edebilirsen ısrarla fast report öneririm, çok daha esnek tasarım yapabilirsin.

Kabaca bir öneri olacak ama, quickreport gerçekten zaman kaybı...

İyi çalışmalar
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

daha geniş açıklama

Mesaj gönderen sarp_halit »

öncelikle cevap veren bütün arkadaşlara teşekkürü borç bilirim.
fahrettin hocam. quickreport ile yazdırma işlemlerinde sizin de bildiğiniz gibi details kısmına yazılan dbtextlere karşılık gelen değerler hep aşağıya doğru sıralanmakta. aynı alana sahip bilgilerden bahsediyorum. örneğin adı alanına karşılık gelen değerler hep
adı
adı
adı
adı
adı
... olarak listeleniyor. benim amacım ise bir alana karşılık gelen değeri belirttiğim sayıya kadar yan yana yazdırmak.
adı adı adı adı adı ....
gibi . yardımcı olursanız sevinirim. sevgiler.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

bildiğim kadarıyla QR'de böyle bir kullanım yok. Yok derken tabii ki kodla birşeyler yapılabilir ama çok uğraşmanız lazım.

Qr'de colums olayı var ama onda da önce sayfanın altına kadar yazılır, daha sonra diğer kolonda sayfanın başından başlanır. Sizin istediğiniz gibi değil yani.

Ne yapmak istediğinizi anlatırsanız daha değişik teknikler önerilebilir. Yani rapordan amaç ne?

Kolay gelsin.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Detail bandın üzerine istediğin sayıda yanyana QRDBText oluştur ve hepsinin DataSet ve DataField'ını aynı yap.

Yok ben yanyana kaç tane olacağını programdan girmek istiyorum diyorsan (kağıt genişliği kadar) o zaman da tek bir QRDBText oluşturup ve istediğin sayı kadar for .. do ... döngüsü ile create et ve pozisyonlarını da birincisinden sonra gelecek şekilde ayarla..

Dikey label için ise QrAngel diye bir bileşen olması lazım.

QuSoft tan http://www.qusoft.com/Download3.html alabilirsin..

Ayrıca ReportBuilder da da rotate olayı var.
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

teşekkür ederim

Mesaj gönderen sarp_halit »

ilgi ve alakanızdan ötürü teşekkür ederim arkadaşlar. önerilerinizi denedikten sonra takıldığım bir nokta olursa sizlerle yine paylaşırım tekrar teşekkür ederim.
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

SA

Dikey label için component aramanıza gerek yok.
Basitçe şunu yapabilirsiniz:
- Label ın caption ını yazarken herbir harf arasında 2 boşluk bırakın,
- Label ın Wordwrap özelliğini True yapın,
- Sonra formun üzerindeki labelın uzunluğunu tek bir harf (tabiki ilk harf) gözükene kadar kısaltın,
- En sonunda programı koşturun.
Dikey Label hazır..

Saygılar.
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

ÖZÜRdilerim, :oops: Aslangeri nin cevabını sonradan gördüm.
omurolmez
Üye
Mesajlar: 187
Kayıt: 31 Eki 2012 11:41

Re: quickreport ile verileri yan yana yazdırmak

Mesaj gönderen omurolmez »

Kaynak: http://www.experts-exchange.com/Program ... 87790.html

CreateRotatedFont işlevini bir kere tanımlıyoruz. Daha sonra, açılı yazdırmak istediğimiz tüm QrLabel ve QrDbText bileşenlerimiz için, herbirinin OnPrint olayından şu şekilde çağırıyoruz. Örneğin, QrDbText1 isimli bileşenimiz olsun:

Kod: Tümünü seç

procedure TqrpMain.QrDbText1Print(sender: TObject; var Value: String);
begin
 TQRDBText(Sender).Font.Handle :=CreateRotatedFont(
   TQRDBText(Sender).Font, 90);
end;
Gördüğünüz gibi olay içinde Sender üzerinden erişim var. Yani artık diğer QrDbText ler için aynı olayı tanımlamamıza gerek yok. Sadece ObjectInspector dan OnPrint için, QrDbTExt1Print seçmemiz yeterli.

QrLabel için ise kod şu şekilde olur:

Kod: Tümünü seç

procedure TqrpMain.QrDbText1Print(sender: TObject; var Value: String);
begin
 TQRLabel(Sender).Font.Handle :=CreateRotatedFont(
   TQRLabel(Sender).Font, 90);
end;
Ve son olarak,

Kod: Tümünü seç

function CreateRotatedFont(Font: TFont; Degrees: Integer): HFONT;
//[url]http://www.experts-exchange.com/Programming/Languages/Pascal/Delphi/Q_23587790.html[/url]
var
   LF : TLogFont;
begin
   FillChar(LF, SizeOf(LF), #0);
   with LF do
      begin
      LFWidth := 0;
      LFOrientation := 0;
      LFHeight := Font.Height;
      LFEscapement := Degrees*10;
      LFCharSet := DEFAULT_CHARSET;
      LFItalic := Byte(fsItalic in Font.Style);
      LFUnderline := Byte(fsUnderline in Font.Style);
      LFStrikeOut := Byte(fsStrikeOut in Font.Style);
      if fsBold in Font.Style then  LFWeight := FW_BOLD
      else                          LFWeight := FW_NORMAL;
      StrPCopy(LFFaceName, Font.Name);
      LFQuality := DEFAULT_QUALITY;
      LFOutPrecision := OUT_DEFAULT_PRECIS;
      LFClipPrecision := CLIP_DEFAULT_PRECIS;
      case Font.Pitch of
         fpFixed: lfPitchAndFamily := FIXED_PITCH;
         fpVariable: lfPitchAndFamily := VARIABLE_PITCH;
      else
         LFPitchAndFamily := DEFAULT_PITCH;
      end;
   end;
   Font.Size := 5; //---
   Result := CreateFontIndirect(LF);
end;
Ömür Ölmez
Cevapla