qreport, qrDbtext i şartlı Bold Yapmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

qreport, qrDbtext i şartlı Bold Yapmak

Mesaj gönderen hakkus »

Merhabalar,
Quickreport QRSubdetail band üzerinde iki alan var.
Alan1=float
Alan2=string.
Yapmak istediğim alan2 nin değeri='GECİKTİ' ise
o satırdaki Alan1.font.style=[fsBold] yapmak.
alan2 nin onPrint olayına aşağıdaki kodu yazdım.

Kod: Tümünü seç

procedure Alan2Print(serder:tobject; var value:string);
begin
if value='GECİKTİ' then
Alan1.font.style=[fsBold];
end;
Yukardaki kod herhangi bir alan2 nin değeri 'GECİKTİ' ise
QRSubdetail band üzerindeki bütün Alan1 leri bold yapıyor.
İstediğim sadece alan2='GECİKTİ' ise o satırın alan1 inin bold olması.
Arama yaptım onPrint ve onneedData hakkında ama bu sorunuma bir çözüm bulamadım.
Şimdiden teşekkürler.
saygılar
Misafir

beforeprint event ına

Mesaj gönderen Misafir »

Kod: Tümünü seç

if table1.alan2.asstring = 'GECİKTİ' then Alan1.font.style=[fsBold]; 
yazman yeter heralem.
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

Sayın Mikrocu,
ilginize teşekkür ederim ancak
band ın beforePrint olayında alan1 in font.style ine ulaşılamıyor.
saygılar
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Mesaj gönderen serbek_tr »

Selam,
Hakkus arkadaşım istediğin şeyi şöyle yapabilirsin

QRSubdetail bandın üzerinde diyelimki alan1 qrlabel1 gösteriyor olsun alan2 yide qrlabel2 göstersin QRSubdetail bandın Beforeprint olayına

Kod: Tümünü seç

If qrlabel1.caption='GECİKTİ' Then qrlabel2.font.style:=[FsBold];
yaz ben şahsen test ettim oldu umarım işini görür
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

Sayın Serbek_tr
İlginize teşekkür ederim.
Ancak;
SubDetail bandın üzerinde alanları QRDBTEXT ile gösteriyorum.
saygılar
Misafir

Re: beforeprint event ına

Mesaj gönderen Misafir »

mikrocu yazdı:

Kod: Tümünü seç

if table1.alan2.asstring = 'GECİKTİ' then Alan1.font.style=[fsBold]; 
ALAN1 değil tabi ki qrdbtext.font.style seninkinden copy paste ettiğim için dikkat etmemişim.

kolay gelsin
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Mesaj gönderen serbek_tr »

Hakkus ve Mikrocu kolay gelsin arkdaşlar;
Hakkus Mikrocununda benimde dediklerim hemen hemen aynı qrlabel olmasın qrdbtext olsun yine fark etmez sana vermiş olduğum örneği qrdxtext için uygula onda da çalışır . ancak benim anlayamadığım bir nokta varsa burda ve kaçırdıysam birşey diyemem ama anladıklarım üzerine söyleyebileceğim ancak bu çünkü çalışıyor. Kolay gelsin
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

Sayın Serbek_tr,
Gözümüzden kaçan;
Subdetail band birçok satırdan oluşuyor. Önerdiğiniz yöntemde bütün satırlar da alan1 bold oluyor.
Oysa yapmak istediğim sadece ilgili satırın bold olmasıydı.
İlginize teşekkür ederim.
saygılar
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Mesaj gönderen serbek_tr »

Olsun arkadaşım onunda çaresi aynı yerden geçiyor

gerekli karşılaştırmanı yaptıktan sonra qrband2.Font.Style:=[FsBold]
dersin ama karşılaştırma nedenli doğru yapılabilir açıkçası denemdim yani şimdi bir karşılaştırmaya göre bold olacak karşılaştırma uymuyorsa normal olacak açıkçası listelenecek bütün değerler aynı qrband üzerinde gerçekleşeceği için bir karşılaştırmanın uyması durumunda bunu bold yaparsan sanıyorumki karşılaştırmaya uymayanlarda bundan etkilenecek
benim tavsiyem karşılaştırma sonucu uyduğu zaman qrband ın font özelliğini değilde o satırda bulunan qrlabel veya qrbdtext artık hangisi kullanılıyorsa o nesnelerin özelliği üzerinde oynamanız mesela

Kod: Tümünü seç

If QeDbText1.Caption='GECİKTİ' Then
Begin
  QrDbText2.Font.Style:=[FsBold];// veya QrLabel.font........
  QrDbText3.Font.Style:=[FsBold];
  QrDbText4.Font.Style:=[FsBold];
  .
  .
  .
  .
End;
Mantıklısı bu olur bence iyi çalışmalar
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

açıkcası deneme yapmadım ama acaba şöyle birşey olabilir mi?

Kod: Tümünü seç

If QrDbText1.caption='GECİKTİ' Then QRDbText1.font.style:=QrDbText1.font.style + [FsBold] else
QrDbText1.font.style:=QrDbText1.font.style - [FsBold] 
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
serbek_tr
Üye
Mesajlar: 362
Kayıt: 16 Ağu 2004 12:54

Mesaj gönderen serbek_tr »

