Jump to content

HowTo: TUniMonitoredKeyItem


Freeman35

Recommended Posts

Hello,

I add TUniMonitoredKeyItem #13(KeyStart & KeyEnd)

MonitoredKeys.Enabled:= True;

NavigatesKeys.Enable:= True;

NavigatesKeys.Next.Key:= 40;//VK_Up

NavigatesKeys.Next.Key:= 38;//VK_Down

 

And I add this code in my form's source

procedure TaFRM.UniFormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  case Key of
    VK_RETURN: if ssShift in Shift then begin 
                 Key:= VK_UP; 
                 Shift:=[]; 
               end else Key:= VK_DOWN;
  end;

I need rerun "NavigatesKeys" code's of form. How to this?

Why I need this, VK_Down key allways handle from comboboxes date & time edit etc. So user click to Enter (or shift + Enter) key to jump to nezt or previus Edit on form. Yes I can add code on my KeyDown event but need for add all form. And I'm just try my chance.

Or meybe can add more keys on OI underkeys next, prior etc property.

Regards.

Link to comment
Share on other sites

  • Administrators

Hello,

 

Above code will not work. In uniGUI you can not change pressed key on server side.

 

You can use MainModule to set the NavigateKeys, so it will work for all forms. Please see our NavigateKeys demo.

 

When user is in a ComboBox, he can press TAB key to advance.  If you want to use ENTER key then it must be implemented on client side.

Link to comment
Share on other sites

Above code will not work. In uniGUI you can not change pressed If you want to use ENTER key then it must be implemented on client side.

I mean, for example, talk about TUniEdit. OnKeyDown event where to work ? Severside or clientsite.

Soory not enough english so I'll write my language, some one can chage it to english or other.

 

mesajından alıntıdaki bölümde bahsettiğin "client arafında" dediğin kodu, delphide ve unigui de nereye yazmam gerekiyor? Aslında tam olarak öğrenmek istediğim ise, unigui içerisinde mesela bir event "onkeydown" bu event e yazılan kod, server tarafında mı çalışıyor client tarafında mı? Benim web konusunda bildiklerim oldukça eksik, sadece teorik olarak bilgim var. Bu yüzdende zorlanıyorum.

Tam olarak öğrenmek istediğim, unigui de şu şart yada bu eventler server şu şart yada buraya yazılanlar da client tarafında gibi bir standart var mı? Bu ayrımı nasıl yapabilirim?

  1. Yukarıdaki örnekle anlatarak bunu genelleyebiliriz belki. Tab key windows un default tanımlı tuşu, bu browser içerisinde kontrol ediliyor, yani client side ta ? doğru mu?
  2. Ben Enter a basıldığında da Tab a basılmış gibi davranılmasını istiyorum, yani senin clientside da diye kastettiğin bu sanırım.
  3. Bu kodu unigui de nereye yazarsam client tarafında çalışıyor? öğrenemek adına bunu server tarafında çalıştırmak istesek bu nasıl vereye yazılmalı

Umarım anlatabilmişimdir. Kusura bakmayın bu yorgunlukla ingilizcem yetmedi derdimi anlatmaya, Forumda örnek yada açıklayıcı olacağını düşünen varsa bu yazdıklarımı çevirebilir.

 

Thank you.

Link to comment
Share on other sites

  • Administrators

This must be done using CleintEvents.ExtEvents. It requires being familiar with Ext JS and JavaScript.

 

Burada sana önereceğim şey uniGUI'de bu tür tasarımlarla uğraşmamak en güzelidir. Web masaüstü gibi değildir. Tüm alanların Enter ile çalışmasını istiyorsan onu zaten uniGUI'de yapabiliyorsun. Ama bazı yerlerde Enter diğer yerlerde OK tuşları ile çalışsın istersen o zaman iş biraz zorlaşıyor. Web'in standartlarına uymak her zaman en doğrusudur. Dediğim gibi masaüstü program mantığı ile web uygulaması geliştirmek doğru değildir.

 

Web'de kullanıcıları belli kalıplara zorlamak lazım. Bana sorsan en güzeli  TAB tuşu zaten. Fazlasına gerek yok.

Link to comment
Share on other sites

"CleintEvents.ExtEvents",  little bit more light on :)

 

Öğrenme aşamasında bu tip bilene basit gelecek şeylerle uğraşmak, geneli öğrenmeye oldukça yardım olur. Konuyu devam ettirmekte ki amacım, key lerden çok server-client ayrımlarını dahada netleştirebilmek. O sıralarda sen Türkiye demiydim bilmiyorum, TV reklamlarında şöyle bir cümle vardı, bu halk arasında bir ara popüler olmuştu "Top sana gelmiyorsa, sen topa gideceksin" :)

Tab tuşunun klavyede varolma sebebi o zaten. Destop uygulamamı unigui ile web e aktarmaya çalışıyorum, benim için tab yada mouse sorun yok, ama son kullanıcının alışkanlıklarını kırmak oldukça zor. Bir örnek verip konuyu kapatayım, desktop ta yazdığım bir uygulamamda, müşteri !? bu program nasıl böle ya bir sürü tuşa basmadan çalışmıyor dedi. Ben arkamı dönüp çıktım. Çünkü bir sürü tuş dediği, İlki enter bu veri tabanına bağlatı yapıyor, sonra şifre giriyor, default 3 harf, sonrada login olabilmek için tekrar enter a basıyor. Sanırım nasıl bir mantıkla uğraşmak gerektiğini anlatabildim :)

 

Thank you for explain.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...