Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Prelazak s jednog na drugi TEdit?

[es] :: Pascal / Delphi / Kylix :: Prelazak s jednog na drugi TEdit?

[ Pregleda: 3578 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

inherited
Novi Sad

Član broj: 95516
Poruke: 219
*.dialup.neobee.net.



Profil

icon Prelazak s jednog na drugi TEdit?08.09.2006. u 13:48 - pre 214 meseci
Imam dve TEdit komponente. Na osnovu:
Code:

...
 if (Key=VK_RETURN) then Edit2.SetFocus;//OnKeyDown za TEdit1
...

postavlja se fokus na TEdit2. Kako bih odradio suprotno, znaci, kad na osnovu navedenog koda predjem na drugi TEdit, da se isto pritiskom tastera vratim na prethodni TEdit, ukoliko zelim nesto promeniti? Npr. pritiskom SHIFT+ENTER?

Hvala unapred.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Prelazak s jednog na drugi TEdit?08.09.2006. u 15:33 - pre 214 meseci
> postavlja se fokus na TEdit2. Kako bih odradio suprotno, znaci, kad na osnovu navedenog koda predjem na drugi TEdit, da se isto
> pritiskom tastera vratim na prethodni TEdit, ukoliko zelim nesto promeniti? Npr. pritiskom SHIFT+ENTER?

Code:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_RETURN then
    if ssShift in Shift then
      Edit1.SetFocus
    else
      Edit2.SetFocus;
end;


Ali ja bih tebi preporučio ovakav pristup:
Code:

  case Key of
    VK_RETURN, VK_DOWN: SelectNext(ActiveControl, True, True);
    VK_UP: SelectNext(ActiveControl, False, True);
  end;


što će ti doneti nesmetano kretanje po kontrolama na formi u oba smera.
 
Odgovor na temu

inherited
Novi Sad

Član broj: 95516
Poruke: 219
*.neobee.net.



Profil

icon Re: Prelazak s jednog na drugi TEdit?09.09.2006. u 12:25 - pre 214 meseci
savkic, za sad, bi to bilo to.
Hvala.
 
Odgovor na temu

inherited
Novi Sad

Član broj: 95516
Poruke: 219
212.200.179.*



Profil

icon Re: Prelazak s jednog na drugi TEdit?10.01.2007. u 16:55 - pre 210 meseci
Code:

  case Key of
    VK_RETURN, VK_DOWN: SelectNext(ActiveControl, True, True);
    VK_UP: SelectNext(ActiveControl, False, True);
  end;

Probao sam ovo ispisati kao proceduru:
Code:

procedure TForm1.FokusKontrola;
var 
  Key: Word;
begin
  case Key of
    VK_RETURN, VK_DOWN: SelectNext(ActiveControl, True, True);
    VK_UP: SelectNext(ActiveControl, False, True);
  end;
end;

da ne bi za svaki edit ponavljao se kod nego samo, OnKeyDown:
Code:

...
 if Key = VK_RETURN then
  FokusKontrola;
...

Medjutim, to tako ne moze. Da li je neko resio ovaj problem, i kako?
Hteo bih samo za TEdit -e, ponavljati proceduru, a ne ceo kod.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Prelazak s jednog na drugi TEdit?10.01.2007. u 17:42 - pre 210 meseci
> Medjutim, to tako ne moze. Da li je neko resio ovaj problem, i kako?
> Hteo bih samo za TEdit -e, ponavljati proceduru, a ne ceo kod.

Naravno da ne može :) Key nije magična kompajler promenljiva koja dobija virtuelni kod pritisnutog tastara, kako si napisao metodu FokusKontrola, Key ima nedefinisanu vrednost. Redeklariši FokusKontrola metodu tako da prima jedan parametar AKey ili Key, i pri pozivu prosledi vrednost virtuelnog tastera.
Međutim, ne vidim da ova redirekcija donosi neko poboljšanje ili olakšanje u odnosu na zadržavanje logike u event handleru, napravi jedan event handler i svim edit kontrolama dodeli taj isti. Ili napravi naslednika Edit kontrole koji će imati taj kod inkorporiran u sebi.

 
Odgovor na temu

