Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

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

Gönderen Konu: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek.....  (Okunma sayısı 4567 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı HBV

  • Delphi 6 Level 5
  • *****
  • İleti: 298
  • Rep: +11/-7
  • Cinsiyet: Bay
Veritabanlarında Genelde Resimler pek tercih edilmezler,sebebi Veritabanlarını şişirdikleri için ..bu yüzden Proğramcılar değişik yöntemler aramağa başlamışlar ve hala bu konuda arayış içindeler.Ama bir gerçek varki günümüzde artık görsel (Resimli)projeler daha çok rağbet görmeğe başlamıştır.
Ama bazı Proğramcılar, Resimleri KB'ları düşük olmak kaydıyla Network'de kullanım kolaylığı yüzünden, Veritabanına kaydederek proje geliştiriyorlar.
Ben Size,Bir çok sitede de ,örnekler verilen ,Resimi Yoluyla Kaydetmeyi Toparlayarak, kısa ve uygulamalı anlatmağa  çalışacağım.
{Firebird Veritabanı ve Interbase Bileşenleri Kullanıldı.}
..............................;
Önce Veritabanımızda, IDNO(Integer) (ki... bu çok önemli; IDNO'da"Generators" Kullanıyoruz.Bu Field'ı gizliyebilirsiniz.) RESIM_ADI(VarChar=50), RESIM_YOLU(VarChar=200) Fieldlerini açıyoruz.(Diğer Ekliyeceğiniz Fieldler sizin Projenizin Gelişimine kalmış.Yani size bağlı.).


Sonra; Form'umuzda bir Image ve DBEdit1 Koyuyoruz ve Generators tanımlı IDNO'yu DBEdit1'e Atıyoruz,
"OnChange" Olayına;
Kod: [Seç]
try
  Image1.Picture.LoadFromFile(IBDataSet1.FieldByName('RESIM_YOLU).AsString);
 except
  Image1.Picture.LoadFromFile('C:\Proje\resimyok.bmp');
 end;
Böylece ilk Kod'umuzu Ekliyoruz,"IDNO" Field'li DBEdit1'in "OnChange" olayına atanan Bu Kod Resimlerin Görüntülenmesi açısından çok önemlidir.
Diyelim Yoluyla kaydettiğiniz Resim HardDisk'inizden silindi,daha önceden hazırlayıp"('C:\Proje\resimyok.bmp');" bu adrese kopyalayacağınız, resim olmadığını anlatan bir Joker resim'i hedefliyoruz,bunun amacı silinen orjinal resim bulunamazsa, bu Joker resim devreye girecektir.

yine bir OpenPictureDialog'la,DBEdit2 Koyup,"RESIM_YOLU" Field'ini Atıyoruz.Bu Field'e Resmin Yolu Yazılacaktır,Bu Field'de çok önemlidir.

Şimdi gelelim Resimlerin Yolunu Veritabanına yazma olayına  Form'umuza bir Button koyuyoruz,bu Buttonun "OnClick" Olayına;

Kod: [Seç]
begin
if MessageDlg('YENİ KAYIT AÇMAK İSTİYORMUSUNUZ?', mtWarning, [mbOK, mbCancel], 0) = mrOK then
  begin
   try
    IBDataSet1.Append;
   except
    ShowMessage('YENi KAYIT EKLERKEN HATA OLUSTU TEKRAR DENEYiNiZ');
   end;
   //OpenPictureDialog1.Filter:='All images ('+BitmapLoaders.GetLoadFilter;(Daha önceki makalemde Kullandığım "TiffRead.dll"dosyasını-projenizin Exe'nin      bulunduğu   yere kopyalayarak Tüm Formatları kullanabilirsiniz.).
  if OpenPictureDialog1.Execute then//Uses'e "jpeg";" eklemeyi unutmayınız.
    //with TLinearBitmap.Create do//("Filter" Parametresi kullanılırsa........).
     begin
       //LoadFromFile(OpenPictureDialog1.FileName);("Filter" Parametresi kullanılırsa........).
       Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);//Resim önce imagede görüntüleniyor.
       IBDataSet1.Edit;//Veritabanına yazmak için hazır......
       DBEdit2.Text:=OpenPictureDialog1.FileName;//Resmin VT'de görüntülenmesi için son darbe burada vuruluyor.
       IBDataSet1.Post;//Veritabanına yazıyor....
      end;
   end;
.......Atıyoruz...En son olarak Formumuza  DBText ve bir DBGrid Ekliyoruz (Liste için) , "OnCellClick" ve "OnKeyUp" olayına yine aşağıdaki kod'u atıyoruz;

Kod: [Seç]
DBText1.Caption:=IBDataSet1RESIM_YOLU.AsString;Bunun Amacı Veritabanına kaydedilen Resim yolunu,Imagenin uygun bir yerine yerleştireceğimiz DBText'de görüntelemektir...

.............................Böylece Resimleri yoluyla Veritabanına kaydeden küçük projemiz hazır..HDD'nizin kapasitesine göre ,bu Şekilde Yüzlerce ve binlerce Resim'i yoluyla Veritabanınıza yazdırıp gösterebilirsiniz. Bir hatamız olduysa af ola ......Kolay Gelsin.......




« Son Düzenleme: 28 Mart 2007 00:23:10 by HBV »

Çevrimdışı hayati

  • Administrator
  • *****
  • İleti: 860
  • Rep: +19/-3
  • Cinsiyet: Bay
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek.....
« Yanıtla #1 : 28 Mart 2007 08:29:05 »
teşekkürler güzel makale ve bol şans kardeşim :)
Olsa dahi tenimin kıl biten her yeri bir dil, güçsüzüm şükretmeye,şükrüm binde bir bile değil (İ.R.)

Çevrimdışı Fatih

  • Emekli Yönetici
  • *****
  • İleti: 2.217
  • Rep: +43/-10
  • Cinsiyet: Bay
    • Delphi Dünyası
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek.....
« Yanıtla #2 : 28 Mart 2007 09:40:45 »
Ellerine sağlık hocam. :_tsk
Malulen emekli programcı / yazar. Bildiklerini unutmakta olduğundan size cevap veremez.

Çevrimdışı NewCoder

  • Delphi 1 Level 4
  • ****
  • İleti: 30
  • Rep: +0/-0
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek.....
« Yanıtla #3 : 28 Mart 2007 18:45:55 »
Merhaba;
Eline sağlık güzel bir makale olmuş.Aslında bende bu öntemle hallediyorum bu olayı.Ancak Server/Client programlamada şöyle bir sorun ortaya çıkıyor.Resim hangi clientten kaydedildi ise o clientten bakılınca gösterilebiliniyor.Doğal olarak o path diğer clientte olmayan bir kmonuma karşılık geliyor.Hem paylaşıma açık olmadan resmi görüntüleme şansı zaten yok.Bu sorunu acaba nasıl çözebiliriz.Buradaki değerli üstatlar belki bu soruna bşir çözüm getirebilirler.Herkese kolay gelsin.
Patch'i Çıkmamış Programdan Ümit Kesilmez.

Mal kaybeden, bir şey kaybetmistir, onurunu kaybeden birçok şey kaybetmiştir.
Fakat cesaretini kaybeden her şeyini kaybetmistir.
--Goethe--

Çevrimdışı HBV

  • Delphi 6 Level 5
  • *****
  • İleti: 298
  • Rep: +11/-7
  • Cinsiyet: Bay
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek.....
« Yanıtla #4 : 28 Mart 2007 19:10:42 »
Rica ederim........

Alıntı yapılan: NewCoder
Server/Client programlamada
Evet Bunun üzerinede çalışmalarım var ... ama şu anda deneme aşamasında......
« Son Düzenleme: 28 Mart 2007 19:18:53 by HBV »

Çevrimdışı irfann

  • Delphi 2 Level 2
  • **
  • İleti: 64
  • Rep: +0/-2
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek.....
« Yanıtla #5 : 29 Mart 2007 14:06:30 »
saolasın güsel bilgi için

Çevrimdışı HBV

  • Delphi 6 Level 5
  • *****
  • İleti: 298
  • Rep: +11/-7
  • Cinsiyet: Bay
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek.....
« Yanıtla #6 : 12 Nisan 2007 19:29:47 »
"Veritabanına Resim'i Yoluyla ,Kayderek Göstermek" Başlıklı makalenin  arkadaşlarımıza daha faydalı olması kanısıyla Makaleye Ek olarak hazırladığım; Örnek proğramı Ek Seçenekler 'e Ekliyorum.("resimdeneme" Deneme Veritabanının bulunduğu klasörü C:\ kopyalayınız).
Kolay Gelsin.

Çevrimdışı black_meteora

  • Delphi 1 Level 3
  • ***
  • İleti: 26
  • Rep: +0/-0
Ynt: Veritabanına Resim'i Yoluyla ,Kayderek Göstermek.....
« Yanıtla #7 : 30 Eylül 2010 23:40:45 »
ellerine sağlık hocam...