[C++]"Streepje" naar achteren vreplaatsen in een EditBox

Pagina: 1
Acties:

  • Plaagje
  • Registratie: April 2002
  • Laatst online: 20-05 15:19

Plaagje

<<Fly & Dive>>

Topicstarter
Hallo,

Ten eerste wil ik even zeggen dat ik niet meer op de naam kan komen van het "streepje", met het "streepje" bedoel ik dat knipperende ding dat hier ook word gebruikt bij een reply. Waar het "Streepje" dus staat typ je.

Dit is denk ik ook de reden dat ik het niet kan vinden, omdat ik simpelweg niet weet waarop te zoeken.

Nu het probleem:

Ik heb een EditBox in C++, nu heb ik een functie gemaakt die verkeerde letters weghaalt, zonder dat ze ooit in beeld komen.
Maar wanneer deze functie is uitgevoerd zet de computer het "Streepje" in het begin neer.

Nu zoek ik dus een commando of functie die deze weer naar het einde kan zetten (Net zoals End (op het toetsenboard) doet)


Voordbeeld:

Ik typ in:
74E
Voordat je de E ziet heeft de computer deze weggehaald. Maar als ik nu bijv een 5 intyp, komt er het volgende te staan:
574 (en het zou moeten worden 745)

(Het zou waarschijnlijk iets heel makkelijks zijn maarja geen van de eerstejaars medestudenten wist het)

Flying High!


Verwijderd

--> cursor

  • _Squatt_
  • Registratie: Oktober 2000
  • Niet online
Cursor?

[ Voor 7% gewijzigd door _Squatt_ op 22-03-2004 15:59 . Reden: spuit 11 :P ]

"He took a duck in the face at two hundred and fifty knots."


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Zo'n streepje wordt 'cursor' of 'caret' genoemd.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Is er geen functie zoals "SetCursorPos" ofzoiets????

[ Voor 19% gewijzigd door Verwijderd op 22-03-2004 16:02 ]


  • Korben
  • Registratie: Januari 2001
  • Laatst online: 14-11-2025

Korben

() => {};

Er vanuit gaande dat het gewoon Win32 code is...
C:
1
SendMessage(hwnd, EM_SETSEL, /* begin selectie */, /* einde selectie */);
Om alleen een caret te zien moet het begin en het einde gelijk zijn.
Verwijderd schreef op 22 maart 2004 @ 16:02:
Is er geen functie zoals "SetCursorPos" ofzoiets????
Ja, maar die verplaatst je muiscursor.

[ Voor 36% gewijzigd door Korben op 22-03-2004 16:21 ]

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Verwijderd

Je kunt toch ook het karakter afvangen wat ingetikt wordt, voordat deze in de editbox verschijnt en aan de hand van je eigen regels dit karakter wel of niet toestaan? Voorkomen is beter...

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Verwijderd schreef op 22 maart 2004 @ 16:44:
Je kunt toch ook het karakter afvangen wat ingetikt wordt, voordat deze in de editbox verschijnt en aan de hand van je eigen regels dit karakter wel of niet toestaan? Voorkomen is beter...
in de WM_KEYDOWN, WM_KEYPRESS en WM_KEYUP handlers kun je idd een actie 'opeten' voordat het systeem er een WM_CHAR van maakt :)

Professionele website nodig?


  • Plaagje
  • Registratie: April 2002
  • Laatst online: 20-05 15:19

Plaagje

<<Fly & Dive>>

Topicstarter
Ik ben er nog niet uitgekomen :)

Ik dacht dat alleen dat pijlje maarmee je ziet waar je muis is, cursor heet....

de naam van de EditBox = edtInvoer.

Als je edtInvoer-> intypt komen alle mogelijkheden daar te staan, welke daarvan zou moeten werken?

Aangezien ik nog weinig ervaring heb, weet ik nog niet hoe WM_KEYDOWN, WM_KEYPRESS en WM_KEYUP werkt. Natuurlijk weet ik wel hoe je bijv. OnKeyPress moet uitvoeren. Maar hoe zorg je er dan voor dat het teken er niet komt.

Nu doe ik dat nog met
code:
1
sGetal.Delete(b-1,1);

hierbij is b een nummer van teken waar het omgaat. dus bijv bij "hallo" is o het 5e teken.
sGetal is een variabele waar de inhoud van de EditBox inkomt.
Het is een String omdat soms ook bijv de tekens A t/m G mag worden ingevoerd.

Flying High!


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Cursor = muispointer
Caret = streepje in edit controls

En zo te zien gebruik je Borland C++ Builder, dan is het simpel :) In de OnKeyDown komt de ingedrukte toets namelijk by-reference binnen, deze kun je dan desgewenst wissen:
C++:
1
2
3
4
5
6
void __fastcall MyOnKeyDown(TObject* Sender, char &Key)
{
// Cancel any non-numeric keypress
if(Key < '0' || Key > '9')
  Key = 0;
}

Professionele website nodig?


  • Plaagje
  • Registratie: April 2002
  • Laatst online: 20-05 15:19

Plaagje

<<Fly & Dive>>

Topicstarter
Bedankt curry :)

Het werkt nou, ook al weet ik nog niet wat ik wou weten, maarja das ook niet meer nodig nu.

Flying High!

Pagina: 1