Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 5 odgovora
  • 2.356 pregleda

Najnovija ↓

Enter kao Tab u setanju kroz formove 01.06.2007. u 13:11 · pre 236 meseci #1
Pitanje : Kako da se u aplikaciji omoguci korisnicima da se kroz polja setaju i sa tab-om i sa enterom?
Pronasao sam par tema sa donekle tacnim odgovorima na ovo pitanje, ali ni na jednom jos nisam nasao objedinjen nacin da se ova funkcija realizuje.

Naime, koliko sam uspeo da procitam, svuda se, na ovaj ili onaj nacin, ova funkcionalnost realizuje povezivanjem na onKeyPress. Ovo je ok, ali problemi nastaju kada imate 40+ polja na jednom formu i aplikaciju sa 30+ formova... Zamislite koliko je potrebno vremena da se za svaku komponentu poveze ova funkcija pojedinacno.

Stoga, postavio bih pitanje :
Da li postoji ( i koja) funkcija koja bi mogla da realizuje ovu funkcionalnost na nivou cele aplikacije - npr. pozivom neke winapi f-je koja bi radila prosirenje entera ili nesto drugo...

Do sada sam uspeo da ovo realizujem samo na jednom formu. Evo koda :

Code:

  
procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
  if Msg.CharCode = VK_RETURN then
    begin
       SelectNext(ActiveControl,True,True) ;
    end;
end;



Kod radi, ali kada vrsim poziv nekog modalnog forma, ActiveControl se zadrzava na prvom formu i nista se ne desava.
Pretpostavljam da bi zamena ActiveControl sa "Sender As TWinControl" odradila posao ali ne znam kako sa prosledim Sender-a.

Re: Enter kao Tab u setanju kroz formove 01.06.2007. u 14:40 · pre 236 meseci #3
Pa.... vec sam pregledao ne samo ovaj vec i nekoliko drugih foruma i nisam nasao resenje.
U stvari, sve je ok kada ove funkcije implementiram na main form (recimo form1), ali cim pozovem form2 (form2.showmodal), gubim funkcionalnost.

Probao sam i da modifikujem prethodni kod, ali je rezultat isti! Nemam mogucnost menjanja fokusa u drugom formu.

Code:

   procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
   if Key = Char(VK_RETURN) then
    begin
       PostMessage(Form1.Handle,WM_NEXTDLGCTL,0,0);
    end;
end;



Inace, FormKeyPress sam odradio i za form1 i za form2.
Re: Enter kao Tab u setanju kroz formove 01.06.2007. u 14:47 · pre 236 meseci #4
Hahahahaha...... DA! Zaboravio sam da ukljucim 'KeyPreview' na formu.....

Uglavnom sada radi!
Znaci, zakaciti na FormKeyPress prethodnu f-ju i ukljuciti KeyPreview (za svaki form) i to je to.

Ako neko ima ideju kako bi se ovo moglo resiti na jednom mestu (umesto da se ubacuje na svaki form) neka napise.

Hvala!!!
Re: Enter kao Tab u setanju kroz formove 01.06.2007. u 16:40 · pre 236 meseci #5
> Ako neko ima ideju kako bi se ovo moglo resiti na jednom mestu (umesto da se ubacuje na svaki form) neka napise.

Najčistije rešenje je da napraviš izvedenu kontrolu koja će imati tu funkcionalnost. Koliko se sećam i JVCL ima jednu takvu. Ako ne želiš tako onda možeš se hookovati na application messages i tu uraditi.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Enter kao Tab u setanju kroz formove 01.06.2007. u 16:41 · pre 236 meseci #6
Možeš odraditi OnKeyDown na jedan TEdit, pa hendluj svim ostalim TEdit kontrolama, npr:
Code:
...
 if (Key = VK_RETURN) then
  begin
  if HiWord(GetKeyState (VK_SHIFT)) <> 0 then
    SelectNext (Sender as TWinControl, False, True)
  else
    SelectNext (Sender as TWinControl, True, True);
  end;
...

Taj proces može da ti automatizuje i TJvEnterAsTab iz JEDI projekta.
Potpis
Someone's sitting in the shade today because someone planted a tree a long time ago.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme