Avatar billede jelle Nybegynder
21. maj 2005 - 13:28 Der er 7 kommentarer og
3 løsninger

2 lette spørgsmål omkring textboxe

Hej!

Jeg har lige to ting som jeg ikke kan få til at lykkes:
1. Hvordan får jeg vb til at indsætte et : i textboxen, når brugeren har indsat 2 tal?

2. Hvordan får jeg hele teksten i tekstboxen markeret når tekxtboxen får focus?

Håber i kan hjælpe!
Avatar billede joern Nybegynder
21. maj 2005 - 14:07 #1
Hej.

Jeg forstår ikke første del af spørgsmålet.

Private Sub Command1_Click()
  Text1.SetFocus
  Text1.SelStart = 0
  Text1.SelLength = Len(Text1.Text)
End Sub

M.v.h. Jørn
Avatar billede joern Nybegynder
21. maj 2005 - 14:09 #2
Nåh.  Nu dæmrer det!  Indsætte et kolon

Mener du tal eller cifre?

text1.text = left(text1.text,1) & ":" & right(text1.text,1)  'gælder for cifre

M.v.h. Jørn
Avatar billede jelle Nybegynder
21. maj 2005 - 14:12 #3
jeg vil gerne ha sådan at når brugeren f.eks. skriver 20 så kommer der automatisk et : og så kan han skrive videre... når han så har skrevet de to næste tegn f.eks. 25, hopper den videre til næste textbox i tabstop-rækkefølgenden.
dvs at i den første textbox kommer der til at stå 20:25... håber jeg fik det forklaret lidt bedre...
Avatar billede jelle Nybegynder
21. maj 2005 - 14:16 #4
det er til at indtaste et klokkeslæt, hvis det hjælper dig lidt...
Avatar billede sjh Nybegynder
21. maj 2005 - 15:15 #5
Du skal bare bruge GotFocus() og IsDate() så skulle den være der..


Option Explicit

Private Sub Text1_Change()
  If IsDate(Text1.Text) And Len(Text1.Text) > 4 Then
    MsgBox "Det er en dato i text1"
  End If
End Sub

Private Sub Text1_GotFocus()
  Text1.SelStart = 0
  Text1.SelLength = Len(Text1.Text)
End Sub
Avatar billede sjh Nybegynder
21. maj 2005 - 16:09 #6
Hvis det kun er 2 TextBoxe du skal gøre det med så kan du gøre sådan:

Option Explicit

Private Sub Text1_Change()
  If IsNumeric(Text1.Text) And Len(Text1.Text) = 2 Then
    Text1.Text = Text1.Text & ":"
    Text1.SelStart = 3
  End If
  If IsDate(Text1.Text) And Len(Text1.Text) = 5 Then
    Text2.SetFocus
  End If
End Sub

Private Sub Text2_Change()
  If IsNumeric(Text2.Text) And Len(Text2.Text) = 2 Then
    Text2.Text = Text2.Text & ":"
    Text2.SelStart = 3
  End If
End Sub

Private Sub Text1_GotFocus()
  Text1.SelStart = 0
  Text1.SelLength = Len(Text1.Text)
End Sub

Private Sub Text2_GotFocus()
  Text2.SelStart = 0
  Text2.SelLength = Len(Text2.Text)
End Sub

Private Sub Form_Load()
  Text1.MaxLength = 5 'xx:xx = 5
  Text2.MaxLength = 5 'xx:xx = 5
End Sub


ellers hvis det er 5-10 stk.. så er det beder at opbygge det i et array af textboxe..
Avatar billede jelle Nybegynder
21. maj 2005 - 17:59 #7
Tak for hjælpen!
Avatar billede joern Nybegynder
21. maj 2005 - 21:38 #8
Hej.

Tak for point.  Jeg har i flere programmer lavet avanveret automatik på indtastning af tidspunkter, her er et af de mere enkle.  Instrukserne udføres under LostFocus på feltet.  Det er et kontrolarray hvor tidsfeltet har indeks 3.

If data(Index).Index = 3 Then
    If Val(Left(data(3).Text, 2)) > 23 Then
        X = MsgBox("Angivelsen af timer er ikke korrekt, HH:MM", 48, "Medd. fra kontrol af tidspunkt.")
    End If
    If Val(Right(data(3).Text, 2)) > 59 Then
        X = MsgBox("Angivelsen af minutter er ikke korrekt, HH:MM", 48, "Medd. fra kontrol af tidspunkt.")
    End If
   
    data(3).Text = Left(data(3).Text, 2) & ":" & Right(data(3).Text, 2)
  End If

M.v.h. Jørn
Avatar billede sjh Nybegynder
21. maj 2005 - 23:00 #9
Hej Jørn

Jeg troede da du var mere smart.. hvis man laver det med Array så tjekker man da ikke om det er Index = 1,2,3 osv.. så skriver man da bare Index ind i Data(INDEX).. det er jo det som er fordelen i et Array.. ;)

Private Sub Data_LostFocus(Index As Integer)
Dim X As VbMsgBoxResult
  If Val(Left(Data(Index).Text, 2)) > 23 Then
    X = MsgBox("Angivelsen af timer er ikke korrekt, HH:MM", 48, "Medd. fra kontrol af tidspunkt.")
  End If
  If Val(Right(Data(Index).Text, 2)) > 59 Then
    X = MsgBox("Angivelsen af minutter er ikke korrekt, HH:MM", 48, "Medd. fra kontrol af tidspunkt.")
  End If
  Data(Index).Text = Left(Data(Index).Text, 2) & ":" & Right(Data(Index).Text, 2)
End Sub
Avatar billede joern Nybegynder
22. maj 2005 - 09:24 #10
sjh>>

Tak for eksempel.  Nej, jeg programmerer meget traditionelt.  Der er i pågældende program under sub'en LostFocus en række forskellig validering på felterne.  Feltet til tidspunkt har desuden max. på 5 tegn.  http://jkfsoft.dk/fugle.htm

M.v.h. Jørn
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