Avatar billede tenere Nybegynder
14. april 2003 - 13:42 Der er 16 kommentarer og
1 løsning

Loop til TextBox navne

Hvordan laver men en loob der tilføjer en værdi i et textfelt går videre til næste textfelt og skriver en anden værdi.

EKS.

Text1 = 1
Text2 = 2
Text3 = 3
Text4 = 4
Text5 = 5
Text6 = 6
Text7 = 7

Kan ovenstående laves med en loop, istedenfor at man skal skrive alle textfelterne ned.

/Tenere
Avatar billede kedde65 Praktikant
14. april 2003 - 13:48 #1
Hvis du har lavet din textbokse i et Control array så kan du ved hjælp af nedenstående kode løbe dem alle igennem.

Private Sub Form_Load()
    Dim item As TextBox
    For Each item In txtFelt
        item.Text = "Hula"
    Next
End Sub

VH CK
Avatar billede christian Nybegynder
14. april 2003 - 13:49 #2
Det kan du tro:

<html>
<body onload="doIt();">
<script>
function doIt() {
    for (i = 1; i < 7; i++) {
        document.F["test" + i].value = i;
    }
}
</script>
<form name="F">
<input type="text" name="test1">
<input type="text" name="test2">
<input type="text" name="test3">
<input type="text" name="test4">
<input type="text" name="test5">
<input type="text" name="test6">
</form>
</body>
</html>
Avatar billede christian Nybegynder
14. april 2003 - 13:50 #3
Ups... trode det var javascript :-)
Avatar billede sjh Nybegynder
14. april 2003 - 13:58 #4
Option Explicit

Private Sub Form_Load()
Dim i As Long
Dim frmControl As Control
  For Each frmControl In Controls
    If TypeOf frmControl Is TextBox Then
      i = i + 1
      frmControl.Text = CStr(i)
    End If
  Next
End Sub
Avatar billede sjh Nybegynder
14. april 2003 - 14:01 #5
eller:

Option Explicit

Private Sub Form_Load()
Dim i As Long
Dim strTxtName As String
Dim frmControl As Control
  For Each frmControl In Controls
    If TypeOf frmControl Is TextBox Then
      strTxtName = Right(frmControl.Name, 1)
      frmControl.Text = strTxtName
    End If
  Next
End Sub
Avatar billede tenere Nybegynder
14. april 2003 - 14:16 #6
Jeg har ikke helt fået løst problemet endnu, den kode jeg bruger er følgende

Sub BrugData()
Dim L, L1, L2, L3, L4, L5, L6
'F1 = Linie1 - Routernavn
'F2 = Linie2 - PublicIP
'F3 = Linie3 - Gateway
'F4 = Linie4 - PrivatIP
'F5 = Linie5 - Sagsnr - SagsNavn
'F6 = Linie6 - RouterTest
Dim F, F1, F2, F3, F4
'L1 = CheckFelt
'L2 = Text1
'L3 = Text2
'L4 = Text3
L = -5
L1 = -5
L2 = -4
L3 = -3
L4 = -2
L5 = -1
L6 = 0
Do While L <= y
L = L + 6
L1 = L1 + 6
L2 = L2 + 6
L3 = L3 + 6
L4 = L4 + 6
L5 = L5 + 6
L6 = L6 + 6
Check1.Value = Linie(L6) '(Her skal jeg bruge loopen til at ændre Check1.value til Check2.value etc.)
    If Linie(L5) <> "" Then
        Check1.Caption = Linie(L1) & " - " & Linie(L5)
        Else
        Check1.Caption = "VPN Client bruges ikke"
    End If
Text1 = Linie(L2)
Text2 = Linie(L3)
Text3 = Linie(L4)
Loop
End Sub

Jeg bruger den til et program som tester forbindelser til VPN clienter, jeg har ca. 200 linier oplysninger i Linie(X) som den skal indlæse i ca. 160 check og text boxe.

/Tenere
Avatar billede sjh Nybegynder
14. april 2003 - 14:33 #7
har du sat 160 check og text boxe på en form1!
Avatar billede sjh Nybegynder
14. april 2003 - 14:34 #8
kan ikke lige se hvordan du har fået plads til alle dem :-)
Avatar billede tenere Nybegynder
14. april 2003 - 14:40 #9
40 Check og 120 Text på en form1, men det fylder nu også en del
4 kolonner med 40 i hver.
Så det kan lade sig gøre men den fylder ca. 1100*1100

