resimler...

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Mesaj gönderen loxka »

biraz hızlı sevindik herhal :)
hocam sorun şu JPG kullanıyorum. ayrıca master deail olayını tekrar hatırlatayım. Birde ListBox1.Items.Add 'e (master detail olmasından dolayı) varolan JPG leri kendi getirmeli. Saçmaladım ama
"ListBox1.Items.Add('C:\HKPro\arsiv\'+(Form1.table1DosyaNo.AsString+'_'+Form1.Table5ID.AsString)+'.jpg');" dibi mesela..
Ama yine de kod mükemmel

sağolasın[/code]
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Hazıra konmak yok... :(

- Araştırma sırası sende... Hem Master Detail ilişkisi seni ilgilendirir... Hani çözmüştün...

- Hadi son kıyak (ayağa düşmesin artık) yapacağın şey detail tabloda gördüğün listeyi ufak bir döngü ile ListBox1'e aktarmak o kadar...

- Bmp'nin Jpg dönüşümünü defalarca bildirdik... :!: :?:
Resim
Resim ....Resim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

bmp'den jpeg'e, jpeg'den bmp'ye dönüşümlerini ikisi de ipuçlarında vardı.

Kolay gelsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

:arrow: Button procedure'den daha yukarda bir yere aşağıdaki kodu ekle...

Kod: Tümünü seç

Procedure JpgBmp(JPGDosya:TFileName; Bitmap:TBitmap);
Var
  JPGResim : TJPegImage;
begin
  JPGResim := TJpegImage.Create;
  JPGResim.LoadFromFile(JPGDosya);
  Bitmap.Assign(JPGResim);
  JPGResim.Free;
end;
:arrow: Sonra da resmi load ettirdiğin satır olan

Kod: Tümünü seç

    Resim1.LoadFromFile( ListBox1.Items[Sayac] ); // Büyük resmi okuduk...
satırının başına // koyup iptal edip yerine alt satırına şunu yaz...

Kod: Tümünü seç

    JPGBMP(ListBox1.Items[Sayac], Resim1);
:idea: Bu satır senin için JPG olan resmi okur ve BMP yapıp işleme kaldığı yerden devam eder...

:?: Bunu neden yazıyorum bilmiyorum ama sanıyorum vaktim var ondan kolay gelsin... 8)
Resim
Resim ....Resim
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Mesaj gönderen loxka »

Hocam çıkamadım içinden..
Ben listbox1'in Items'ine

Kod: Tümünü seç

listbox1.Items.Add('C:\HKPro\arsiv\'+(Form1.table1DosyaNo.AsString+'_'+Form1.Table5ID.AsString)+'.jpg');
şeklinde tanımlama yapıyorum. Fakat Sadece TableID nin tek kaydını gösteriyor, oda "10" ama bu kayıtta 11 ve 12 de var.
ve C:HKPro\arsiv\55_10.jpg diye göstermesi gerekirken C:HKPro\arsiv\_10.jpg şeklinde gösteriyor.
Kafam uyuştu artık..
yinede sağolun.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

- Master Tablo Tablo1
- Master Tablodaki dosya ön takısı alanının adı da DosyaNO
- Detail Tablo Table5
- Detail Tablodaki dosya takısı alanının adı da ID
- Resimleriniz ise C:\HKPro\arsiv\ dizininde bulunduğunu
şeklinde görüyorum... doğrudur umarım...

- Şimdi Master Tablo bir kayda konumlandığında detail tabloda birden fazla kayıt görüyor olmanız lazım. Master Tablo başka bir kayda konumlanırsa detail tabloda da bu doğrultuda gereken değişikliği görüyorsunuzdur... Bu doğru ayarlanmış mı ?

- Burada Tablo1'in DBGridinde DosyaNo alanı 55 olan bir kayda konumlandığında Tablo5'in aktarıldığı DBGrid'de ID alanında 10, 11, 12 kayıtlarını görüyor musunuz ?

- Burada 55 olan DosyaNo olduğuna emin misiniz ?

- Tablo1'in AftreScroll olayında veya bir buton yardımıyla Tablo5'i first komutuyla ilk kayda konumlandırıp, bir döngü ile Next by Next, EOF'a kadar pozisyon aldırıp değerlerinin daha önce resetlediğini ListBox'a aktarmanız gerekiyor... Burada hata nerde, bulmak size kalıyor...
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Farklı bir konu....

Bir daha baktım da senin kodun...

Kod: Tümünü seç

procedure TForm1.DataSource5DataChange(Sender: TObject; Field: TField); 
begin 
if FileExists('C:\HKPro\arsiv\'+(Form1.table1DosyaNo.AsString+'_'+Form1.Table5ID.AsString)+'.jpg') then 
  begin 
    Image1.Visible := True; 
    Image1.Picture.LoadFromFile('C:\HKPro\arsiv\'+(Form1.table1DosyaNo.AsString+'_'+Form1.Table5ID.AsString)+'.jpg'); 
  end else Image1.Visible := False; 
end;
şeklindeymiş... Bu sadece o kayda konumlanırsa Image1'de resmi görmeni sağlar...

- Yapman gereken şu şekilde...

- Bir resim oluştur... MSPaint veya Photoshop farketmez, içinde "Resim Mevcut Değil" yazısı içeren bir resim olsun.. Klasörde resim yoksa bu resmi devreye sokacaksın.. Boş geçmesin...

- Tablo1 datachange olayında aşağıdakileri yaptıracaksın... Tablo5'in datachanginde değil!

- Burada diğer resimleri de döngüyle ListBox'a aktaracaksın...

Kod: Tümünü seç

var
  ResimDosyasi : String;
begin
  Table5.First;
  Repeat
    ResimDosyasi := 'C:\HKPro\arsiv\'+(Form1.table1DosyaNo.AsString+'_'+Form1.Table5ID.AsString)+'.jpg';
    If FileExists(ResimDosyasi) 
      then ListBox1.Items.Add(ResimDosyasi)
      else ListBox1.Items.Add('C:\HKPro\arsiv\ResimYok.jpg');
    Table5.Next;
  Until Table5.EOF;
  bt_KucukListe.Click(); // Listeyi küçük resimlerle gösteren buton...Hani daha önce verdiğim koddaki
end;
Resim
Resim ....Resim
loxka
Üye
Mesajlar: 214
Kayıt: 18 Ağu 2003 01:10

Mesaj gönderen loxka »

İlk sorduğum sorunumu yardımlarınızla hallettim. sorun çözülmüştür.. Teşekkür ederim.
Cevapla