İçeriğe geç →

Abdullah ILGAZ Yazılar

FireMonkey uygulamalarınızda bildirim çubuğuna bildirim gönderme

Merhaba,

FMX projelerinizde uyarı, bilgi ve hatırlatmalar göndermenizi kolaylaştıran pratik bir komponent (TNotificationCenter) bulunuyor. Bu komponent, bildirimlerinizi oluşturmanızı, planlamanızı yapmanızı, gönderimlerini sağlamanızı ve kullanıcının bildirime tıkladığı an yanıtı dinlemenizi sağlıyor.

Kullanımı

[Image: nJVb6g.png]

[Image: o6PdW2.png]

  1. Tool Palette’ten;
    • System > TNotificationCenter (bildirimi yönetmek için)
    • Standard > TButton (işlemi tetiklemek için)
    • Standard > TLabel (bildirime tıklandığını bildirmek için)
      komponentlerini formunuza ekleyin.
  2. Eklenen butonunuza çift tıklayın ve OnClick metodunun içine aşağıdaki kodları ekleyin.

    [Image: lb2QGk.png]

  3. Kullanıcının bildirime karşı yapacağı etkileşimleri dinlemek için NotificationCenter1’in OnReceiveLocalNotification (tek) event’ını oluşturun ve aşağıdaki kodları ekleyin.

    [Image: V35QnV.png]

Örnek Proje Çıktısı

[Image: vJda3v.png] [Image: 1GmpRA.png]  [Image: LO7vjj.png]

HTTP üzerinden RTSP ile IP kamera stream işlemek

Şuanda avi uzantılı videolar üzerinden MemoryStream ile yaptığım görüntü işleme projesine ip kamera üzerinden görüntü işleme ihtiyacı oluştu. Kamera çin fason üretimi olduğu için herhangi bir bağlantı sdk yada dll dosyası bulunmuyor. Datasheet dahi bulamadım. En son rtsp üzerinden VLC player’da yayını okumayı başardım ancak bu RTSP’yi tarayıcı üzerinden görüntüleyemediğim için şuan Indy’nin TIdHttp ile işleme yapamıyorum. RTSP işlemek için bir komponent bulamadım. Konu ile ilgili bilgisi olan var mı?

Aynı sorun burada da dile getirilmiş ama ben çözüm bulamadım.

Çözüm:

İndirme
PasLibVlc.dll kütüphanesi, VideoLan projesinin çekirdek yapısına dahil edilmiş. Bu adresten vlc media player+gerekli kütüphaneler birlikte indiriliyor.

Kurulum
Daha sonra Delphi üzerinden Component > Import Component’e tıklıyoruz. Import Active X Control’ü seçerek ilerliyoruz. Listede hızlı bulmak için arama kısmına vlc yazın ve karşınıza gelen tek kütüphaneyi seçerek ilerleyin. Yeni bir paket olarak kurulumu yapın ve bpl dosyasını kurduktan sonra IDE’yi yeniden başlatın.

Kullanım
Toolbar’ın içinde ActiveX paketinde TVLCPlugin2 adında görsel bir komponent sizi karşılayacak. Komponentin playlist özelliğine yayın yapacağı RTSP linkini kod ile ekleyin.

FireMonkey (FMX) Projelerinize hızlı dil desteği eklemek

Merhaba,

Geçenlerde yaptığım küçük bir projede deneme fırsatı bulduğum TLang Komponentinin kullanımı ile ilgili çeşitli bilgilendirmelerde bulunmak istiyorum. Öncelikle FMX Projelerinize hızlı dil desteği eklemek için başvuracağınız bu yolun, köklü ve devasa bir projede kullanımında size istediğiniz yanıtı vereceğinden emin değilim. Nitekim yaşadığım sıkıntıları da yazının sonuna doğru sizlere ileteceğim.

Öncelikle nedir bu TLang, ne işimize yarar?

TLang, FMX projelerimizde yer alan string değerlerin çok pratik bir şekilde değiştirilerek, yerelleştirme (localize) yapmamıza olanak sunan bir komponent.

Nasıl oluşturulur, Dil karşılığı nasıl girilir, Dil nereden eklenir ve komponent nasıl kullanılır?

Herhangi bir komponent yerleştirir gibi Tool Palette’in içerisinden alıp form üzerine bırakabilirsiniz. Bu komponent, diğerlerine nazaran tüm projenin içindeki statik olan string değerleri tarayıp toplama kabiliyetine sahip. (Form1’e yerleştirdiğiniz Lang1, Form2..10, kısaca tüm formları tarar.)

Form üzerine yerleştirdiğiniz TLang komponentinin üstüne çift tıklayarak Language Designer’ı aktif edersiniz. Burada üst kısımdan Add language butonuna basarak TR dilini ekleyin. Tüm projenizde yer alan string değerlerin bir listesini altta göreceksiniz. Karşılarına olduğu gibi değerleri aktarın. Ardından yeni dil ekle diyerek EN olarak İngilizce’yi dahil edin. (Örneklem için)

Yukarıda yer alan ComboBox’tan Dil seçimi yaparak string değerlerin o dilde yer alan karşılığını doldurun. Tüm işlem bittiğinde Save file ile dosyanızı projenin kaynak kodlarının olduğu dizinde Language.lang (yada isim ne verirseniz, uzantı lang olmalı) olarak kaydedin. Kullanıma hazırız.

Run-time (Çalışma anında) Dil değişimi nasıl yapılır?

Bu komponentin acemilik döneminde yapılan basit bir yöntem var. Bu yöntem bazı sorunlar oluşturabiliyor. Mesela Android cihazda çok dil desteği hazır bir projenin Combobox nesnelerinde sadece ItemIndex’inde yer alan string değer dil değişimini görüyorken, diğer ön tanımlı değerler ne yazık ki başarısız oluyor. Tüm değerleri mevcut fonksiyon ile aldığınızda bu sorun yaşanmıyor.

1
2
//Lang1.Lang := 'en'; // bunu kullanmayın!
LoadLangFromStrings(Lang1.LangStr['en']); // bu sağlıklı yöntem

Köklü ve devasa bir projede neden tercih edilmez?

Bir önceki soruda yaşadığımız statik string değerlerin okunmasındaki problem, dinamik değerlerin dil karşılıklarını da okumamıza engel olacaktır. Bunun yerine çok dil desteği olan projelerde genellikle veritabanı yapılarının çoklu dile uyumlu olması sorunumuzu çözecektir. Kelime tablosunda işaretlemeleri yapacak uygun KEY değerlerini oluşturup, dilleri tanıttıktan sonra aktif dilde bu key’in value’su ne ise onu doğrudan kullanabilirsiniz.

TLang hangi projeler için doğru bir tercih olur?

Üzerinde veritabanı işlemlerini çok yapmayacağınız, yapacaksanız da ortak değerleri muhafaza edecek şekliyle dinamik verilerin çeviri yönetimini manuel yapacağınız her projede kullanılabilir. Statik string değerlere sahip projeler için müthiş hız kazandıracaktır. Tanıtım projelerinde, ürün projelerinde, basit fonksiyonel işlemlerde ve oyunlarda genellikle sabit menü ve  string kullanımı yaygındır. Bu yüzden saydığım proje türlerinde kullanmanız avantajlı olacaktır.

Dip: örnek bir proje oluşturup ekran görüntüleri almak için yeterli zamanım olmadığı için sizlere hazır bir örnek linki vereceğim. Örnekte ListBox’ta seçilen dil doğrultusunda string değerlerin değişimini ve kelimenin kullanımını gösteriyor.