[BCB]Belletje bij Enter/Return

Pagina: 1
Acties:

  • WarMaster
  • Registratie: Juni 1999
  • Niet online

WarMaster

Nosce te ipsum

Topicstarter
Probleempje..
Ik wil een beetje gebruikersvriendelijk overkunnen huppen van editbox naar editbox bij bijvoorbeeld een login schermpje.

Wat is nou het probleem...?
Nou bij het rammen op de enter toets krijg je een windows "belletje"
Oftewel dat standaard geluid wat je hoort als je bijvoorbeeld ergens zit waar je niet kan typen.

Nu kan ik dat op zich wel begrijpen in een editbox omdat er fysiek geen return/enter in kan... Echter heb ik nu een eventhandler voor de return die het eigenlijk zou moeten afvangen of zo...

Ik heb de OnKeyDown, OnKeyPress, en OnKeyUp al geprobeerd, maar ze doen het allemaal.

Vrij irritant.

Iemand enig idee hoe je zo iets oplost?

Objecten:

- edtLogin
- edtPass

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TfrmLogin::edtNameKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
        if(!edtName->Text.IsEmpty())
                if(Key==VK_RETURN)edtPassword->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TfrmLogin::edtPasswordKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
        if(!edtPassword->Text.IsEmpty())
                if(Key==VK_RETURN)btnLoginClick(NULL);
}

We live in a primitive time don't we, neither savage nor wise. Half measures are the curse of it; any rational society would either kill me or put me to some use.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Je schrijft een event handler, geen afhandeling of zo. Ergo nadat die functies zijn uitgevoerd gaat die keypress alsnog het systeem in om daar de beep te veroorzaken. Oftewel:
C++:
1
Key = 0;

Professionele website nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:36
Je kan ook dmv SendMessage naar een andere control springen:
code:
1
SendMessage (hWnd, NEXTDLGCTL, 0, 0);

oid.

https://fgheysels.github.io/


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

whoami schreef op 19 December 2002 @ 08:26:
Je kan ook dmv SendMessage naar een andere control springen:
code:
1
SendMessage (hWnd, NEXTDLGCTL, 0, 0);

oid.
Lost het belletje niet op, en dan nog zou TWinControl::FindNextControl binnen de context iets beter werken ;)

Professionele website nodig?


  • WarMaster
  • Registratie: Juni 1999
  • Niet online

WarMaster

Nosce te ipsum

Topicstarter
curry684 schreef op 19 December 2002 @ 01:53:
Je schrijft een event handler, geen afhandeling of zo. Ergo nadat die functies zijn uitgevoerd gaat die keypress alsnog het systeem in om daar de beep te veroorzaken. Oftewel:
C++:
1
Key = 0;
Ah mooi...

Ik vroeg me al af waarom er een adres operator op zat...

Het werkt echter alleen bij de OnKeyPress event...
Op zich ook wel logisch, gezien dat de OnKeyDown en OnKeyUp een onderdeel van een groter geheel zijn..... (beetje moeilijk uit te leggen :P)

[ Voor 21% gewijzigd door WarMaster op 19-12-2002 14:11 ]

We live in a primitive time don't we, neither savage nor wise. Half measures are the curse of it; any rational society would either kill me or put me to some use.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

WarMaster schreef op 19 december 2002 @ 14:05:
Ik vroeg me al af waarom er een adres operator op zat...
'By Reference' heet dat ding indien in een parameter gebruikt :)
Het werkt echter alleen bij de OnKeyPress event...
Op zich ook wel logisch, gezien dat de OnKeyDown en OnKeyUp een onderdeel van een groter geheel zijn..... (beetje moeilijk uit te leggen :P)
Niet moeilijk uit te leggen: OnKeyDown is de equivalent van WM_KEYDOWN. Als je die 'reject' oftewel de Key op 0 zet komen de andere messages nooit binnen. OnKeyUp oftewel WM_KEYUP wordt door het systeem gegenereerd zodra je de toets loslaat of lang ingedrukt laat (TypeMatic). WM_KEYUP kun je echter beter van af blijven normaliter, want het systeem parset de Virtual Keycode die je daarin meekrijgt, trekt accelerators e.d. er uit en genereert vervolgens indien relevant een WM_CHAR message, die jij dan als OnKeyPress krijgt. Als WM_KEYUP de keycode reject komt de WM_CHAR nooit binnen.

OnKeyDown en OnKeyUp heb je in principe alleen nodig als je non-typing keypresses moet vangen (cursor-toetsen, alt, ctrl, etc.).

Snappu? :P

Professionele website nodig?


  • WarMaster
  • Registratie: Juni 1999
  • Niet online

WarMaster

Nosce te ipsum

Topicstarter
Jaaaaaaaaaaaaaaaaaja :)

Klinkt logisch :)

Thnxz :)

We live in a primitive time don't we, neither savage nor wise. Half measures are the curse of it; any rational society would either kill me or put me to some use.

Pagina: 1