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...
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..
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
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
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
Synes godt om
Ny brugerNybegynder
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.