Alle Elemente auf der Form unsichtbar

Hallo,

möchte auf Tastendruck fast alle Elemente auf einer Form unsichtbar machen. Ich nehmen nicht an, dass es dafür einen Befehl gibt.
Gibt es aber eine Möglichkeit, einen Loop über alle vorhandenen Elemente zu machen?

Gruß
Gunter

Hallo

möchte auf Tastendruck fast alle Elemente auf einer Form
unsichtbar machen. Ich nehmen nicht an, dass es dafür einen
Befehl gibt.

Nein einen direkten Befehl gibt es dazu nicht.
Aber was verstehst du unter fast alle ?

Um alle Elemente auszublenden, nutze folgende Variante

Dim C as Control
For Each C in Me
 c.Visible=False
Next

Gibt es aber eine Möglichkeit, einen Loop über alle
vorhandenen Elemente zu machen?

Siehe oben :wink:

Kleine Tipp am Rande. Willst du nur bedingte Elemente ausblebenden, so mache dich der Tag Eigenschaft zu nutze. Sprich weise ihn ein Wert zu und frage den dann vorher ab :smile:

Dim C as Control
For Each C in Me
 if C.Tag = Dein Wert then c.Visible=False
Next

MfG Alex

PS: On Error Resume Next nicht vergessen :wink:

Hallo Alex,

genau das habe ich gesucht.
Vielen Dank

Gruß
Gunter

Aber was verstehst du unter fast alle ?

Na ja ein paar sollen schon noch sichtbar sein,
die schalte ich geziehlt wieder ein.

Um alle Elemente auszublenden, nutze folgende Variante

Dim C as Control
For Each C in Me
c.Visible=False
Next

Hallo Alex,

wollte deinen Vorschlag universeller machen und die ganzen Einstellungen abspeichern:

Speichern:
Dim Groesse(0 to 100) as Control
Dim C as Control

For Each C In Me
i = i + 1
Groesse(i) = C
Next

dann wieder zurückladen:
For Each C In Me
i = i + 1
C = Groesse(i)
Next

Leider tut sich da nichts.

Hast du eine Idee?

Gruß
Gunter

Hallo Gunter,

versuch mal, das i vor jeder Schleife zu initialisieren:
i=0

Gruß, Andreas

Hallo Alex,

Leider tut sich da nichts.

Hast du eine Idee?

Gruß
Gunter

Hallo,

das hatte ich bereits schon.

Es tut sich nichts :frowning:

Gruß
Gunter

Hallo Gunter,

probier das mal:

Private Sub Form\_Load()
Dim C As Control, i As Integer, Groesse(100) As Boolean
For Each C In Me.Controls
 i = i + 1
 Groesse(i) = C.Visible
 MsgBox Groesse(i)
Next C
Me.Show
For Each C In Me.Controls
 i = i + 1
 Groesse(i) = C.Visible
 MsgBox Groesse(i)
Next C
End Sub

Half das weiter?

Nach Dim i as Integer brauchst du kein i=0, i ist automatisch Null durch das Dim.

Gruß
Reinhard

Hallo Reinhard,

so ähnlich habe ich es inzwischen realisiert.
Das ist halt wesentlich aufwendiger, da ich auch die Größen und Ort
der Controls speichern muß, weil sie temporär verändert werden.
Ich hatte gehofft, es ginge einfacher.

Trotzdem besten Dank.

Gruß
Gunter

Grüezi Gunter

möchte auf Tastendruck fast alle Elemente auf einer Form
unsichtbar machen. Ich nehmen nicht an, dass es dafür einen
Befehl gibt.
Gibt es aber eine Möglichkeit, einen Loop über alle
vorhandenen Elemente zu machen?

Je nach Anordnung der Elemente auf deiner UF wäre es ev. auch möglich ein leere Label einfach ‚über‘ die Elemente zu ziehen.
Diese werden dann davon verdeckt und sind nicht mehr zugänglich.

Um die Sichtbarkeit wieder herzustellen verschiebst Du das Label dann ausserhalb oder an den Rand der UF.

Mit freundlichen Grüssen
Thomas Ramel

  • MVP für Microsoft-Excel -
    [Win XP Pro SP-2 / xl2003 SP-3]