inherited
Novi Sad

Član broj: 95516
Poruke: 219
212.200.179.*



Profil

icon Re: Prelazak s jednog na drugi TEdit?10.01.2007. u 18:53 - pre 210 meseci
Citat:
napravi jedan event handler i svim edit kontrolama dodeli taj isti. Ili napravi naslednika Edit kontrole koji će imati taj kod inkorporiran u sebi.

Ovo mi delije ono pravo.
 
Odgovor na temu

inherited
Novi Sad

Član broj: 95516
Poruke: 219
212.200.180.*



Profil

icon Re: Prelazak s jednog na drugi TEdit?10.01.2007. u 19:10 - pre 210 meseci
Imam ovako primer:
Code:

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Sender = Button1 then
   ShowMessage('Button1 clicked!')
  else
   ShowMessage('??? clicked!') ;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   Button1Click(Button2) ;
   {this will result in: '??? clicked!'}
end;

Kako bih to odradio za TEdit i ovaj moj slucaj?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Prelazak s jednog na drugi TEdit?10.01.2007. u 19:23 - pre 210 meseci
> Kako bih to odradio za TEdit i ovaj moj slucaj?

U Object inspectoru, na Events jezičku iz padajuće liste za OnKeyDown handler izaberi već postojeći handler.
Uzgred, toplo ti preporučujem nabavku neke Delphi knjige.
 
Odgovor na temu

inherited
Novi Sad

Član broj: 95516
Poruke: 219
212.200.180.*



Profil

icon Re: Prelazak s jednog na drugi TEdit?10.01.2007. u 20:27 - pre 210 meseci
savkic
Hvala, ukapirao sam i pre tvog poslednjeg odgovora, samo sam vecerao, tusirao se i nisam stigao javiti, tj. preduhitrio si me.

Da, citam Delphi 4 za 21 dan, tacnije upoznajem se sa delphijem. Znam da je Vama iskusnijim programerima ovo sad smesno, ali, setite se svi ste poceli od nule.

Hvala jos jednom.
 
Odgovor na temu

alxsabo
aleksandar sabo
Novi Sad

Član broj: 125775
Poruke: 19
*.ptt.yu.

Sajt: www.aleksandarsabo.info


Profil

icon Re: Prelazak s jednog na drugi TEdit?10.01.2007. u 22:54 - pre 210 meseci
Citat:
citam Delphi 4 za 21 dan,


U toj knjizi ces naci jedno jako elegantno resenje (mada je i gore navedeno resenje zadovoljavajuce):


Code:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = Char(VK_RETURN) then begin
    Key := #0;  //Ovo sluzi da se ne cuje iritirajuci zvuk
    PostMessage(Handle,WM_NEXTDLGCTL,0,0);
  end;
end;



Detaljnija objasnjenja potrazi u helpu vezano za poruku WM_NEXTDLGCTL.
Mozes se sa njom kretati i napred i nazad, a takodje i selektovati odredjenu komponentu.

Inspiration exists, but it has to find us working.
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Prelazak s jednog na drugi TEdit?11.01.2007. u 00:52 - pre 210 meseci
> U toj knjizi ces naci jedno jako elegantno resenje (mada je i gore navedeno resenje zadovoljavajuce):
> PostMessage(Handle,WM_NEXTDLGCTL,0,0);

WM_NEXTDLGCTL ako se koristi za prelazak na prethodnu ili narednu kontrolu u VCLu svodi na SelectNext. Ako se cilja određena kontrola onda se svodi na SetFocus API funkciju. Deluje mi da je efikasnije i pre svega jasnije koristiti SelectNext ili Control.SetFocus.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Prelazak s jednog na drugi TEdit?

[ Pregleda: 3578 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.