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

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Kayan Yazı
#1
Yazdığım bir uygulama için "kayan yazı" ile ilgili bir şeyler yazacağım yakın bir zamanda. Bazı testler yaptım VCL ve FMX üzerinde, ancak performanslarından pek de memnun kalmadım. Bu neden ile DirectX kullanarak geliştireceğim. Dolayısı ile verilen bir metni parse etmem gerekecek. Kendime ait bir takım komut setleri oluşturma ve bu komut setleri ile kayacak olan yazıyı formatlı bir şekilde ekranda göstererek kaydırmak istiyorum. Sizlerden bu komut seti ile alakalı fikirlerinizi rica ediyorum.

Bir kaç örnek vereyim:
  • Bütün komutlar </e> ile biter. (e = End)
  • <b>...</e> arası metin Bold olur.
  • <i>...</e> arası metin Italic olur.
  • <u>...</e> arası metin Underline olur.
  • <a>...</e> arası bir link olarak değerlendirilir.
  • <p="c:\test.png></e> belirtilen path'deki resmi yükler ve kayan yazıya ekler. (p = Picture)
  • <r="ResourceName"></e> belirtilen ResourceName isimli resource dosyasını yükler ve kayan yazıya ekler. (Tabii resource bir görsel olmalıdır) (r = Resource)
  • <fs=24>...</e> arasındaki metnin font boyutu 24 olarak ayarlanır. (fs = Font Size)
  • <fn="Gabriola">...</e> arasındaki metnin font adı "Gabriola" olarak ayarlanır. (fn = Font Name)
Bu konu hakkında görüş ve önerileriniz var ise paylaşırsanız sevinirim.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#2
Merhaba hocam,
En doğru yöntemi yazmışsınız zaten, söylenecek çok şey yok. Kullanım ve yapı olarak HTML tag'lara benziyor. Bu da yönteminizin sıkıntısız ve hızlı kodlanabilir olacağı anlamına geliyor.
Şimdiden hayırlı olsun.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
Fırsat bulabilir isem eğer, bunu bir component olarak yazıp; buradan sizlerle de paylaşmayı düşünüyorum. Bu nedenle yorumlarınızı component'in kullanıcısı olarak da yazabilirsiniz Smile

 Muhtemelen bir rtf çeviricisi de koymam gerekecektir component içeriğine. Netice de bir yazının kayabilmesi için önce bir data olmalı Smile
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#4
Sonraki sürümler için faydalı olabileceğini düşündüğüm birkaç naçizhane önerim;
  • Kaymanın hangi yöne doğru olacağı,
  • Hızı,
  • Alpha Blend değeri,
  • Başlangıç ve Bitiş Alpha Blend değerleri,
  • ve en önemlisi Nesne olacaksa ben oyumu TWinControl'den yana kullanırım.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
Tuğrul abi vakti zamanında eczaneler için tabela uygulaması geliştirmiştim o zaman şunu kullanmıştım Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol zengin metin ve imaj da kaydırabiliyordu kırpışma yapmıyordu, açık kaynak kodlu bir bileşen.
Cevapla
#6
Teşekkür ederim yorumlarınıza, dikkate alacağım. Volkancım, o component'i biliyorum; ama benim için yeterince smooth değil Wink

Şimdilik basit bir örnek uygulamayı Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol indirebilirsiniz:
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#7
Yapılmaya çalışan işlem HTML'in marquee tag'ını hatırlattı bana. 
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Bu yüzden TWebBrowser kullanılsa nasıl olur sorusu aklıma takıldı.
Daha doğrusu IHTMLDocument interface'i kullanılarak yapılabilir mi acaba diye düşünüyorum. Böylece tüm HTML tag'ları da kullanıma hazır olmuş olur.

Tuğrul Bey; örnek çok hoş olmuş   Smile
There's no place like 127.0.0.1
WWW
Cevapla
#8
(14-12-2016, Saat: 10:04)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlYapılmaya çalışan işlem HTML'in marquee tag'ını hatırlattı bana. 
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Bu yüzden TWebBrowser kullanılsa nasıl olur sorusu aklıma takıldı.
Daha doğrusu IHTMLDocument interface'i kullanılarak yapılabilir mi acaba diye düşünüyorum. Böylece tüm HTML tag'ları da kullanıma hazır olmuş olur.

Tuğrul Bey; örnek çok hoş olmuş   Smile

 Aslında bir çok yöntem olur tabii Veli bey. Lâkin bu bir nevi benim kendime açtığım bir challange. GDI ve GDI+ ile yapılan çizimlerin yavaş olduğu muhakkak, bu durumda DirectX-DirectWrite'a yöneldim. Kendi kendime challange. Esasen kullanıcılar kayan yazının ne kadar smooth olduğunun muhtemelen farkına dahi varamayacaklar ama ben farkında olacağım ya. Bu rahatsızlık beni daha iyisini yapmaya itmeye yeterli bir unsur oluyor.

Kafama takılan bir başka husus ise, kayan yazının bitiş noktası ekranın ortalarında bir yerde iken; kuyruğa yeni bir yazı eklendiğinde yeni eklenen yazının nereden itibaren kaymaya başlayacağı ?

 Normalde yeni eklenen yazının ekranın en sağından itibaren kaymaya başlaması lazım ama bu seferde bir öndeki yazının bitiş noktası ekranın ortasında olduğu için yeni eklenen yazı sağdan itibaren kaymaya başlar ise arada bir boşluk olacak ve sanki çirkin bir görünüm oluşacak. Yeni eklenen yazıyı bir önceki yazının bitiş noktasından itibaren kaydırsam bu seferde yazı birden bire belirli bir koordinatta belirmiş olacak.

 Sanki; yeni bir eklenen yazı olduğunda ve ekranda kayan bir başka yazı mevcut ise; mevcut yazının ekran koordinatlarından tamamen çıkmasının beklenmesine müteakip yeni eklenen yazının da bir öncekinin dibine eklenmesi en makulu gibi görünüyor. Siz ne düşünürsünüz bu hususta ?

 İkinci olarak, parse işleminin kolay olması açısından ve string'in de unicode olmasından dolayı (char = 2 Byte); komutların 2 byte (word) yapılması gerektiğini düşünüyorum. Örneğin <b> komutu için 190 ve 00, <fs=24> için 195 ve 24 byte'larını birleştirerek eklemeyi düşünüyorum yazıya. Böylece parse ederken epeyce kolaylaşmış olacak işler.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#9
Bence yeni bir yazı eklendiğinde bir öncekinin ekrandan tam kaybolmasını beklemeli. Sonrasında yeni yazı en sağdan görünmeye başlamalı.
Tag'ler ise Html'in standart tag'leri olursa kullanıcı için hatırlanması/kullanılması daha kolay olur diye düşünüyorum.
There's no place like 127.0.0.1
WWW
Cevapla
#10
(14-12-2016, Saat: 10:01)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTeşekkür ederim yorumlarınıza, dikkate alacağım. Volkancım, o component'i biliyorum; ama benim için yeterince smooth değil Wink
Şimdilik basit bir örnek uygulamayı Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol indirebilirsiniz:

Tek kelimeyle Mükemmel. Ellerinize sağlık hocam.

(14-12-2016, Saat: 10:22)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol Sanki; yeni bir eklenen yazı olduğunda ve ekranda kayan bir başka yazı mevcut ise; mevcut yazının ekran koordinatlarından tamamen çıkmasının beklenmesine müteakip yeni eklenen yazının da bir öncekinin dibine eklenmesi en makulu gibi görünüyor. Siz ne düşünürsünüz bu hususta ?

Sonradan eklenen yazının akıbeti, dinamik (publish veya public bir özellik olabilir) olmalıdır.  Smile  

(14-12-2016, Saat: 10:22)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olİkinci olarak, parse işleminin kolay olması açısından ve string'in de unicode olmasından dolayı (char = 2 Byte); komutların 2 byte (word) yapılması gerektiğini düşünüyorum. Örneğin <b> komutu için 190 ve 00, <fs=24> için 195 ve 24 byte'larını birleştirerek eklemeyi düşünüyorum yazıya. Böylece parse ederken epeyce kolaylaşmış olacak işler.

Arka planın nasıl olacağını size bırakarak, ön planda (son kullanıcı olarak) şöyle olursa daha iyi olur.

TKayanYazı.Add('Dakika 1 gol 1').Bold.Italik.UnderLine.fs(24).fn('Gabriola').Link('http://www.delphican.com','Delphi Can').Picture('http://www.delphican.com/images/duyuru/delphican.png')

Çok şey istedim galiba.  Smile
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Program içinde resim üzerine yazi gonulali 1 251 06-06-2018, Saat: 11:29
Son Yorum: iyarar
  Fast report yazı boyutu çok küçük JavaCiva 3 484 05-02-2018, Saat: 09:29
Son Yorum: edo
  İstenilen Aralıkta Yazı Girdisi Halil Han Badem 2 322 01-12-2017, Saat: 08:02
Son Yorum: Halil Han Badem



Konuyu Okuyanlar: 1 Ziyaretçi