Hallo zusammen,
ich beschäftige mich seit einigen Tagen mit Visual Basic und es klappt ganz gut.
Jetzt möchte ich mehrere Steuerelemente ausblenden, wenn ich auf eine Befehlsschaltflache klicke. Ich habe dazu folgendes geschrieben:
sub Command1_Click()
me.label1.visible = false
me.label2.visible = false
u.s.w.
End Sub
Da es sieben Steuerelemente sind und ich sie öfters nutze, würde ich sie gerne, wenn es geht, gruppieren, also nur einmal
me.gruppe.visible = false
eingeben ("gruppe" sollte dann für die Steuerelemente stehen").
Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt, bin halt Anfänger.
Wenn es also möglich ist, würde ich mich über eine kurze Anleitung freuen.
Im Voraus vielen Dank.
Gruß Edgar
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Wenn es vom layout her möglich ist, verpacke die steuerelemente in ein Frame (BorderStyle = 0 'None) und nutze das als "gruppe" oder schreibe eine Sub, die die gewünschten steuerelemente zwar einzeln anspricht (wie jetzt auch) aber an beliebiger stelle mit nur einem einzigen aufruf nutzbar ist.
Sub Ausblenden()
me.label1.visible = false
me.label2.visible = false
'u.s.w.
End Sub
Sub Command1_Click()
Ausblenden
End Sub
mr.escape
Hi Mr. Escape,
vielen Dank für Deinen Hinweis, ich habe jetzt ein neues Projekt erstellt. Darin sind 2 Befehlsschaltflächen und fünf Bezeichnungsfelder.
Dann habe 2 neue Subs geschrieben:
Sub einblenden()
me.label1.visible = True
me.label2.visible = True
u.s.w.
End Sub
Sub ausblenden
me.label1.visible = false
me.label2.visible = false
u.s.w.
End Sub
Für die Befehlsschaltflächen:
Sub Command1_Click()
einblenden
End Sub
und
Sub Command2_Click()
ausblenden
End Sub
Das klappt prima. Allerdings habe ich damit sofort die Eigenschaft (visible) festgelegt. Ich möchte aber die Eigenschaft erst in der Sub für die Befehlsschaltfläche festlegen, z.B. einblenden = enabled o.ä.
Kann man nicht eine Sub schreiben, in der alle Steuerelemente die ich haben möchte, in einer Variablen (?) gespeichert werden? Wenn ja, wie kann ich sie dann aufrufen?
Gruß Edgar
Du kannst Steuerelemente über die Index-Eigenschaft zu einer Gruppe machen.
Dadurch werden Sie zu einem Array.
me.label1(0).visible = false
Dann kannst sie in einer schleife von lbound zu ubound durchlaufen und einem Rutsch bearbeiten.
Die Einzelheiten wird Dir sicher irgendein anderer Eiferer hier erklären.
Hi PaoloP,
vielen Dank für Deinen Hinweis, das hört sich ja sehr interessant an.
Es wäre schön, wenn sich noch ein 'Eiferer' fände, der mir hierzu eine Hilfestellung gibt.
Gruß Edgar
Okay dann will ich mal loseifern. (vielleicht hätte ich die schnauze halten sollen, dann wäre auch was gekommen)
Also wenn Du Dir die Eigenschaften eines Steuerelements z.B. einer Textbox ansiehst
findest Du da eine Index-Eigenschaft die erstmal nichts enthält. Wenn Du da jetzt eine 0
einträgst wird deine Textbox automatisch zu einem Array und so muss auch der Zugriff im Code
erfolgen also statt tbTextBox1.Text = "" muss nun tbTextBox1(0).Text im Code verwendet werden
da aus dem Steuerelement ein Array mit erstmal nur einem Control geworden ist.
Nun kannst Du weitere Instanzen davon auf dem Formular platzieren, am bestem mit Strg+C und Strg+V.
Du siehst in den Index-Eigenschaften der neuen Steuerelemente nun das diese nun einen jeweils höheren
Wert enthalten. Wenn Du das nun 2x gemacht hast dann hast Du nun ein Array mit 3 Textboxen.
Mit sinnlosem Text füllen könnte man diese dann so.
tbTextBox1(0).Text = "Das"
tbTextBox1(1).Text = "ist ein"
tbTextBox1(2).Text = "Test."
Über eine im Handel erhältliche For..Next Schleife kannst Du diese nun durchlaufen( for each wäre
besser aber ich hab vergessen wie die syntax dazu in vb6 war)
In diesem Bsp. verdopple ich einfach mal nur den Text-Inhalt.
Man beachte Lbound und Ubound, die liefern die untere und die obere grenze
des Arrays. Auf diese weise musst du den Code unter Umständen nicht mehr verändern
auch wenn Du vielleicht noch eine weitere Textbox hinzufügst.
Dim i&
For i = tbTextBox1.LBound to tbTextBox1.UBound
tbTextBox1(i).Text = tbTextBox1(i).Text & " :" &tbTextBox1(i).Text
Next i
Der eigentliche Vorteil dieses Prinzips ist das man auf diese Weise Steuerelemente
zur Laufzeit des Programms dynamisch nacherstellen und wieder löschen kann.
Wie das im Detail geht sollte in jedem besseren Buch oder VB-Seite stehen.
Hallo PaoloP,
ich kann mich erst jetzt für Deinen Eifer bedanken, mein PC ist gestern abgestürzt und ich habe es erst heute reparieren können.
Da ich vor ca. 15 Jahre etwas in Basic programmierte, dachte ich der Einstieg in Visual Basic wäre für mich kinderleicht, aber da habe ich mich getäuscht. Ich werde mich jetzt weiter mit der Lektüre über Visual Basic (Visual Basic von Helma Spona + andere aus dem Internet geladene PDF-Dopkumente) befassen und VB von Grund auf lernen. Dein Tipp ist für mich im Moment noch nicht zu realisieren; ich werde ihn aber im Hinterkopf behalten.
Vielen Dank noch 'mal für Dein Interesse.
Gruß Edgar
Öööhm nun ja. VB6 ist glaub ich prinzipiell nicht mehr so in Mode allerdings ist das Pascal auch und trotzdem
benutzen es noch jede Menge Leute.
Soweit ich mich erinnern kann war Basic in der rohen Form ohne Unterstützung irgendwelcher dialogbasierten Oberflächen,
demzufolge ist da natürlich neuer Stoff zu lernen.