/Tenere
Avatar billede sjh Nybegynder
14. april 2003 - 14:48 #10
hvor langt forsætter "Text11 = Linie(L12)"

        Else
        Check1.Caption = "VPN Client bruges ikke"
    End If
Text1 = Linie(L2)
Text2 = Linie(L3)
Text3 = Linie(L4)
Text4 = Linie(L5)
Text5 = Linie(L6)
Text6 = Linie(L7)
Text7 = Linie(L8)
Text8 = Linie(L9)
Text9 = Linie(L10)
Text10 = Linie(L11)
Text11 = Linie(L12)
.............
..............
...............
Loop
End Sub
Avatar billede sjh Nybegynder
14. april 2003 - 14:56 #11
Prøv denne her:


Option Explicit

Private Sub Form_Load()
  '                                  1 = Text1
  Call SetTextBoxText("Test tekst.", 1)
End Sub

Public Sub SetTextBoxText(ByVal strText As String, ByVal intNumber As Integer)
Dim frmControl As Control
  For Each frmControl In Controls
    If TypeOf frmControl Is TextBox Then
      If Right(frmControl.Name, 1) = CStr(intNumber) Then
        frmControl.Text = strText
        Exit For
      End If
    End If
  Next
End Sub
Avatar billede tenere Nybegynder
14. april 2003 - 14:58 #12
Loopen skal køre 40 gange
1. gang udfyldes
Check1.value
Check1.Caption
Text1
Text2
Text3

2. gang udfyldes
Check2.value
Check2.Caption
Text4
Text5
Text6

Og så videre

/Tenere
Avatar billede sjh Nybegynder
14. april 2003 - 15:07 #13
Så skulle den være hjemme:


Option Explicit

Private Sub Form_Load()
  'set Text1, Text2, Text3,.........
  '                                  1 = Text1
  Call SetTextBoxText("Test tekst.", 1)
 
  'SetCheckBox([Caption], [1 = Value (1 eller 0)], [Check xxxxxxx])
  Call SetCheckBox("Test tekst.", 1, 1)
End Sub

Public Sub SetTextBoxText(ByVal strText As String, ByVal intNumber As Integer)
Dim frmControl As Control
  For Each frmControl In Controls
    If TypeOf frmControl Is TextBox Then
      If Right$(frmControl.Name, 1) = (intNumber) Then
        frmControl.Text = strText
        Exit For
      End If
    End If
  Next
End Sub

Public Sub SetCheckBox(ByVal strText As String, ByVal intValue As Integer, ByVal intNumber As Integer)
Dim frmControl As Control
  For Each frmControl In Controls
    If TypeOf frmControl Is CheckBox Then
      If Right$(frmControl.Name, 1) = (intNumber) Then
        frmControl.Value = intValue
        frmControl.Caption = strText
        Exit For
      End If
    End If
  Next
End Sub
Avatar billede sjh Nybegynder
14. april 2003 - 15:19 #14
så må det blive noget i stil med dette:


Private Sub Form_Load()
Dim i As Long
  For i = 1 To 160 / 3
    Call SetCheckBox("Test tekst.", 1, i)
    Call SetTextBoxText("Test tekst.", i)
    Call SetTextBoxText("Test tekst.", i + 1)
    Call SetTextBoxText("Test tekst.", i + 1)
  Next i
End Sub
Avatar billede sjh Nybegynder
14. april 2003 - 15:25 #15
Sådan:

Private Sub Form_Load()
Dim i As Long
Dim L, L1, L2, L3, L4, L5, L6 As Long

  L1 = -5
  L2 = -4
  L3 = -3
  L4 = -2
  L5 = -1
  L6 = 0

  For i = 1 To 160 / 3
    L1 = L1 + 6
    L2 = L2 + 6
    L3 = L3 + 6
    L4 = L4 + 6
    L5 = L5 + 6
    L6 = L6 + 6

    Call SetCheckBox(Linie(L1) & " - " & Linie(L5), Linie(L6), i)
    Call SetTextBoxText(Linie(L2), i)
    Call SetTextBoxText(Linie(L3), i + 1)
    Call SetTextBoxText(Linie(L4), i + 1)
  Next i
End Sub
Avatar billede sjh Nybegynder
14. april 2003 - 15:32 #16
Næste gang du skal lave et program med mange TextBoxe så lav det med et Kontrol-Array så er det nemmere at styre ;-)
Avatar billede tenere Nybegynder
01. maj 2003 - 14:57 #17
Det virkede ikke helt, men det gav mig noget at arbejde videre på.

Takker

/Tenere
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