[ mladenvasic @ 18.03.2005. 09:03 ] @
imam 3 editbox-a i jedno dugme. kako na pritisak dugmeta da se kursor fokusira ne sledeci editbox. npr. ako je fokusiran prvi editbox, na pritisak dugmeta da fokusira drugi, pa opet na pritisak dugmeta da fokusira treci i tako u krug. nadam se da ste razumjeli. ako moze malo detaljniji kod.
hvala unapred....
[ X Files @ 18.03.2005. 14:44 ] @
Imas vise nacina na raspolaganju, na primer za C++ Builder
moze da koristis nesto kao:

Code:

// !!! NETESTIRANO !!!

TEdit *Edits[3];

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   Edits[0] = Edit1;
   Edits[1] = Edit2;
   Edits[2] = Edit3;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   static int i=0;
   Edits[ (++i) % 3 ]->SetFocus();
}



Takodje, prouci WM_NEXTDLGCTL, i u skladu sa time:

Code:

// "Call Perform to bypass the Windows message queue
// and send a message directly to the control’s window
// procedure."
Perform (WM_NEXTDLGCTL, 0, 0);


E sad, posto klik na Button1, automatski fokusira Button1,
morao bi da pratis sta je zadnje bilo fokusurano od Edit
polja, pa da vratis njemu fokus, pa onda Perform, itd...

Takodje za fokusiranje umesto metode ->SetFocus(), mozes
da koristis funkciju FocusControl().



[ MilošV @ 18.03.2005. 18:06 ] @
Ima jos elegantnije rjesenje (govorim o c++ builderu): funkcija "FindNextControl" koja nalazi sljedecu kontrolu po TabOrderu na formi. Uz "ActiveControl" property, mozes da napravis ovakvu kombinaciju (slicnu ja koristim na formama za sa dosta polja za unos da bi taster "Enter" imao isti efekat kao "Tab"):
Code:

..bla bla... Button1Click(TObject *Sender)
{
FocusControl(FindNextControl(ActiveControl, true, true, false));
}
[ X Files @ 18.03.2005. 18:29 ] @
Da, ali...
Code:

..bla bla... Button1Click(TObject *Sender)
{
   FocusControl(FindNextControl(ActiveControl, true, true, false));
}

...kada pritisnes 'Button' ti si automatski fokusirao taj 'Button'
i poremetio TabOrder, tj. kod ce ti fokusirati onu kontrolu koja
dolazi posle 'Button', a to znaci uvek jednu te istu.

Koliko vidim tvoj kod je identican sa:
Code:

Perform (WM_NEXTDLGCTL, 0, 0);


Sve u svemu, mislim da ovi gore navedeni primeri imaju smisla samo
ako se dogadjaj izvrsava u samoj Edit kontroli, tj. kao sto si rekao
za OnKeyPress() ili OnKeyDown() za ispitivanje TAB/ENTER ponasanja
i sl.
[ MilošV @ 18.03.2005. 18:55 ] @
Da, u pravu si :)
Mozda bi rjesenje bilo da se za Button1 stavi TabStop=false?

Ipak ne, to bi vracalo na Edit1... Da ga zakomplikujemo sad, hehehe, da svaki TEdit ima OnEnter event? Ili da zaboravimo da sam ista rekao i ikad pomenuo FindNextControl? :)
[ MilošV @ 18.03.2005. 19:06 ] @
Citat:
X Files:
Code:

// "Call Perform to bypass the Windows message queue
// and send a message directly to the control’s window
// procedure."
Perform (WM_NEXTDLGCTL, 0, 0);


E sad, posto klik na Button1, automatski fokusira Button1,
morao bi da pratis sta je zadnje bilo fokusurano od Edit
polja, pa da vratis njemu fokus, pa onda Perform, itd...

Ufff... Izvini, Mr X, tek sad sam detaljno procitao tvoju prvu poruku. Vec si sve rekao... Hrkljus, hrkljus... do mene :)