Eigenschften von Steuerelementen ändern

the_lorn

Mitglied
Hi ihr da draußen!

Ich sitze mal wieder vor einem Problem, bei dessen Lösung ich keine Ahnung bzw. Idee habe. :(

Ich habe auf einem Formular mehere Steuerelemente größten Teils Buttons. Diese würd ich gern farblich verändern wollen, so dass der Nutzer meiner Datenbank zwischen verschiedenen Layouts wählen kann.
Die frage ist jetzt, wie spreche ich so ein Steuerelement an, wenn ich den Namen nicht kenne? Oder gibt es möglicherweise bereits vordefinierte Layouts, die man je nach auswahl laden kann?

Ich bin total überfragt, da ich erst seit ein paar Tagen mit VB arbeite.

Ich danke schon mal für sämtliche Ideen
 
Dazu kann ich dir zwei Möglichkeiten vorschlagen, beide bedienen sich der Controls-Auflistung. "Me.Controls" liefert dir eine Auflistung aller Steuerelemente auf der Form. Diese Auflistung kannst du mit einer For-Next-Schleife durchgehen.
Des weiteren gibt es die Möglichkeit mit "TypeOf" herauszufingen, um was für ein Objekt es sich handelt.
Folgender Code ändert die Hintergrundfarbe aller Textboxen, die sich auf einem Formular befinden, auf Grün:
Visual Basic:
Dim obj As Object

On Error Resume Next
For Each obj In Me.Controls
    If TypeOf obj Is TextBox Then obj.BackColor = vbGreen
Next

Alternativ kannst du die TypeOf-Abfrage weglassen und die BackColor-Eigenschaft einfach bei allen Steuerelementen ändern, die diese Eigenschaft haben.
Sollte ein Steuerelement die BackColor-Eigenschaft nicht besitzen, so würde VB normalerweise das Programm mit einem Fehler abbrechen. Das verhindern wir, indem wir mit "On Error Resume Next" sagen, alle Fehler sollen ignoriert werden.
Visual Basic:
Dim obj As Object

On Error Resume Next
For Each obj In Me.Controls
    obj.BackColor = vbGreen
Next

Sollte dir der Unterschied nicht klar sein, so platziere auf einer Form ein paar Textboxen und ein paar PictureBoxen und schau dir den Unterschied an, wenn Code #1 bzw. Code 2# läuft.
 
Zuletzt bearbeitet:
Das wunderbar blöd ist halt nur, dass so ein CommandButton diese BackColor-Eigenschaft nicht hat! Aber sonst top!

Hätte aber auch gern, dass diese Buttons sich ändern. Geht das gar nicht. Da muss es doch ein work around geben :(

Ausserdem müsst ich das auch für die Seitenköpfe bzw. Formularköpfe tun sofern welche vorhanden. Von welchem Typ sind die denn? So das ich sagen kann "für alle Formularköpfe Backcolor=red" oder so. Momentan sprech ich die nämlich noch über die Namen an und muss deshalb für jedes Formular ne andere Funktion schreiben.

PS: vielleicht sollte ich sagen, dass ich mit VBA und nicht VB arbeite
 
Zuletzt bearbeitet:
Das mit den Formularköpfen und Seitenköpfen hab ich über Section(acHeader).BackColor usw. gelöst. :) ;-)
Nur diese Buttons....:confused:
 
Hallo WaGutSo

Ich arbeite ja mit Access und hab einfach per wysiwyg die Elemente drauf gelegt (also drag and drop mäßig). Naja und nun will ich die Nachträglich verändern. Selbst in der Eigenschaftenliste ist kein Eintrag damit ich von einer Schaltfläche die Hintergrundfabe ändern könnte. Ich befürchte ja fast da kann man nix machen. Aber ich schau mir erstmal dein Link an....
 
Zuletzt bearbeitet:
Es hat sich erledigt. Der Fehler liegt eindeutig auf meiner Seite! Meine Buttons sind keine CommandButtons sondern nur normale Schaltflächen! :-( Nachdem was ich bis jetzt weiß ist das Aussehen dieser von windows vorgegeben. Also entweder ich durchforste meine ganze DB und ändere die Buttons oder ich lass das so wie es ist und behalte dieses blöde grau!

danke noch mal für eure Hilfe. Ich hätte ja auch mal früher drauf kommen können den Buttontyp zu überprüfen. (zu meiner Entschuldigung muss ich sagen, ich überarbeite nur eine schon bestehende DB)
 
In VB hat ein CommandButton sehr wohl die Eigenschaft "BackColor". Allerdings muss man zusätzlich noch die Eigenschaft "Style" auf "1 - Grafisch" stellen, damit sich die Hintergrundfarbe ändern lässt.
Wie das in Access ist weiß ich nicht.
 
Zurück