Avatar billede coldray Nybegynder
29. september 2001 - 15:13 Der er 11 kommentarer og
1 løsning

Tekstbox hvor man kun kan skrive tal

hvordan laver jeg en tekstbox hvor man kun kan skrive tal og ikke bogstaver, tegn og lign??
Avatar billede sjh Nybegynder
29. september 2001 - 17:04 #1
\'-------------------------------- Form1 --------------------------------
Option Explicit

Private Declare Function GetWindowLong Lib \"user32\" Alias \"GetWindowLongA\" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib \"user32\" Alias \"SetWindowLongA\" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = (-16)
Private Const ES_NUMBER = &H2000&

Public Function OnlyNum(tBox As TextBox) As Long
Dim DefaultStyle As Long
  DefaultStyle = GetWindowLong(tBox.hwnd, GWL_STYLE): tBox.Text = \"\"
  OnlyNum = SetWindowLong(tBox.hwnd, GWL_STYLE, DefaultStyle Or ES_NUMBER)
End Function

Private Sub Form_Load()
OnlyNum Text1
End Sub
\'-------------------------------- Form1 --------------------------------
Avatar billede jelzin101 Praktikant
29. september 2001 - 17:18 #2
der er en lidt lettere metode :

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 47 Or KeyAscii > 57 Then KeyAscii = 0
End Sub

Avatar billede simon_jacobsen Nybegynder
05. oktober 2001 - 09:53 #3
en lidt letere metode. :)
if not isnumeric(text1.text) then
text1.text = \"\"
end if
Avatar billede tdaugaard Nybegynder
05. oktober 2001 - 13:00 #4
simon_jacobsen:> Så sletter du jo indeholdet ...
Avatar billede tdaugaard Nybegynder
05. oktober 2001 - 13:07 #5
sjh:> Må jeg spørge om noget i forbindelse med din kode ? Jeg fik lige gravet ES_UPPERCASE og ES_LOWERCASE frem og ville lave en lille funktion med dem .. kan man på nogen måde FJERNE en \"style\" igen ? Altså f.eks. med Or ES_NUMBER, kan man så fjerne ES_NUMBER fra DefaultStyle istedet ?
Avatar billede simon_jacobsen Nybegynder
05. oktober 2001 - 13:09 #6
er det ikke det der er meningen, hvis teksten ikke er et tal ?
jeg ved godt det ikke er den bedste løsning men det virker.
Avatar billede tdaugaard Nybegynder
05. oktober 2001 - 13:10 #7
Jo, den skal slette det TEGN der bliver indtastet, ikke hele teksten.
Avatar billede simon_jacobsen Nybegynder
05. oktober 2001 - 15:17 #8
ok så ved jeg det ikke, men det er da en muglighed, hvis man ikke kan finde en bedre løsning :)
Avatar billede sjh Nybegynder
05. oktober 2001 - 15:31 #9
FJERNE en \"style\" igen.

det kan man vel, men det ved jeg ikke lige hvordan man gør.


funktion med dem .. (UPPER... LOWER...)

Private Declare Function GetWindowLong Lib \"user32\" Alias \"GetWindowLongA\" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib \"user32\" Alias \"SetWindowLongA\" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const ES_LOWERCASE = &H10&
Private Const ES_UPPERCASE = &H8&
Private Const ES_NUMBER = &H2000&

Public Function OnlyNum(tBox As TextBox)
Dim DefaultStyle As Long
  DefaultStyle = GetWindowLong(tBox.hwnd, GWL_STYLE)
OnlyNum = SetWindowLong(tBox.hwnd, GWL_STYLE, DefaultStyle Or ES_NUMBER)
End Function

Public Function OnlyUpperCase(tBox As TextBox)
Dim DefaultStyle As Long
  DefaultStyle = GetWindowLong(tBox.hwnd, GWL_STYLE)
OnlyUpperCase = SetWindowLong(tBox.hwnd, GWL_STYLE, DefaultStyle Or ES_UPPERCASE)
End Function

Public Function OnlyLowerCase(tBox As TextBox)
Dim DefaultStyle As Long
  DefaultStyle = GetWindowLong(tBox.hwnd, GWL_STYLE)
OnlyLowerCase = SetWindowLong(tBox.hwnd, GWL_STYLE, DefaultStyle Or ES_LOWERCASE)
End Function
Avatar billede tdaugaard Nybegynder
05. oktober 2001 - 15:50 #10
sjh:> Jeg havde lavet en ModifyTextBox(.., Optional AllowNumbersOnly As Boolean = False, ..) men gad ik da jeg ikke anede hvordan jeg fjernede styles igen *G*
Avatar billede sjh Nybegynder
05. oktober 2001 - 21:19 #11
tdaugaard > Prøv denne her. :-)



Private Declare Function GetWindowLong Lib \"user32\" Alias \"GetWindowLongA\" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib \"user32\" Alias \"SetWindowLongA\" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const ES_LOWERCASE = &H10&
Private Const ES_UPPERCASE = &H8&
Private Const ES_NUMBER = &H2000&

Public Function OnlyNum(tBox As TextBox, Flag As Boolean)
Dim DefaultStyle As Long
  DefaultStyle = GetWindowLong(tBox.hwnd, GWL_STYLE)
  If Flag Then
    DefaultStyle = DefaultStyle Or ES_NUMBER
      Else
    DefaultStyle = DefaultStyle And (Not ES_NUMBER)
  End If
OnlyNum = SetWindowLong(tBox.hwnd, GWL_STYLE, DefaultStyle)
End Function

Public Function OnlyUpperCase(tBox As TextBox, Flag As Boolean)
Dim DefaultStyle As Long
  DefaultStyle = GetWindowLong(tBox.hwnd, GWL_STYLE)
  If Flag Then
    DefaultStyle = DefaultStyle Or ES_UPPERCASE
      Else
    DefaultStyle = DefaultStyle And (Not ES_UPPERCASE)
  End If
OnlyUpperCase = SetWindowLong(tBox.hwnd, GWL_STYLE, DefaultStyle)
End Function

Public Function OnlyLowerCase(tBox As TextBox, Flag As Boolean)
Dim DefaultStyle As Long

  DefaultStyle = GetWindowLong(tBox.hwnd, GWL_STYLE)
  If Flag Then
    DefaultStyle = DefaultStyle Or ES_LOWERCASE
      Else
    DefaultStyle = DefaultStyle And (Not ES_LOWERCASE)
  End If
OnlyLowerCase = SetWindowLong(tBox.hwnd, GWL_STYLE, DefaultStyle)
End Function

Private Sub Check1_Click()
  \'OnlyNum Text1, Check1.Value
  \'OnlyUpperCase Text1, Check1.Value
  \'OnlyLowerCase Text1, Check1.Value
End Sub
Avatar billede simon_jacobsen Nybegynder
18. november 2002 - 08:51 #12
en lidt letere metode. :)
if not isnumeric(text1.text) then
text1.text = value(text1.text)
end if

' så vil teksten altid kun være tal :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester