FastReport ta Bantların olaylarında Delphideki Fonksiyonu...
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
FastReport ta Bantların olaylarında Delphideki Fonksiyonu...
MErhaba ,
FastReport ta Bantların olaylarında Delphideki Fonksiyonu nasıl çağırabilirim.
kolaygelsin.
FastReport ta Bantların olaylarında Delphideki Fonksiyonu nasıl çağırabilirim.
kolaygelsin.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Mustafa hocam , orası öylede benim arka planda bir çok VT ile etkileşimli sorgul sonuçları döndüren fonctionlarım var bunları her groupband başlangıcında yazmam gerekiyor mesela gibi bir takım işlemler.
Bu olaylar için gerekiyor.
Bu olaylar için gerekiyor.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Mesajımı yazarken kafamdan bir çözüm geçiyordu bir baktım çözüm ta kendisii şöyleki ,
Tetiklenmesini istediğim olayın proceduresini yazıyorum
Sonra Delphi ortamında ilgili groupbandı bulup olayına atama yapıyorum;
belki lazım olan olur. iyi çalışmalar.
Tetiklenmesini istediğim olayın proceduresini yazıyorum
Kod: Tümünü seç
procedure MyGroupBandOnBefarePrint(Sender:TfrxComponent);
begin
//olaylar işlemler vb..
end;
Sonra Delphi ortamında ilgili groupbandı bulup olayına atama yapıyorum;
Kod: Tümünü seç
TfrxGroupHeader(frxReport1.FindObject('GroupHeader1')).OnBeforePrint:=MyGroupBandBefarePrint;
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Merhaba,
FastReport 3'te tanımlama şöyle yapılıyor:
Daha sonra da frxReport bileşenin OnUserFunction olayına uygun kodları yazıyorsunuz.
FastReport 3'te tanımlama şöyle yapılıyor:
Kod: Tümünü seç
frxReport.AddFunction('function SAYIOKUYAZ(Sayi:Variant):String;','User','User');
Merhaba ,
yukarıda yazdığım çözüm denemediğim olabileceğini düşündüğüm bir çözümdü TFrxNotifyEvent ları String bir ifade alıyor ve atamalarda hafıza adresi değil , FastReport içerisinde Script olarak tanımladığım bir procedurenini String olarak adını parametre alabiliyor. bu çok korkunç bir sorun
,
şöyle bir örnek vereyim, Grup olarak oluşturduğum bir hesap ekstrem var diyelim her bir groupheader da benim kişiye ait DEviri buldurmam lazım , bunuda sadece ve sadece Delphideki bir procedureyi çağırarak yapmam mümkün. Benim delphi tarafında o an hangi olayın tetiklendiğini tespit etmem gerekiyor. bunu nasıl yapabilirim kara kara düşünüyorum
@t-hex ,
OnUserFunction kullanımını birz daha açabilirmisin, yani delphide ki bir fonksiyonu FastReport içierisiniden parametre gönderip nasıl dönüş değerini alabiliirm?
yukarıda yazdığım çözüm denemediğim olabileceğini düşündüğüm bir çözümdü TFrxNotifyEvent ları String bir ifade alıyor ve atamalarda hafıza adresi değil , FastReport içerisinde Script olarak tanımladığım bir procedurenini String olarak adını parametre alabiliyor. bu çok korkunç bir sorun

