Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

ÖNEMLİ AÇIKLAMA: MUTLAKA OKUYUNUZ!

Gönderen Konu: Barkod Yazdırma  (Okunma sayısı 5514 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı dynamo

  • Kıdemli Üye
  • *****
  • İleti: 120
  • Rep: +3/-1
Barkod Yazdırma
« : 16 Nisan 2007 15:55:25 »
vaktiyle,net'ten ücretsiz barkod yazdırma komponenti aramıştım,fakat istediğim gibi bir komponent bulamadım. ::( Bulduğum barqr5 komponenti de programı çalıştırdığında hata veriyordu.kaynak kodlarını inceleyerk hatalı olan satırları iptal ettim :_uf :

Kod: [Seç]
     //if PrintWhere = ParentReport.QRPrinter.Canvas then       //iptal ettiği satırlar ///////
     //BEGIN
      // UsePixelsPerInchX :=
      //     GetDeviceCaps(ParentReport.QRPrinter.Canvas.Handle,LOGPIXELSX);
      // UsePixelsPerInchY :=
      //      GetDeviceCaps(ParentReport.QRPrinter.Canvas.Handle, LOGPIXELSY);
     //END;

ayrıca barkodun yükseklik ve genişliğini tam ayarlanamıyor,font engi değiştirme özelliği yok.yine de acil durumlarda işgörebilir.barqr5 adlı Quickreport komponentini kullanarak Quickrepottan barkod yazdırma işlemini yapalım.deneme şansım olmadı,ARGOX vb. barkod yazdırma cihazlarında çalışacağını sanmıyorum.

İlk programımız Quickreportta 4 tane barkod yazdırma olsun.QuickRep->DetailBand üzerinde 4 tane QRLabel ve 4 tane QRBarcode komponenti var.Fiyat Yazdır->EVET ise QRLabel'lar fiyatı gösterir:



Kod: [Seç]
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 if combobox1.Text='HAYIR'  then begin
   qrlabel1.Caption:='';
   qrlabel2.Caption:='';
   qrlabel3.Caption:='';
   qrlabel4.Caption:='';
   qrbarcode1.Text:=edit1.Text;
   qrbarcode2.Text:=edit1.Text;
   qrbarcode3.Text:=edit1.Text;
   qrbarcode4.Text:=edit1.Text;
   quickrep1.Preview;
 end;
 if combobox1.Text='EVET'  then begin
   qrlabel1.Caption:=trim(edit2.Text)+' '+trim(edit3.Text);
   qrlabel2.Caption:=trim(edit2.Text)+' '+trim(edit3.Text);
   qrlabel3.Caption:=trim(edit2.Text)+' '+trim(edit3.Text);
   qrlabel4.Caption:=trim(edit2.Text)+' '+trim(edit3.Text);
   qrbarcode1.Text:=edit1.Text;
   qrbarcode2.Text:=edit1.Text;
   qrbarcode3.Text:=edit1.Text;
   qrbarcode4.Text:=edit1.Text;
   quickrep1.Preview;
 end;

rapor ekranı:




2. programımız biraz daha profesyonel tarzda olsun.İstediğim kolon sayısı istediğim adette Barkod,Ürün Kodu,Ürün Adı,Fiyat,Özel Mesaj bilgilerini barkod yazdırıken gösterelim.Ayrıca Quickreport ekranında hangi alanların gösterileceği Checkbox seçili ise göstersin.

QuickRep->DetailBand  üzerinde QRLabel ve QRBarcode bileşenlri yok. bunları runtime da kodla oluşturacağız.Nesneleri dinamik diziler kullanarak oluşturuyoruz. dizinin sınırı kolon sayısıdır.yani kolon sayısı kadar label,barkodlar oluşturuyor.:

Kod: [Seç]
procedure TfrmBarkod.BitBtn1Click(Sender: TObject);
var
     QRLabela:array of TQRLabel;
     QRLabelb:array of TQRLabel;
     QRLabelc:array of TQRLabel;
     QRLabeld:array of TQRLabel;
     QRBarcode:array of TQRBarcode;
     QRLabelyazi:array of TQRLabel;
     x1,x2,x3,x4,x5,x6,x7:integer;
     i :Integer;
begin

   if  trim(edit1.Text)='' then begin
      ShowMessage('Barkod Değerini Giriniz...');
      edit1.SetFocus;
      exit;
   end;

   //ini dosyadan ayarları al
   ayarlari_al();
   QuickRep1.Bands.DetailBand.Height:=EtiketY;
   //--------------------------------------------------------------
   if CheckBox1.Checked then   SetLength(QRLabela,kolonsayisi);
   if CheckBox2.Checked then   SetLength(QRLabelb,kolonsayisi);
   if CheckBox3.Checked then   SetLength(QRLabelc,kolonsayisi);
   if CheckBox4.Checked then   SetLength(QRLabeld,kolonsayisi);
   SetLength(QRBarcode,kolonsayisi);
   SetLength(QRLabelyazi,kolonsayisi);
   //---------------------------------------------------------------
   x1:=StokKoduX;
   x2:=StokAdiX;
   x3:=FiyatX;
   x4:=MesajX;
   if combobox1.Text='Code128' then begin
     x6:=BarkodX-5;   //barkod için
     x7:=(BarkodGenislik div 2)-5;   // EAN dışındakiler için barkod rakamı
   end
   else begin
     x6:=BarkodX;   //barkod için
     x7:=(BarkodGenislik div 2);
   end;
   //-----------------------------------------------------------------
   for i:=0 to kolonsayisi-1 do begin
      //stokkodu----
      if CheckBox1.Checked then begin
        QrLabela[i]         := TQrLabel.Create(DetailBand1);
        QRLabela[i].Parent  := DetailBand1;
        QrLabela[i].Name    := 'QrLabela' + IntToStr(i);
        QRLabela[i].Size.Height:=2;
        QrLabela[i].Size.Width:=38;
        QrLabela[i].Size.Top:=StokKoduY;
        QrLabela[i].Size.Left:=x1;
        x1:=x1+EtiketX;
      end;
      //stokadı----
      if CheckBox2.Checked then begin
        QrLabelb[i]         := TQrLabel.Create(DetailBand1);
        QRLabelb[i].Parent  := DetailBand1;
        QrLabelb[i].Name    := 'QrLabelb' + IntToStr(i);
        QRLabelb[i].Size.Height:=2;
        QrLabelb[i].Size.Width:=38;
        QrLabelb[i].Size.Top:=StokAdiY;
        QrLabelb[i].Size.Left:=x2;
        x2:=x2+EtiketX;
      end;
      //fiyat-------
      if CheckBox3.Checked then begin
        QrLabelc[i]         := TQrLabel.Create(DetailBand1);
        QRLabelc[i].Parent  := DetailBand1;
        QrLabelc[i].Name    := 'QrLabelc' + IntToStr(i);
        QRLabelc[i].Size.Height:=2;
        QrLabelc[i].Size.Width:=38;
        QrLabelc[i].Size.Top:=FiyatY;
        QrLabelc[i].Size.Left:=x3;
        x3:=x3+EtiketX;
      end;
      //mesaj---------
      if CheckBox4.Checked then begin
        QrLabeld[i]         := TQrLabel.Create(DetailBand1);
        QRLabeld[i].Parent  := DetailBand1;
        QrLabeld[i].Name    := 'QrLabeld' + IntToStr(i);
        QRLabeld[i].Size.Height:=2;
        QrLabeld[i].Size.Width:=38;
        QrLabeld[i].Size.Top:=MesajY;
        QrLabeld[i].Size.Left:=x4;
        x4:=x4+EtiketX;
      end;
      //barkod ----
      QRBarcode[i]:=TQRBarcode.Create(DetailBand1);
      QRBarcode[i].Parent:=DetailBand1;
      QRBarcode[i].Name:='QRBarcode'+IntToStr(i);
      //---------------barkod tipi seç----------
      if combobox1.Text='EAN13' then QRBarcode[i].BarCodeType:=EAN13;
      if combobox1.Text='EAN8' then QRBarcode[i].BarCodeType:=EAN8;
      if combobox1.Text='Code39' then QRBarcode[i].BarCodeType:=Code39;
      if combobox1.Text='Code128' then QRBarcode[i].BarCodeType:=Code128;
      if combobox1.Text='Int2of5' then QRBarcode[i].BarCodeType:=Interleaved2Of5;
      if combobox1.Text='Postnet' then QRBarcode[i].BarCodeType:=Postnet;
      //////------------------------
      QRBarcode[i].Size.Height:=BarkodYukseklik;
      QRBarcode[i].Size.Width:=BarkodGenislik;
      QRBarcode[i].Size.Top:=BarkodY;
      QRBarcode[i].Size.Left:=x6;
      x6:=x6+EtiketX;

      //EAN dışındaki barkodlar için barkod rakamı-----
      if (combobox1.Text='Code39') or (combobox1.Text='Code128') or (combobox1.Text='Int2of5') or (combobox1.Text='Postnet') then begin
        QrLabelyazi[i]:=TQrLabel.Create(DetailBand1);
        QrLabelyazi[i].Parent:=DetailBand1;
        QrLabelyazi[i].Name:='QRLabelyazi'+IntToStr(i);
        QRLabelyazi[i].Size.Height:=1;
        QrLabelyazi[i].Size.Width:=BarkodGenislik;
        QrLabelyazi[i].Size.Top:=BarkodY+BarkodYukseklik+2;
        QrLabelyazi[i].Size.Left:=x7;
       // QrLabelyazi[i].Alignment:=taCenter;
       // QrLabelyazi[i].AutoSize:=false;
        x7:=x7+EtiketX;
      end ;

  end; //for
  //-------------------------------------------------------
  QuickRep1.Preview;
  //-------------------------------------------------------
  if CheckBox1.Checked then
    for i:=0 to kolonsayisi-1 do
      QRLabela[i].Free;
  if CheckBox2.Checked then
    for i:=0 to kolonsayisi-1 do
      QRLabelb[i].Free;
  if CheckBox3.Checked then
    for i:=0 to kolonsayisi-1 do
      QRLabelc[i].Free;
  if CheckBox4.Checked then
    for i:=0 to kolonsayisi-1 do
      QRLabeld[i].Free;
  for i:=0 to kolonsayisi-1 do
      QRBarcode[i].Free;
  if (combobox1.Text='Code39') or (combobox1.Text='Code128') or (combobox1.Text='Int2of5') or (combobox1.Text='Postnet') then
    for i:=0 to kolonsayisi-1 do
      QRLabelyazi[i].Free;
 //----------------------------------------------------------


end;

QuickRep1->NeedData olayında yazdırma işlemi gerçeklşiyor:

Kod: [Seç]
procedure TfrmBarkod.QuickRep1NeedData(Sender: TObject;
  var MoreData: Boolean);
var
   i:integer;
begin
  MoreData := CurrentIndex < adet;
  if MoreData then begin
    for i:=0 to kolonsayisi-1 do begin

        if CheckBox1.Checked then  TQRLabel(DetailBand1.FindComponent('QrLabela' + IntToStr(i))).Caption := trim(edit2.Text);
        if CheckBox2.Checked then  TQRLabel(DetailBand1.FindComponent('QrLabelb' + IntToStr(i))).Caption := trim(edit3.Text);
        if CheckBox3.Checked then  TQRLabel(DetailBand1.FindComponent('QrLabelc' + IntToStr(i))).Caption := trim(edit4.Text);
        if CheckBox4.Checked then  TQRLabel(DetailBand1.FindComponent('QrLabeld' + IntToStr(i))).Caption := trim(edit5.Text);
        TQRBarcode(DetailBand1.FindComponent('QRBarcode' + IntToStr(i))).Text :=trim(edit1.Text);
        if (combobox1.Text='Code39') or (combobox1.Text='Code128') or (combobox1.Text='Int2of5') or (combobox1.Text='Postnet') then
           TQRLabel(DetailBand1.FindComponent('QrLabelyazi' + IntToStr(i))).Caption :=trim(edit1.Text);
       

    end;
  end;
  Inc(CurrentIndex);
end;


QuickRep1->BeforePrint olayında index'i 0 yapıyoruz.Bu önemli ve beni bayağı uğraştırmıştı.Eğer CurrentIndex ,  QuickRep1BeforePrint sıfırlanmazsa sonsuz döngüye giriyor  ::P :

Kod: [Seç]
procedure TfrmBarkod.QuickRep1BeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
   CurrentIndex:=0;
end;


ayarlari_al proseduru Ayarlar formunda ini dosyaya kaydeilen ayarları alır:

Kod: [Seç]
procedure TfrmBarkod.ayarlari_al();
var
   dosya: TIniFile;
begin
   dosya := TIniFile.Create(ExtractFilePath(Application.ExeName)+'Settings.ini');
   BarkodGenislik:=StrToInt(dosya.ReadString('Options','Barkod_Genislik','0'));
   BarkodYukseklik:=StrToInt(dosya.ReadString('Options','Barkod_Yukseklik','0'));
   EtiketX:=StrToInt(dosya.ReadString('Options','EtiketX','0'));
   EtiketY:=StrToInt(dosya.ReadString('Options','EtiketY','0'));
   StokKoduX:=StrToInt(dosya.ReadString('Options','StokKoduX','0'));
   StokKoduY:=StrToInt(dosya.ReadString('Options','StokKoduY','0'));
   StokAdiX:=StrToInt(dosya.ReadString('Options','StokAdiX','0'));
   StokAdiY:=StrToInt(dosya.ReadString('Options','StokAdiY','0'));
   FiyatX:=StrToInt(dosya.ReadString('Options','FiyatX','0'));
   FiyatY:=StrToInt(dosya.ReadString('Options','FiyatY','0'));
   BarkodX:=StrToInt(dosya.ReadString('Options','BarkodX','0'));
   BarkodY:=StrToInt(dosya.ReadString('Options','BarkodY','0'));
   MesajX:=StrToInt(dosya.ReadString('Options','MesajX','0'));
   MesajY:=StrToInt(dosya.ReadString('Options','MesajY','0'));
   dosya.Free;

   kolonsayisi:=spinedit1.Value;
   adet:= spinedit2.Value;

end;

şimdi , 4 kolon 2 sıra ve Barkod,Ürün Kodu,Ürün Adı,Fiyat,Özel Mesaj yazdırma işlemini yapalım:

program:



ayarlar:



yazdırma:



programın veritabanından stokları alıp yazdırma işlemini yapma fırsatım olmadı.ilk projede product tablosunda tanımlı ürün adları var.2.projeyi sql server'de tablodan barkodları okuma işlemini yapacaktım......... ::)

her iki proje kodlarıyla birlikte burda.barqr5 komponenti içinde:

http://rapidshare.tc/27486742
« Son Düzenleme: 16 Nisan 2007 16:59:49 by Fatih »

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: Barkod Yazdırma
« Yanıtla #1 : 16 Nisan 2007 17:25:59 »
Resimleri sunucuya atmaya yetişemiyorum  :_tsk
Rapiddeki örnekte bulunan ekran görüntülerini slip, sunucuya atarsam sorun olur  mu

Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı haydarxxx

  • Üye
  • ***
  • İleti: 39
  • Rep: +0/-0
Ynt: Barkod Yazdırma
« Yanıtla #2 : 23 Temmuz 2007 20:08:54 »
hocam link i kontrol edermisin  ::P

Çevrimdışı dynamo

  • Kıdemli Üye
  • *****
  • İleti: 120
  • Rep: +3/-1
Ynt: Barkod Yazdırma
« Yanıtla #3 : 24 Temmuz 2007 10:32:05 »

Çevrimdışı haydarxxx

  • Üye
  • ***
  • İleti: 39
  • Rep: +0/-0
Ynt: Barkod Yazdırma
« Yanıtla #4 : 01 Ağustos 2007 23:58:35 »

Çevrimdışı sako

  • Üye
  • ***
  • İleti: 27
  • Rep: +0/-1
Ynt: Barkod Yazdırma
« Yanıtla #5 : 21 Temmuz 2009 12:11:58 »
dynamo  Allah razı olsun senden. Birçok kişiye ilaç oldu bu makale ve ekindeki program...

Çevrimdışı çilli

  • Yeni Üye
  • *
  • İleti: 1
  • Rep: +0/-0
Ynt: Barkod Yazdırma
« Yanıtla #6 : 18 Kasım 2009 23:09:19 »
merhabalar
arkadaşlar yazdırmış olduğum barkodları tekrar okutamıyorum . Sebebi ve çözümü hakkında fikri olan varmı?

Çevrimdışı Lord_Ares

  • Kıdemli Üye
  • *****
  • İleti: 189
  • Rep: +1/-0
Ynt: Barkod Yazdırma
« Yanıtla #7 : 01 Aralık 2009 12:59:02 »
dostum allah razı olsun ya kaç gündür arıyordum, süpersin valla çook sağolasın. millet cevap vermezken sen örnekte yollamışın helal olsun valla sana tebrikler.

Çevrimdışı Lord_Ares

  • Kıdemli Üye
  • *****
  • İleti: 189
  • Rep: +1/-0
Ynt: Barkod Yazdırma
« Yanıtla #8 : 09 Aralık 2009 23:20:57 »
arkadaşlar bu komponenti indirdim fakat bir problem var yardımcı olabilirmisiniz. dynamo arkadaşım component için teşekkürler tekrar fakat senin vermiş olduğun örnekteki programı çalıştırıp barkod no ve adını girip yazdır dediğimde ilkinde yazdırma ekranında barkodu ve adını göruyorum fakat baskı önizlemeyi kapatıp yeni bir barkod girip tekrar yazdır dediğimde boş çıkıyor. sadece adı kısmı gözüküyor. düzelmesi için programı kapatıp açmam gerekiyor bunu nasıl düzeltebilirim sizce hata nerede teşekkürler

Çevrimdışı Lord_Ares

  • Kıdemli Üye
  • *****
  • İleti: 189
  • Rep: +1/-0
Ynt: Barkod Yazdırma
« Yanıtla #9 : 09 Aralık 2009 23:49:32 »
arkadaşlar sorunu söyle düzelteyim yazdırmak istediğim barkod no en az 12 karakter olduğu zaman çıkıyor eğer 12 karakterden az ise önizleme boş çıkıyor ne yapabilirim.

Çevrimdışı Lord_Ares

  • Kıdemli Üye
  • *****
  • İleti: 189
  • Rep: +1/-0
Ynt: Barkod Yazdırma
« Yanıtla #10 : 09 Aralık 2009 23:57:17 »
sorun çözüldü teşekkürler. sorun barkodda değil bendeymiş :) ean8 'i seçersem en az sekiz karakter yazmam gerekiyor ean13 ise en az 13 karakter gerekiyor daha az ise boş çıktı veriyor. sanırım barkod sisteminde kural bu.
teşekkürler

Çevrimdışı barutali

  • Administrator
  • *****
  • İleti: 2.117
  • Rep: +51/-0
  • Cinsiyet: Bay
  • Falan filan ...
Ynt: Barkod Yazdırma
« Yanıtla #11 : 10 Aralık 2009 10:11:33 »
@kocatürk hocamızın sitede barkodlar ile ilgili harika bir yazısı vardı onuda inceleyebilirsiniz .. Ek bilgi olarak



Amatör Küme Programcı

Çevrimdışı wahsiii

  • Kıdemli Üye
  • *****
  • İleti: 50
  • Rep: +0/-0
Ynt: Barkod Yazdırma
« Yanıtla #12 : 29 Haziran 2010 15:54:29 »
Elinize Sağlık.

Çevrimdışı ercanskose

  • Üye
  • ***
  • İleti: 30
  • Rep: +0/-0
Ynt: Barkod Yazdırma
« Yanıtla #13 : 23 Kasım 2011 11:43:02 »
uses kısmında barqr5 hatası alıyorum yardım edebilecek kimse varmı.