Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4.5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Image nesnesi saydam kısımlara tıklamama
#1
Question 
Merhaba,
Projedeki Image nesnelerin saydam kısımlarına fare ile tıklanmasını istemiyorum. Altta hangi nesne varsa ona tıklansın.

Örnek olarak aşağıda 3 Image nesnesi var ve bunların dikdörgen olarak kapladığı alanlar görülüyor. En üstte duran nesnenin saydam kısımları diğer bileşenin büyük kısmını kapladığı için alttaki bileşenin görünür yerleri yerine üstteki bileşenin saydam kısımları tıklanıyor.

Bu durumu nasıl çözebilirim?

G3vYky.png
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#2
Merhaba.

Bu resmin siyah beyaz veya kırmızı beyaz gibi bir iz - düşümü maske kopyasını ikinci başka bir TImage nesnesine yüklersin. Ancak bu ikinci kopya ekranda görünmesin, Visible False olsun.

Birinci (orjinal) TImage üzerindeki OnMouseMove olayında X,Y koordinatını bu ikinci oluşturduğun anahtar olarak iş görecek TImage üzerinde aynı koordinatta hangi renk iz düşümü yapmışsan o renk varsa mouse ile tıklamaya müsaade edersin, yok koorinat noktası beyaz ise mouse ile tıklamaya müsaade etmezsin.

Bu durumu güncel olarak MouseMove sırasında Mouse Cursor şeklini değiştirerek kullanıcıya gösterebilirsin. Bu metodu ben Türkiye haritası vb. projelerde kullanıyorum ve çok başarılı sonuçlar alıyorum.

Başarılar.
Saygılarımla
Muharrem ARMAN

WE75nm.gif
Cevapla
#3
@mrmarman öncelikle ilgine teşekkürler.
Benzer bir yöntemi şöyle denemeyi düşündüm. Sonuçta ben saydam kısımlara tıklanmasını istemiyorum ve tıklandığında altındaki kısma tıklanmasını sağlamak istiyorum. Bileşenin mouse olaylarına tıklanan kısmın saydam olması durumunda bileşenin hittest (sanırım FMX ile gelen bir olay) olayını disable yapmayı planladım. Bir nevi bahsettiğin şekilde. Bunun üzerinde biraz çalışmak gerekiyor. Çünkü hittest disable dendiğinde o bileşen bir nevi devre dışı kalmış oluyor. Görünür kısımlar görünmeye devam ediyor ancak üzerine tıklanırsa alttakine geçiyor.
Bazı bileşenlerde bu olayı gördüğümden 1-2 kodla aktif edilebileceğini düşündüm.

Ancak sonradan gördüğüm kadarıyla image bileşeni bana çok ters. Türkiye haritası yaptığında pek sorun yok ancak binlerce bileşen olduğunda bellek kullanımı çok çok yüksek. TPath bileşeni işimin yarısından fazlasını görüyor. Tamda böyle vektörel çizim gerekli. Ancak oda bir nevi 1(2) bit. Yani bir çizgi ve dolgu ile oynayabiliyoruz. Üzerine yazı yazmak için çizgilerle yazmak gerekiyor. Bu yedekte.
Tam aradığım olay SVG veya vektörel bir bileşen. Ücretsiz SVG bileşeni bulamadım. Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol adresindeki demo (Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol)

SVG veya benzer vektörel çiz bulamazsam Tpath olmadı riversoftsvg(ücretli) bileşeni gibi duruyor.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#4
(20-08-2016, Saat: 12:57)engerex Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol@mrmarman öncelikle ilgine teşekkürler.
Benzer bir yöntemi şöyle denemeyi düşündüm. Sonuçta ben saydam kısımlara tıklanmasını istemiyorum ve tıklandığında altındaki kısma tıklanmasını sağlamak istiyorum. Bileşenin mouse olaylarına tıklanan kısmın saydam olması durumunda bileşenin hittest (sanırım FMX ile gelen bir olay) olayını disable yapmayı planladım. Bir nevi bahsettiğin şekilde. Bunun üzerinde biraz çalışmak gerekiyor. Çünkü hittest disable dendiğinde o bileşen bir nevi devre dışı kalmış oluyor. Görünür kısımlar görünmeye devam ediyor ancak üzerine tıklanırsa alttakine geçiyor.
Bazı bileşenlerde bu olayı gördüğümden 1-2 kodla aktif edilebileceğini düşündüm.

Ancak sonradan gördüğüm kadarıyla image bileşeni bana çok ters. Türkiye haritası yaptığında pek sorun yok ancak binlerce bileşen olduğunda bellek kullanımı çok çok yüksek. TPath bileşeni işimin yarısından fazlasını görüyor. Tamda böyle vektörel çizim gerekli. Ancak oda bir nevi 1(2) bit. Yani bir çizgi ve dolgu ile oynayabiliyoruz. Üzerine yazı yazmak için çizgilerle yazmak gerekiyor. Bu yedekte.
Tam aradığım olay SVG veya vektörel bir bileşen. Ücretsiz SVG bileşeni bulamadım. Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol adresindeki demo (Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol)

SVG veya benzer vektörel çiz bulamazsam Tpath olmadı riversoftsvg(ücretli) bileşeni gibi duruyor.

Aslında istediğiniz şeyin karşılığı; Region'dur. Bir çok region fonksiyonu vardır, bunlarla bir region oluşturduktan sonra handle(HWND)'ı vasıtası ile bir pencereyi ilgili region'a Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol api'si ile sınırlandırabilirsiniz. Dolayısı ile o sınırların dışında kalan alana tıklamalarınıza ilgili alanın sahibi olan pencere yanıt verecektir.

İlgili API grubuna Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol erişebilirsiniz.

Not: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol ve Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol API'lerine de bakmak isteyebilirsiiniz.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#5
Alıntı:Örnek olarak aşağıda 3 Image nesnesi var ve bunların dikdörgen olarak kapladığı alanlar görülüyor. En üstte duran nesnenin saydam kısımları diğer bileşenin büyük kısmını kapladığı için alttaki bileşenin görünür yerleri yerine üstteki bileşenin saydam kısımları tıklanıyor.

Sorunu alıntıladığım bu şekliyle güzelce ifade etmişsin ama ben önyargıyla atlamışım. 

Evet Tuğrul beyin söylediği şekilde yapılası bir durum.
Saygılarımla
Muharrem ARMAN

WE75nm.gif
Cevapla
#6
Yalnız VCL windows altında geçerli.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#7
(21-08-2016, Saat: 12:42)engerex Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlYalnız VCL windows altında geçerli.

Bir Firemonkey kullanıcısı değilim ama hedef platform Windows ise ilgili Windows API'leri kullanabileceğinizi düşünüyorum. FMX.Platform.Win altında FmxHandleToHWND isimli bir metod olmalı, onu inceleyebilirsiniz arzu ederseniz.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Listview image değiştirme serhat 1 80 30-01-2018, Saat: 13:12
Son Yorum: brs
  Listview image değiştirme sorunu serhat 6 207 28-01-2018, Saat: 13:01
Son Yorum: serhatil
  Listview seçili satır image - Çözüldü serhat 4 139 24-01-2018, Saat: 18:45
Son Yorum: brs
  Listview nesnesi ile birden fazla alan oluşturma Fesih ARSLAN 9 2.500 11-09-2017, Saat: 11:06
Son Yorum: pro_imaj
  İmage'yi kaydetmek Paranoyaq 7 491 10-05-2017, Saat: 22:38
Son Yorum: Paranoyaq



Konuyu Okuyanlar: 1 Ziyaretçi