Form1 Resim Ekleme [Çözüldü]

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ihalilcoban
Üye
Mesajlar: 121
Kayıt: 10 Ara 2015 10:39

Re: Form1 Resim Ekleme

Mesaj gönderen ihalilcoban »

Bu kadar uzun ve karmaşık bir yol izlemek yerine daha basit ve kullanışlı bir yol izlemek daha iyi olur. İleriki zamanlarda kodlarını geri düzenlerken sıkıntı yaşayabilirsin. Kendi kullandığım yöntemi yazayım;

Veritabanı Kısmı (Firebird 2.5)
1. FOTO adında bir tablom var ve bu tablom öğrenci tablosuna detay olarak bağlı.
2. FOTO tablosunda Resim adında BLOB türünde bir alan tanımlı.
3. FOTO_TBL Elemanları PC_NO, KURSIYER_PC_NO(DOUBLE PRECISION) RESIM (BLOB).

Delphi Kısmı
1. FOTO tablosu dataseti KURSIYER tablosu datasetine detay olarak bağlı (select * from FOTO_TBL where (KURSIYER_PC_NO=:PC_NO))
2. FOTO tablosu datasetinin datasourcesi KURSIYER tablosu datasourcesine bağlı.
3. Kursiyerin fotoğrafını yüklemek için;

Kod: Tümünü seç

DM.KURSIYER.Edit;
DM.FOTO.Edit;
if opendialog1.Execute then // eğer opendialog1 aktif ise
 begin
 DBImage1.Picture.LoadFromFile(opendialog1.FileName); //opendialog1 deki resmi image nesnesine aktar
 end;
Bu şekilde kullanıyorum ve herhangi bir sorunla karşılaşmadım. Resim değiştirme, silme vs. gibi işlemleri de kendine göre düzenlersin.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Form1 Resim Ekleme

Mesaj gönderen greenegitim »

Tavsiyem resimi veritabanına yüklemeden önce küçültmeniz ben genel olarak 150X150 px kullanıyorum boyutlandırmak için ise viewtopic.php?f=2&t=36233#p195636 yardımcı olacaktır.
Mücadele güzelleştirir!
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Form1 Resim Ekleme

Mesaj gönderen ozcank »

Bu şekilde kullandım ama hata verdi.
Ben SQL veri tabanına MD_YEDEK1 alanına jpg dosyasını yolu ile kaydediyorum.
MADEN\RESIM dosyası altında resimler.
MD_YEDEK1 de ise şu şekilde c:\maden\resim\resim.jpg olarak kayıtlı oraya kadar sıkıntı yok ama DBGrid1 den seçilen öğrencinin üzerinde cift tıklayınca resmin image1 de görünmesini istiyorum.

Kod: Tümünü seç

Var
Var
Stream: TStream;
begin
  Stream := MADENKAYIT.CreateBlobStream(MADENKAYIT.FieldByName('MD_YEDEK1'), bmRead);
  try
Resim.Picture.LoadFromFile(Stream);
  finally
    Stream.Free();
  end;
end;
---------------------------
Debugger Exception Notification
---------------------------
Project MADENPRJ1.exe raised exception class EInvalidCast with message 'Invalid class typecast'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------


[Error] MADENTANIMA.pas(564): Incompatible types: 'String' and 'TStream'
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Form1 Resim Ekleme

Mesaj gönderen ozcank »

Arkadaşlar bu şekilde çözdüm.

Kod: Tümünü seç

Resim.Picture.LoadFromFile(MADENKAYIT.fieldByName('MD_YEDEK1').AsString);
Resim yüklü değilse hata veriyor. Onu nasıl önleyebilirim ?
---------------------------
Debugger Exception Notification
---------------------------
Project MADENPRJ1.exe raised exception class EInvalidGraphic with message 'Unknown picture file extension (.)'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Form1 Resim Ekleme [Çözüldü]

Mesaj gönderen greenegitim »

bos.jpg olarak bir resim tut resim yuklu değilse bos.jpg göstersin.
Mücadele güzelleştirir!
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Form1 Resim Ekleme [Çözüldü]

Mesaj gönderen ozcank »

greenegitim tşk. ederim dediğin gibi hallettim. Fakat düzeltme ekranında eğer resim seçmemişse bir önceki resmini boş yapıyor.
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Form1 Resim Ekleme [Çözüldü]

Mesaj gönderen ozcank »

Boş resim kaydetmeyi de şu şekilde hallettim başka şekilde yapılabilirse yazarsanız çok sevinirim.

Kod: Tümünü seç

MADENKAYIT.FieldByName('MD_YEDEK6').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK7').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK8').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK9').Value:=NULL;
MADENKAYIT.FieldByName('MD_YEDEK10').Value:=NULL;

If MADENKAYIT.FieldByName('MD_YEDEK1').AsString='' Then
Begin
MADENKAYIT.FieldByName('MD_YEDEK1').AsString:=OpenDialog1.FileName;
End
Else
Begin
Resim.Picture.LoadFromFile(MADENKAYIT.FieldByName('MD_YEDEK1').AsString);
end;
MADENKAYIT.Post;
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Form1 Resim Ekleme [Çözüldü]

Mesaj gönderen ozcank »

Arkadaşlar, Function yazıp resmi kontrol ettirmek istiyorum bir kod yazdım ama hata aldım bir el atabilir misiniz?

Kod: Tümünü seç

Function ResimKontrolEt(const Code: string): Boolean;
If MADENKAYIT.FieldByName('MD_YEDEK1').AsString='' Then
Begin
MADENKAYIT.FieldByName('MD_YEDEK1').AsString:=OpenDialog1.FileName;
End
Else
Begin
Resim.Picture.LoadFromFile(MADENKAYIT.FieldByName('MD_YEDEK1').AsString);
end;
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Form1 Resim Ekleme [Çözüldü]

Mesaj gönderen greenegitim »

Yazdığınız function boolean tipinde geri dönüş yapar True Yada False

Eğer sadece Resim Varmı yokmu diye kontrol etmek istiyorsanız. fileexists fonksiyonunu inceleyebilirsiniz.

http://www.delphibasics.co.uk/RTL.asp?N ... dCode1=Yes
Mücadele güzelleştirir!
Cevapla