Ben yine tekrar etmek isterimki Hakkus arkadaşım karşılaştırma sonucu uyuyorsa Band üzerinde yer alan nesneleri değilde bandın kendi font özelliğini bold yapmak istiyor. Yanlışım varsa düzeltin ama şimdi
diyelimki 10 tane kayıt bu bant üzerinde listelenecek 1...7 arası listelenen kayıtlar bu şarta uymadı diyelim sıra sekizde uydu e ne olacak bandın özelliğini bold yaptık ama bütün kayıtlar bu band üzerinde listeleniyor ne oldu şu ana kadar listelenen ve bold olmaması gereken 1..7 arası kayıtlar da bu bandın bold özelliğinden etkilenip bold olmaması gerektiği halde bold olacak bir işe yaramadı ozaman artısı son kayıdın şartı ne ise bu defa ban üzerindeki tüm kayıtların son kaydın şartına uygun olarak ya hepsi bold olacak yada hepsi normal kalacak.Açıkçası denemdiğim bir şey var bandın özelliğinin bu band üzerindeki nesnelere yansıyıp yansımadığını test etmedim zaten ki yansımıyorsa hepsi boş eğer yansırsa bu defa benim dediğim yaşanacak yine engüzeli band üzerindeki nesnelerin özelliği ile oynamanız derim ben yine ama sora sora bağdat bulunur misali el elden üstündür umarım size istediğiniz yönde kesin sonuç söylebilecek bir arkadaşımız olur .

Bu arada TrSoft arkadaşında düşüncesi verdiği koda bakılırsa benim düşüncemle aynı.

haydi hayırlı akşamlar bu arada Geçen kandiliniz mübarek olsun darısı yini ve hayırlı kandillere inşallah Allaha Emanet olun
Procedure Forum.Imza(Sender: TObject)
Begin
ShowMessage('Her türlü fikire, Her zaman açığım')
End;
Misafir

bu konu uzadı baya

Mesaj gönderen Misafir »

Kod: Tümünü seç

procedure TForm1.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
if t1miktar.asinteger < 10 then QRDBText2.font.style:=QRDBText2.font.style + [fsbold]
else QRDBText2.font.style:=QRDBText2.font.style - [fsbold]; 
end;


denedim çalışıyor hem de doğru bandı tamamen değiştireceksen

Kod: Tümünü seç

procedure TForm1.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
if t1miktar.asinteger < 10 then DetailBand1.font.style:=DetailBand1.font.style + [fsbold]
else DetailBand1.font.style:=DetailBand1.font.style - [fsbold];
end;
bu da doğru çalışıyor. tabi burada t1 table nesnesini miktar karşılaştırma yapılan veritabanı alanını gösteriyor sen kendi bileşen isimlerini kullanırsan sorun olmaz sanırım.


umarım hallolmuştur. kolay gelsin
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: qreport, qrDbtext i şartlı Bold Yapmak

Mesaj gönderen aslangeri »

hakkus yazdı:Merhabalar,
Quickreport QRSubdetail band üzerinde iki alan var.
Alan1=float
Alan2=string.
Yapmak istediğim alan2 nin değeri='GECİKTİ' ise
o satırdaki Alan1.font.style=[fsBold] yapmak.
alan2 nin onPrint olayına aşağıdaki kodu yazdım.

Kod: Tümünü seç

procedure Alan2Print(serder:tobject; var value:string);
begin
if value='GECİKTİ' then
Alan1.font.style=[fsBold];
end;
Yukardaki kod herhangi bir alan2 nin değeri 'GECİKTİ' ise
QRSubdetail band üzerindeki bütün Alan1 leri bold yapıyor.
İstediğim sadece alan2='GECİKTİ' ise o satırın alan1 inin bold olması.
Arama yaptım onPrint ve onneedData hakkında ama bu sorunuma bir çözüm bulamadım.
Şimdiden teşekkürler.
arkadaşım benim gördüğüm kadarı ile senin gönderdiğin kod çalışıyor ancak unuttuğun nokta (ki burda tr_soft arkadaşın gönderdiği kodlar devreye giriyor) eğer alan1 'GECİKTİ' değilse alan2 nin rengi ne olacak. onu belirtmediğin için Alan1 ilk gecikti olduğu zaman renk değişiyor ondan sonraki kayıtlarda gecikmemiş olsa bile fontu geri eski hale getirmediğin için font bold kalıyor. yani else ekleyerek işini halledebilirsin.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

Mesaj gönderen hakkus »

Merhabalar,
Arkadaşlar hepinize teşekkür ederim.
Kısaca subDetail band aşağıdaki gibi..
*****
alan1 alan2
1245 Normal
1248 AltSınır
1249 Gecikti // işte sadece bu satır bold olacak
1251 Normal
***

Not: Sonuçta bütün ilgilenen arkadaşlara teşekkür ederim. İstediğim rapor üzerinde gecikenlerin belirgin olarak görülmesiydi.
Şimdilik gecikenler için ayrı bir alan tanımladım (alan3) oraya yazdırıyorum.
Aşağıdaki gibi;
alan1 alan2 alan3
1245 Normal
1248 AltSınır
1249 Gecikti
1251 Normal

Tekrar teşekkür ederim.
saygılar
Cevapla