çalışma zamanında component hazırlama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
feride
Üye
Mesajlar: 11
Kayıt: 21 Oca 2004 04:49
İletişim:

çalışma zamanında component hazırlama

Mesaj gönderen feride »

arkadaşlar.
ben quickreport üzerindeki detail band üzeirnde programı çalıştırdığımda belirtttiğim sayıda componenti detail ban üzerinde görmek istiyorum.
ancak
create ettigim component form üzerinde gözüküyor.
create işlemini
detail bandin before print olayına yazdım.

sek:=TQRShape.Create(Self);
sek.Parent:=self;
sek.Name:='sss';
sek.top:=detailband1.Top+qrshape1.top+qrshape1.Height+10;
sek.Width:=700;
sek.Height:=1;
sek.Left:=qrshape1.left;
//detailband1.Component
sek.Shape:=qrshape1.Shape;


burada acaba
sek.Parent:=self; burada self değilde
quickrep ile alakalı bişimi yazılacak.
ben bulamadım
:)
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

hangi band uzerinde gorunmesini istiyorsan parent a onu yazacaksın
mesela detail band da gorunsun istiyosan
sek.parent:=QrDetailBand gibi birsey olmalı
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
feride
Üye
Mesajlar: 11
Kayıt: 21 Oca 2004 04:49
İletişim:

Mesaj gönderen feride »

onu denemiştim mantıklı olarak
acces violation hatası veriyor malesef
yani paren olarak onu göstermeliyim ama neden veriyor anlamadım
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Gökmen'in dediği gibi bandı yazmanız lazım.

viewtopic.php?t=592&highlight=parent

Ben deneyip çalıştırmıştım. Bu şekilde bir deneyin, çalışmıyorsa sorun başka bir yerdedir.

Kolay gelsin.
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

procedure TForm1.QuickRep1BeforePrint(Sender: TCustomQuickRep;
var PrintReport: Boolean);
var
sek:TQRShape;
begin
sek:=TQRShape.Create(Self);
sek.Parent:=DetailBand1;
sek.Name:='sss';
sek.top:=30;
sek.Width:=700;
sek.Height:=15;
sek.Left:=5;
.....
.....
end;

Bu şekilde çalışıyor..

Sevgiler...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Kullanıcı avatarı
feride
Üye
Mesajlar: 11
Kayıt: 21 Oca 2004 04:49
İletişim:

Mesaj gönderen feride »

var
Form1: TForm1;
sek:TQRShape;

implementation

{$R *.dfm}

procedure TForm1.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
sek:=TQRShape.Create(self);
sek.Name:='sss';
sek.top:=detailband1.Top+qrshape1.top+qrshape1.Height+10;
sek.Width:=700;
sek.Height:=1;
sek.Left:=qrshape1.left;
sek.Shape:=qrshape1.Shape;
sek.Parent:=Detailband1;
end;


çalışmadı
acces violation hatası veriyor
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

sek.top:=detailband1.Top+qrshape1.top+qrshape1.Height+10;

QuickReportun üzerinde QrShape diye bir nesne olmadığı için hata alıyorsunuz.... Sek.Top:=15 gibi doğrudan değer atayın

sek.Left:=qrshape1.left; Bu da aynı şekilde
sek.Shape:=qrshape1.Shape; Bu da aynı..

Doğrudan sayı ataları yaparak deneyin.... Veya Başka bir bileşeni baz alın..

Benim yukarda gönderdiğim kod çalışıyor...

Sevgiler...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Kullanıcı avatarı
feride
Üye
Mesajlar: 11
Kayıt: 21 Oca 2004 04:49
İletişim:

Mesaj gönderen feride »

pardon şairin mesajını görmemişinm.
onunkini yapınca oldu.
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

:lol:
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Kullanıcı avatarı
feride
Üye
Mesajlar: 11
Kayıt: 21 Oca 2004 04:49
İletişim:

Mesaj gönderen feride »

hmm ayni kodu detail bandda yaziyorum hata veriyor
niye acaba


procedure TForm1.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);


var
sek:TQRShape;
begin
sek:=TQRShape.Create(Self);
sek.Parent:=DetailBand1;
sek.Name:='sss';
sek.top:=30;
sek.Width:=700;
sek.Height:=15;
sek.Left:=5;
sek.Shape:=qrshape1.Shape;

neden bileniniz varmı
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Evet !.
Detail bantın yapısı şudur:
Bağlı olduğu queryde ki her kayıt için döngüye girer. Her döngüdede before printa uğrar. Bu sebeble kayıt sayınız kadar QrShapeniz olur. :)
Tabi bu arada hafızanız yerle yeksan olur. Program ya kilitlenir. Ya çöker..
Bu yüzden Detail bantın eventlarını kullanırken bunu gözönüne almanız gerekli...

Sevgiler...
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Kullanıcı avatarı
feride
Üye
Mesajlar: 11
Kayıt: 21 Oca 2004 04:49
İletişim:

Mesaj gönderen feride »

re : sair
sek.top:=detailband1.Top+qrshape1.top+qrshape1.Height+10;

QuickReportun üzerinde QrShape diye bir nesne olmadığı için hata alıyorsunuz.... Sek.Top:=15 gibi doğrudan değer atayın


bunları yazmışsınız ama benim qrshape1 elemanım var.
ona göre hiamlamaya çalışıyorum.
ama salt kodla
procedure TForm1.DetailBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);

detailbandin before printine yazınca hata veriyo meret aynı işi
sair
Kıdemli Üye
Mesajlar: 288
Kayıt: 16 Haz 2003 04:41
Konum: Kastamonu
İletişim:

Mesaj gönderen sair »

Yukarda da belirttiğim gibi Bu kodu detail bantın Before postuna yazamazsınız. Yazarsanız Detail bantın bağlı bulunduğu Query veya Table daki her kayıt için Detail bantın beforepost olayı çalıştırılacaktır. Bu sebeble bu kodu QuickReportun Beforeprint ına yazmalısınız. Şayet her kayıt için bir QrShape oluşturacaksınız o başka mesele..
Diğer olaya gelince
sek.top:=qrshape1.top;

olarak deneyin.. QrShape1 in üstüne göre hizalayacaktır...

Detailbantın üstüne bir qrshape1 koyup aşağıdaki kodu yazdığımda bende çalışıyor. Ancak sizde neden çalışmıyor bilmiyorum.
sek.top:=detailband1.Top+qrshape1.top+qrshape1.Height+10;
Programa bir breakPoint koyup adım adım çalıştırarak hatanın tam yerini tespit ederseniz belki yardımcı olabilirim..
Sevgiler....
Geçip gideriz bizde ağızsız,dilsiz ve sorgusuz
İstanbul gibi düşeriz iki kıtaya birden...
En aşağılık düş, en büyük sevdadan belki
Erkek ölümler; bir uzun iç çekişle büyür göğsümüz
Cevapla