şöyle bir örnek vereyim, Grup olarak oluşturduğum bir hesap ekstrem var diyelim her bir groupheader da benim kişiye ait DEviri buldurmam lazım , bunuda sadece ve sadece Delphideki bir procedureyi çağırarak yapmam mümkün. Benim delphi tarafında o an hangi olayın tetiklendiğini tespit etmem gerekiyor. bunu nasıl yapabilirim kara kara düşünüyorum
@t-hex ,
OnUserFunction kullanımını birz daha açabilirmisin, yani delphide ki bir fonksiyonu FastReport içierisiniden parametre gönderip nasıl dönüş değerini alabiliirm?
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
bir örnek vererek açıklamaya çalışayım :
tanimla adlı fonksiyon gelen değerin negatif veya pozitif olmasına göre bir string döndürüyor.
frxReport1 nesnesine ilgili olaylara bu kodları yazıyoruz.
Rapor tasarımında da frxMemo yerleştirip, içine
şeklinde kullanıyoruz. Dizayn anında hata verir, runtimeda çalışır.
Kolay gelsin.
Kod: Tümünü seç
function tanimla(Deger:Variant):String;
begin
Result:='Sıfır';
if Deger >0 then Result:='Pozitif';
if Deger <0 then Result:='Negatif';
end;
Kod: Tümünü seç
procedure TForm1.frxReport1BeforePrint(Sender: TfrxReportComponent);
begin
frxReport1.AddFunction('function Tanimla(Deger:Variant):String;');
end;
function TForm1.frxReport1UserFunction(const MethodName: String;
var Params: Variant): Variant;
begin
if MethodName = 'TANIMLA' then begin
Result := tanimla(Params[0]);
end;
end;
Rapor tasarımında da frxMemo yerleştirip, içine
Kod: Tümünü seç
[TANIMLA(1)] [TANIMLA[-1)]
Kolay gelsin.
@t-hex ,
ilgin için teşekkürler. Çok mükemmel bir şekilde işime yaradı.
İyi çalışmalar.
ilgin için teşekkürler. Çok mükemmel bir şekilde işime yaradı.
İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Merhaba;
Şimdi biraz saçma bir durumla karşı karşıyayım ;
@t-hex user defined fonksiyonu frxMemo içinden kullanabilirken sorunsızca, Fast Script bölümünde kullanmak isteidğimde TAnımsız Nitelik hatası alıyorum. bu user defined fonksiyonları script içinden kullnamıyormuyuz ben şöyle çağırıyorum
frxMemo içinde, (Sorunyok)
Fast Script içinden de (Tanımsız Nitelik hatası alıyorum)
Şimdi biraz saçma bir durumla karşı karşıyayım ;
@t-hex user defined fonksiyonu frxMemo içinden kullanabilirken sorunsızca, Fast Script bölümünde kullanmak isteidğimde TAnımsız Nitelik hatası alıyorum. bu user defined fonksiyonları script içinden kullnamıyormuyuz ben şöyle çağırıyorum
frxMemo içinde, (Sorunyok)
Kod: Tümünü seç
[NAKLIYEKUNBUL('A',<kebir."hk">)]
Fast Script içinden de (Tanımsız Nitelik hatası alıyorum)
Kod: Tümünü seç
procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
var
Borc,Alacak,Bakiye:Double;
begin
Borc:=NAKLIYEKUNBUL('B',<kebir."hk">);
Alacak:=NAKLIYEKUNBUL('A',<kebir."hk">);
Bakiye:=Borc-Alacak;
Memo25.value:=Borc;
Memo26.value:=Alacak;
Memo27.value:=Bakiye;
end;
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
@vkamadan,
AddFuction metodunu oNBeforePrint olayından başka bir yere taşıyın, yani rapor hazırlanırken çalışabilecek bir yere, ben ilk örnekte onbeforeprint olayına yazdım o yüzden, prepare anında tanımıyor fonksiyonu.
Mesela frxReport form üstündeyse , formun oncreate olayına yazın. Ben birkaç denem yaptım, script içinde de kullanabiliyorsunuz. Sadece addfuction metodunun yeri yanlış
AddFuction metodunu oNBeforePrint olayından başka bir yere taşıyın, yani rapor hazırlanırken çalışabilecek bir yere, ben ilk örnekte onbeforeprint olayına yazdım o yüzden, prepare anında tanımıyor fonksiyonu.
Mesela frxReport form üstündeyse , formun oncreate olayına yazın. Ben birkaç denem yaptım, script içinde de kullanabiliyorsunuz. Sadece addfuction metodunun yeri yanlış