![]() |
|
OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7) +--- Konu Başlığı: OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. (/showthread.php?tid=4605) Sayfalar:
1
2
|
OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - pro_imaj - 10-03-2020 Merhaba, OrangeUI SkinFMXDBGrid'te herhangi bir field'e satıra resim ekleme işlemi için aşağıdaki işlemi uygulayarak ekleye biliyorum, fakat her satırda aynı resim geliyor her satırda istediğim resmi nasıl getirebilirim. Formadaki SkinFMXDBGrid ile birlikte SkinFMXItemDesignerPanel ekleyip içerisine SkinFMXImage nesnesi ekleyip sonrada SkinFMXDBGrid ilgili fields gelip ItemDesignerPanel'i seçiyorum. Böylelikle tek resim olarak tüm satırlarda aynı resim gözükmüş oluyor, fakat ben belirli şartlara göre farklı resimlerin gelmesini istiyorum bunu nasıl yapabilirim, kendi örneklerinde de bulamadım. Teşekkürler. Cvp: OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - egeven - 12-03-2020 Merhaba, Designer içinde yer alan bileşenlerin özelliklerini duruma göre değiştirebilirsiniz, OnPrepareDrawItem eventini kullanarak. (uses bölümüne uDrawCanvas, uSkinItems eklenmeli) Örnek; (burda label ve butonun özelliklerini değiştirdim fakat SkinFMXImage nesnesinin de özellikleri aynı şekilde değiştirilebilir, örneğin SkinFMXImage1.Prop.Picture.SkinImageList atanmış ise SkinFMXImage1.Prop.Picture.ImageIndex istenilen şartlara göre değiştirilebilir) procedure TForm28.SkinFMXListBox1PrepareDrawItem(Sender: TObject; ACanvas: TDrawCanvas; AItemDesignerPanel: TSkinFMXItemDesignerPanel; AItem: TSkinItem; AItemDrawRect: TRect); begin SkinFMXListBox1.BeginUpdate; if AItem.Detail='EASY' then begin l_duel_zorluk_taban.Material.BackColor.FillColor.Color:=$FF27BA27; //YEŞİL b_duel_accept.enabled:=true; end; if AItem.Detail='HARD' then begin l_duel_zorluk_taban.Material.BackColor.FillColor.Color:=$FFE1442B; //KIRMIZI b_duel_accept.enabled:=true; end; if AItem.Detail='MASTER' then begin l_duel_zorluk_taban.Material.BackColor.FillColor.Color:=$FF8A2BE1; //MOR b_duel_accept.enabled:=FALSE; end; SkinFMXListBox1.EndUpdate; end; Sonuç; [attachment=1008] Cvp: OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - pro_imaj - 12-03-2020 (12-03-2020, Saat: 14:23)egeven Adlı Kullanıcıdan Alıntı: Merhaba, Cevap için teşekkür ederim. Evet SkinFMXDBGrid'te bu olay varmış. AItem ile nesneye nasıl ulaşabileceğimi inceleyip bulduğumda çözümü yazacağım. İyi çalışmalar. Cvp: OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - egeven - 12-03-2020 AItem ile image bileşeninin bağlantılı olmasına ihtiyaç yok, OnPrepareDrawItem eyleminde designer içinde yer alan tüm bileşenlere erişebilirsiniz (bileşenler Binding yapılmamış olsalar dahi) örneğin 10 kayıtlı bir listeniz var, ilk kayıtta 1 numaralı resmi geri kalan 9 kayıtta 2 numaralı resmi göstersin isteyelim, designer içerisine 1 adet SkinFMXImage bileşeni ekleyin herhangi bir binding işlemi yapmayın sadece SkinImageList atamasını yapın (bu örnekte imagelist kullanılıyor farklı yollarla image yüklenebilir, dosyadan veya urlden) OnPrepareDrawItem içinde bu şekilde yapabilirsiniz, AItem yalnızca şartlarınızı oluşturmanız için gerekli if AItem.Index=0 then begin SkinFMXImage1.Prop.Picture.ImageIndex:=1; end else begin SkinFMXImage1.Prop.Picture.ImageIndex:=2; end; Cvp: OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - pro_imaj - 13-03-2020 (12-03-2020, Saat: 20:18)egeven Adlı Kullanıcıdan Alıntı: AItem ile image bileşeninin bağlantılı olmasına ihtiyaç yok, OnPrepareDrawItem eyleminde designer içinde yer alan tüm bileşenlere erişebilirsiniz (bileşenler Binding yapılmamış olsalar dahi) Paylaşım için teşekkürler, yeni bir şey öğrenmiş olduk. Bu işlemi yaparken sadece şu ilginç geldi; 5 Kayıt olan bir tablo (grid) için gridListPrepareDrawItem olayına yukarıdaki kod yazdığımda alt kısımda Memo1.Lines.Add (AItem.Index.ToString); 0,1,2,3,4,5 şeklinde 2886 satır kayıt ekliyor performans açısında sakıncalı değil mi. Cvp: OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - egeven - 13-03-2020 (13-03-2020, Saat: 10:37)pro_imaj Adlı Kullanıcıdan Alıntı:(12-03-2020, Saat: 20:18)egeven Adlı Kullanıcıdan Alıntı: AItem ile image bileşeninin bağlantılı olmasına ihtiyaç yok, OnPrepareDrawItem eyleminde designer içinde yer alan tüm bileşenlere erişebilirsiniz (bileşenler Binding yapılmamış olsalar dahi) Teşekkürler. PrepareDrawItem çok fazla çalışıyor, içerisindeki kodları BeginUpdate - EndUpdate içerisine aldığımda gözle görülür performans düşüşü yaşamadım (100 kayıtlı liste mobilde hızlı bir şekilde scroll yapabiliyor) fakat bu kadar fazla çalışmasının başka zararları var mı bilmiyorum Cvp: OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - pro_imaj - 13-03-2020 (13-03-2020, Saat: 12:58)egeven Adlı Kullanıcıdan Alıntı:(13-03-2020, Saat: 10:37)pro_imaj Adlı Kullanıcıdan Alıntı: Paylaşım için teşekkürler, yeni bir şey öğrenmiş olduk. gridListPrepareDrawItem olayında işlem yaparken grid'in bağlı olduğu tablodaki veriye nasıl ulaşabilirim, yani; Tablodaki ilgili satırdaki değer 1 ise şu resmi göster 2 ise şu resmi göster demek istiyorum. *Listbox gibi Item tag özelliği olmadığından erişemiyorum. Cvp: OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - RAD Student - 13-03-2020 (13-03-2020, Saat: 14:13)pro_imaj Adlı Kullanıcıdan Alıntı:(13-03-2020, Saat: 12:58)egeven Adlı Kullanıcıdan Alıntı: Teşekkürler. PrepareDrawItem çok fazla çalışıyor, içerisindeki kodları BeginUpdate - EndUpdate içerisine aldığımda gözle görülür performans düşüşü yaşamadım (100 kayıtlı liste mobilde hızlı bir şekilde scroll yapabiliyor) fakat bu kadar fazla çalışmasının başka zararları var mı bilmiyorum Yaklaşım tarzınız hücre değeri şu ise şu resmi göster olmalı. Burada her veri bir hücre olduğu için tag ile işlem yapılamaz bence. O anda işlem gören aktif kaydın (record no, col index gibi) değerine göre kontrol yapmalısınız Cvp: OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - pro_imaj - 14-03-2020 (13-03-2020, Saat: 15:13)RAD Student Adlı Kullanıcıdan Alıntı:(13-03-2020, Saat: 14:13)pro_imaj Adlı Kullanıcıdan Alıntı: gridListPrepareDrawItem olayında işlem yaparken grid'in bağlı olduğu tablodaki veriye nasıl ulaşabilirim, yani; Tablodaki ilgili satırdaki değer 1 ise şu resmi göster 2 ise şu resmi göster demek istiyorum. Bunu biliyoruz zaten. Sorun; gridListPrepareDrawItem olayında aktif kayıda erişememek! Cvp: OrangeUI SkinFMXDBGrid Satırlara Resim Ekleme Hk. - pro_imaj - 02-04-2020 Bu konuyu çözemedim, ekli dosya olarak basit bir örnek ekledim, aklına bir fikir gelen olursa paylaşırsa memnun olurum. *Ülke sıraları belli diye direk işlem yaparak değilde veri tabanında ülke adı 'Turkey' ise Türk bayrağı şeklinde yapmaya çalışıyorum. *Örnek kaynak dosyalar ektedir. Teşekkürler |