tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
6284
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    HolgerW HolgerW ist offline Rookie
    Registriert seit
    Apr 2006
    Beiträge
    8
    Hallo Gemeinde,

    ich habe ein Formular mit vielen Textboxen. Nun möchte ich zum Beispiel zum Leeren aller Boxen nicht jede Box einzeln ansprechen sondern mit einer Schleife und einer Laufvariablen die Boxen leeren.

    Ich stelle mir das ungefähr so vor:

    Dim lauf

    For lauf = 1 to 100
    textbox(lauf).text=""
    Next

    Jedoch scheint das so nicht zu funktionieren. Kann mir da jemand weiter helfen? Wie benenne ich eine Textbox mit einer Variablen im Namen? Geht das überhaupt?

    Vielen Dank für eure Hilfe,
    Holger
     

  2. #2
    Avatar von RamonR
    RamonR RamonR ist offline Mitglied Gold
    Registriert seit
    Jul 2004
    Ort
    Berlin
    Beiträge
    118
    Hallo,

    um die Textboxen in einer Schleife zu leeren, fallen mir zwei Möglichkeiten ein:
    1. Statt vieler einzelner Textboxen erzeugst Du Dir ein Textbox-Array, d.h. alle Textboxen erhalten den selben Namen aber eine individuelle fortlaufende Index-Nummer (in der Formular-Ansicht ist das die Index-Eigenschaft des Steuerelements).

      Dann kannst Du in einer Schleife alle Textboxen des Arrays leeren, z.B. wenn das Textbox-Array Text1 heißt:

      Code :
      1
      2
      3
      4
      
      dim i as long
      for i = Text1.lbound to Text1.ubound step 1
        Text1.Item(i).text = ""
      next i
    2. Da Du wahrscheinlich nicht alle Textboxen umbenennen und ihnen eine Index-Nummer zuweisen willst, gibt es noch eine Möglichkeit mit der Du alle Textboxen eines Formulars leeren kannst:

      Code :
      1
      2
      3
      4
      5
      6
      7
      
      dim c as control
       
      for each c in controls
        if typeof c is textbox then
          c.text = ""
        endif
      next c

    Vielleicht hat ja noch jemand anders eine praktischere Lösung parat.
     
    Und wer unter Euch frei von Tippfehlern ist, der werfe die erste Tastatur.

  3. #3
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Zitat Zitat von RamonR
    Vielleicht hat ja noch jemand anders eine praktischere Lösung parat.
    Ich denke du hast da schon die zwei sinnvollsten Möglichkeiten aufgezeigt.
     
    hihi = -h²

  4. #4
    HolgerW HolgerW ist offline Rookie
    Registriert seit
    Apr 2006
    Beiträge
    8
    Hallo RamonR,

    vielen Dank für deine Hilfe, die .Item-Lösung funktioniert problemlos.

    Liebe Grüße,
    Bartmouse
     

  5. #5
    Registriert seit
    Apr 2005
    Ort
    Bielefeld :P
    Beiträge
    202
    Statt
    Code :
    1
    
    Text1.Item(i).text = ""
    reicht glaub ich auch
    Code :
    1
    
    Text1(i).text = ""

    Und die zweite Möglichkeit kann man auch noch verkürzen:
    Code :
    1
    2
    3
    4
    5
    
    dim c as textbox
     
    for each c in form1.controls
        c.text = ""
    next c
     
    MfG, schachmat

  6. #6
    Avatar von RamonR
    RamonR RamonR ist offline Mitglied Gold
    Registriert seit
    Jul 2004
    Ort
    Berlin
    Beiträge
    118
    Zitat Zitat von schachmat
    reicht glaub ich auch

    Code :
    1
    
    Text1(i).text = ""
    Ja, würde vollkommen reichen, ich bevorzuge aber die andere Schreibweise ... jedem das seine

    Zitat Zitat von schachmat
    Und die zweite Möglichkeit kann man auch noch verkürzen:
    Code :
    1
    2
    3
    4
    5
    
    dim c as textbox
     
    for each c in form1.controls
        c.text = ""
    next c
    Zitat Zitat von Al Borland
    Das glaube ich nicht, Tim!


    Da nicht jedes Control der Form eine Textbox seien muss, dürftest Du dort auf einen Fehler laufen. Andere Controls haben ja teilweise nicht die .Text Eigenschaft.
    Geändert von RamonR (26.08.06 um 08:02 Uhr)
     
    Und wer unter Euch frei von Tippfehlern ist, der werfe die erste Tastatur.

  7. #7
    Registriert seit
    Apr 2005
    Ort
    Bielefeld :P
    Beiträge
    202
    Wenn c von vorneherein schon vom Typ Textbox ist, dann geht er in der Schleife auch nur alle Textboxen durch
     
    MfG, schachmat

  8. #8
    Avatar von RamonR
    RamonR RamonR ist offline Mitglied Gold
    Registriert seit
    Jul 2004
    Ort
    Berlin
    Beiträge
    118
    Zitat Zitat von schachmat
    dim c as textbox
    Hab ich doch glatt den Datentypen überlesen.

    Ok, Einwand akzeptiert
     
    Und wer unter Euch frei von Tippfehlern ist, der werfe die erste Tastatur.

  9. #9
    andy1337 andy1337 ist offline Mitglied
    Registriert seit
    Aug 2006
    Ort
    127.0.0.1
    Beiträge
    22
    Hallo,

    man kann es aber auch so schreiben, wenn ich die Frage richtig verstanden habe, um die txtboxen zu leeren:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    Private Sub cmdReset_Click()
     
        ClearTextBoxesOnForm
     
    End Sub
     
    Public Sub ClearTextBoxesOnForm()
     
        Dim ctl As Control
        For Each ctl In Me.Controls
            If TypeOf ctl Is TextBox Then
                ctl.Text = ""
            End If
        Next
     
    End Sub


    so schreib ich es immer...

    mfg andy
     

  10. #10
    Avatar von RamonR
    RamonR RamonR ist offline Mitglied Gold
    Registriert seit
    Jul 2004
    Ort
    Berlin
    Beiträge
    118
    Zitat Zitat von schachmat
    Und die zweite Möglichkeit kann man auch noch verkürzen:
    Code :
    1
    2
    3
    4
    5
    
    dim c as textbox
     
    for each c in form1.controls
        c.text = ""
    next c
    Ich muss das Thema nochmal hochholen, denn der Code funktioniert leider nicht.
    Ich hatte es vor langer Zeit auch mal so probiert und hatte noch dunkel in Erinnrerung, dass er nicht klappt (zumindest unter VB6).

    Wenn ich o.g. Code verwende ist das Resultat meines Kompilers:

    Zitat Zitat von VB6-Kompiler
    Laufzeitfehler '13':
    Typen unverträglich
    Deshalb verwende ich schon seit langem:

    Code :
    1
    2
    3
    4
    5
    6
    7
    
    dim c as control
     
    for each c in controls
      if typeof c is textbox then
        c.text = ""
      endif
    next c
     
    Und wer unter Euch frei von Tippfehlern ist, der werfe die erste Tastatur.

  11. #11
    Registriert seit
    Apr 2005
    Ort
    Bielefeld :P
    Beiträge
    202
    Nur mal rein Interessehalber: In welcher Zeile meldet er den Fehler?
     
    MfG, schachmat

  12. #12
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.048
    Er meldet den Fehler in
    Code vb:
    1
    
    For Each c In Me.Controls
     
    hihi = -h²

  13. #13
    Registriert seit
    Apr 2005
    Ort
    Bielefeld :P
    Beiträge
    202
    Ja, das kann sein, da Me.Controls ja vom Typen Control ist. Gibt es da vielleicht eine Eigenschaft Me.Controls.Textboxes oder so was in der Art? Bei VB8 sollte das aber schon gehen.... muss ich demnächst mal ausprobieren
     
    MfG, schachmat

Ähnliche Themen

  1. Textbox mit variablem Namen ansprechen
    Von Be19 im Forum Visual Basic 6.0
    Antworten: 4
    Letzter Beitrag: 05.08.10, 13:31
  2. Antworten: 1
    Letzter Beitrag: 10.02.10, 18:51
  3. Textbox-Namen von fremder Anwednung ermitteln
    Von 154500 im Forum Visual Basic 6.0
    Antworten: 9
    Letzter Beitrag: 12.03.08, 21:12
  4. Antworten: 6
    Letzter Beitrag: 13.04.05, 11:05
  5. Antworten: 14
    Letzter Beitrag: 21.03.02, 13:49