|
Leider kann eine CheckBox nicht wie ein Label-Steuerelement
transparent werden. Bei einer flächigen Hintergrundfarbe des
Containers könnten Sie zwar diese als Hintergrundfarbe der CheckBox
übernehmen, doch bei "bunten" Hintergründen, die
Farbverläufe oder Bilder enthalten, hat das wenig Sinn.
Sie können jedoch die Größe der CheckBox so weit minimieren,
dass nur noch das Kästchen sichtbar bleibt und als Ersatz für die
Beschriftung ein transparentes Label-Steuerelement daneben
platzieren.
Die Größe der CheckBox sollte im Normalfall
(Standard-Bildschirmeinstellungen) 195 zu 195 Twips
sein (oder, um abweichende Schriftgrößen bei den
Bildschirmeinstellungen zu berücksichtigen, 13 *
Screen.TwipsPerPixelX zu 13 * Screen.TwipsPerPixelY).
Der Abstand des Label-Steuerelements von der linken Kante der
CheckBox aus gemessen, sollte 270 Twips betragen (bzw. 18
* Screen.TwipsPerPixelX), während die Oberkante identisch
ist.
Sie können die Kurztaste für die CheckBox (Kennzeichnung des
entsprechenden Buchstabens mit "&") in
die Caption-Eigenschaft des Label-Steuerelements übernehmen. Damit
das funktioniert, muss der Wert der TabIndex-Eigenschaft des
Label-Steuerelements um 1 kleiner sein als bei der
CheckBox.
Damit ein Klick auf das Label-Steuerelement wie gewohnt die
CheckBox umschaltet und diese, soweit sie ihn noch nicht hat, den
Fokus erhält, fügen Sie folgenden Code für das Click-Ereignis des
Label-Steuerelements ein:
Private Sub LabelZuCheckBox_Click()
With CheckBox
.SetFocus
.Value = Abs(Not CBool(.Value))
End With
End Sub
Weitere Ereignisse des Label-Steuerelements müssen Sie
gegebenenfalls analog zur CheckBox auswerten und bearbeiten.
Einziger kleiner Schönheitsfehler dieser alternativen
CheckBox-Konstruktion ist, dass die Markierung des Fokus nicht so
einfach nachzubilden ist. Visual Basic liefert leider keinerlei
Informationen darüber, wann ein Steuerelement tatsächlich den
Fokus erhält oder verliert - die Ereignisse GotFocus und LostFocus
sind ja nur relativ in Bezug auf die Anwendung und melden nicht den
Fokuserhalt bzw. -verlust in Bezug auf andere Anwendungen und das
gesamte System. Wenn Sie sich mit Subclassing auskennen, können Sie
die Nachrichten SetFocus und KillFocus auswerten und dementsprechend
das Fokus-Rechteck mit der API-Funktion DrawFocusRect zeichnen.
Eine transparente Alternative zu einem Option-Button ist auf
gleiche Weise leider nicht realisierbar, da die
"Schaltfläche" ja rund ist. Wenn Sie allerdings die paar
wenigen Pixels in den Ecken nicht stören sollten (sie können ja
vorsichtshalber eine Hintergrundfarbe für den Option-Button
wählen, die dem Hintergrund weitgehendst angepasst ist), steht
einer Übertragung des Prinzips jedoch nichts im Wege.
Den Farbverlauf im Beispiel-Form erzeugt übrigens eine in "Als
die Farben laufen lernten" vorgestellte Prozedur.
|