Stringgrid yazdırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
makgun64
Üye
Mesajlar: 10
Kayıt: 18 Nis 2012 09:53

Stringgrid yazdırma

Mesaj gönderen makgun64 »

Stringgrid içeriğini yazdırma sorunu yaşıyorum

rave, quickreport, fast report farketmez
birçok sitede var ama memo alanına yanyana ekliyor

çıktıyı ızgara şeklinde almak veya altalta geritmek istiyorum.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Stringgrid yazdırma

Mesaj gönderen mkysoft »

stringgriddeki verileri bir memtable'a atabilirsiniz. diğer basit seçenek ise, listbox kullanmak. memo yerine listbox kullanın ve runtimeda çizgiler oluşturun. ben olsam memtable yaparım.
makgun64
Üye
Mesajlar: 10
Kayıt: 18 Nis 2012 09:53

Re: Stringgrid yazdırma

Mesaj gönderen makgun64 »

birde ravereports da tableprinter var bu tablo şeklinde yazdırmak için mi kullanılıyor

memtable ve listbox atadıktan sonra memtable nasıl yazdırılıyor kısaca anlatabilirmisiniz.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Stringgrid yazdırma

Mesaj gönderen mkysoft »

mentable ve listbox ayrı seçenekler. Önce list box anlatayım. Raporunuza stringgrid deki kadar list box ekleyin. Raporu ekrana basmadan önce, bu listboxlara verileri yazın.
makgun64
Üye
Mesajlar: 10
Kayıt: 18 Nis 2012 09:53

Re: Stringgrid yazdırma

Mesaj gönderen makgun64 »

sonra yazıcı çıktısı nasıl alınacak
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Stringgrid yazdırma

Mesaj gönderen mkysoft »

anlamayamadım ama ismini verdiğiniz raporlama bileşnlerini bildiğinizi varsaymıştım ben. bu rapor bileşenlerinden her hangi birinin kullanımı kitaplardan yada pdf lerden öğrenebilrisiniz.
makgun64
Üye
Mesajlar: 10
Kayıt: 18 Nis 2012 09:53

Re: Stringgrid yazdırma

Mesaj gönderen makgun64 »

raporlama konusunda pek bilgim yok, bileşenlerin birçoğunu bilmiyorum. malesef yerli kaynaklarda da hep üzerinden şöyle bir geçmişler
rave report ta tableprinter adında bir bileşen var işimi görecceğini tahmin ediyorum fakat kullanımını bilmiyorum.
raveraport ve qreportta edit lerdeki değerleri göndererek yazdırabiliyorum ama stringgrid içeriğini yazdıramadım.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Stringgrid yazdırma

Mesaj gönderen mkysoft »

benzer şekilde stringriddeki verileri listboxlara atacaksınız. raporunuza stringgriddeki sütun sayısı kadar yan yana listbox ekleyin. her bir kolondaki verileri ilgili listboxa ekleyin.
makgun64
Üye
Mesajlar: 10
Kayıt: 18 Nis 2012 09:53

Re: Stringgrid yazdırma

Mesaj gönderen makgun64 »

listboxa ekleme işlemi kolay ondan sonra oradan nasıl yazdıracaz.

bu arada dos ortamında çıktı almaya çalışıyorum aşağıdaki komutlar işe yaradı
printer.BeginDoc ;
printer.canvas.Font.Name:=TFontName('arial') ;
printer.Canvas.Font.Style:=[fsbold];
printer.Canvas.Font.Size:=14;
printer.Canvas.TextOut(400,50,'DDD LTD.ŞTİ.');
printer.canvas.Font.Name:=TFontName('Courier New') ;
printer.Canvas.Font.Style:=[fsbold];
printer.Canvas.Font.Size:=10;
listbox1.Items:=printer.Printers;

printer.Canvas.TextOut(100,200,'TARİH : '+ datetostr(dateof(now))+' '+timetostr(timeof(now)));

printer.Canvas.TextOut(100,300,edit1.text);
printer.Canvas.textout(800,300,edit2.Text);

printer.Canvas.TextOut(100,400,'ADRES :'+edit3.text+' '+edit4.text);
printer.Canvas.textout(100,500,' '+edit5.Text+' '+edit6.Text+' '+edit7.Text+' '+edit8.text);


printer.Canvas.TextOut(100,700,'SİPARİŞ AD. FİY. TUT. ' );

for x:=1 to 9 do begin
for y:=1 to stringgrid1.rowcount-1 do begin
printer.Canvas.TextOut(dizicol[x],y*100+700,stringgrid1.cells[x,y]);
end;
end;
printer.Canvas.TextOut(1550,stringgrid1.RowCount*100+700,'-------------');
printer.Canvas.TextOut(1550,stringgrid1.RowCount*100+800,'TOPLAM :'+edit14.text);
printer.EndDoc;

end;
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Stringgrid yazdırma

Mesaj gönderen mkysoft »

siz galiba listbox'ı formunuza ekliyorunuz. listbox'ı rapor tasarımına eklemelisiniz.
makgun64
Üye
Mesajlar: 10
Kayıt: 18 Nis 2012 09:53

Re: Stringgrid yazdırma

Mesaj gönderen makgun64 »

forma ekledim

rapor tasarımında nasıl kullanıldığını bilmiyorum

bir sıkıntı daha oldu
bu kodlarla yazdıramayınca hata veriyor
yazıcı aktüf mi değil mi nasıl kontrol edilir.
Kullanıcı avatarı
GOLAKS
Üye
Mesajlar: 22
Kayıt: 06 Nis 2006 09:47
Konum: İSTANBUL
İletişim:

Re: Stringgrid yazdırma

Mesaj gönderen GOLAKS »

ListBox.rar
(63.33 KiB) 254 kere indirildi
Umarım faydası olur
Golaks Yazılım
Bilgileriniz Kayda Değerse..!
www.golaks.com.tr
Kullanıcı avatarı
ender_arslanturk
Kıdemli Üye
Mesajlar: 709
Kayıt: 18 Şub 2005 03:38
Konum: İstanbul

Re: Stringgrid yazdırma

Mesaj gönderen ender_arslanturk »

Selâmlar,

Örnek Fonksiyon :

Kod: Tümünü seç

procedure StringGridYazdir(AGrid: TRzStringGrid);
var
        MaxSizes: array of Integer;
        column, row, sx, sy, LeftSpace: Integer;
begin
        SetLength(MaxSizes, AGrid.ColCount);
        for column := 0 to AGrid.ColCount - 1 do
        MaxSizes[column] := 0;

        for row := 0 to AGrid.RowCount - 1 do
        for column := 0 to AGrid.ColCount - 1 do
        if Printer.Canvas.TextWidth(Agrid.Cells[column, row]) > MaxSizes[column] then
        MaxSizes[column] := Printer.Canvas.TextWidth(Agrid.Cells[column, row]) + 10;

        Printer.BeginDoc;
        LeftSpace := 10; // sol bosluk
        sx := LeftSpace;
        sy := 0;
        for row := 0 to AGrid.RowCount - 1 do
        begin
                for column := 0 to AGrid.ColCount - 1 do
                begin
                        Printer.Canvas.TextOut(sx, sy, AGrid.Cells[column, row]);
                        sx := sx + MaxSizes[column];
                end;
                sx := LeftSpace;
                sy := sy + Printer.Canvas.TextHeight('A') + 2;
        end;
        Printer.EndDoc;
end;
Kullanımı :

Kod: Tümünü seç

StringGridYazdir(StringGrid1)
İyi çalışmalar,
Cevapla