Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Visual Basic - mehrere Steuerelemente gruppieren

Edgar Rau / 7 Antworten / Baumansicht Nickles

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







Wer brauchen ohne zu gebraucht, braucht brauchen gar nicht zu gebrauchen
bei Antwort benachrichtigen
mr.escape Edgar Rau „Visual Basic - mehrere Steuerelemente gruppieren“
Optionen
Re: Visual Basic - mehrere Steuerelemente gruppieren ............................................................
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
"The man who trades freedom for security does not deserve nor will he ever receive either." - Benjamin Franklin"Wer seine Freiheit aufgibt, um Sicherheit zu erreichen, wird beides verlieren." - Georg Christoph Lichtenberg
bei Antwort benachrichtigen
Edgar Rau mr.escape „Re: Visual Basic - mehrere Steuerelemente...“
Optionen

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


Wer brauchen ohne zu gebraucht, braucht brauchen gar nicht zu gebrauchen
bei Antwort benachrichtigen
PaoloP Edgar Rau „Visual Basic - mehrere Steuerelemente gruppieren“
Optionen

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.

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
Edgar Rau PaoloP „Du kannst Steuerelemente über die Index-Eigenschaft zu einer Gruppe machen....“
Optionen

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

Wer brauchen ohne zu gebraucht, braucht brauchen gar nicht zu gebrauchen
bei Antwort benachrichtigen
PaoloP Edgar Rau „Hi PaoloP, vielen Dank für Deinen Hinweis, das hört sich ja sehr interessant...“
Optionen

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.


Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen
Edgar Rau PaoloP „Okay dann will ich mal loseifern. vielleicht hätte ich die schnauze halten...“
Optionen

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

Wer brauchen ohne zu gebraucht, braucht brauchen gar nicht zu gebrauchen
bei Antwort benachrichtigen
PaoloP Edgar Rau „Hallo PaoloP, ich kann mich erst jetzt für Deinen Eifer bedanken, mein PC ist...“
Optionen

Ööö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.

Jedes mal wenn jemand "Cloud" sagt, verliert ein Engel seine Flügel.
bei Antwort benachrichtigen