ABOUT Visual Basic Programmieren Programmierung Download Downloads Tips & Tricks Tipps & Tricks Know-How Praxis VB VBA Visual Basic for Applications VBS VBScript Scripting Windows ActiveX COM OLE API ComputerPC Microsoft Office Microsoft Office 97 Office 2000 Access Word Winword Excel Outlook Addins ASP Active Server Pages COMAddIns ActiveX-Controls OCX UserControl UserDocument Komponenten DLL EXE
Diese Seite wurde zuletzt aktualisiert am 08.08.2001

Diese Seite wurde zuletzt aktualisiert am 08.08.2001
Aktuell im ABOUT Visual Basic-MagazinGrundlagenwissen und TechnologienKnow How, Tipps und Tricks rund um Visual BasicActiveX-Komponenten, Controls, Klassen und mehr...AddIns für die Visual Basic-IDE und die VBA-IDEVBA-Programmierung in MS-Office und anderen AnwendungenScripting-Praxis für den Windows Scripting Host und das Scripting-ControlTools, Komponenten und Dienstleistungen des MarktesRessourcen für Programmierer (Bücher, Job-Börse)Dies&Das...

Themen und Stichwörter im ABOUT Visual Basic-Magazin
Code, Beispiele, Komponenten, Tools im Überblick, Shareware, Freeware
Ihre Service-Seite, Termine, Job-Börse
Melden Sie sich an, um in den vollen Genuss des ABOUT Visual Basic-Magazins zu kommen!
Informationen zum ABOUT Visual Basic-Magazin, Kontakt und Impressum

Zurück...

Hintervordergründiges

Zurück...


Anzeige

(-hg) mailto:hg_zstate@aboutvb.de

Hätten Sie's gedacht? Sie können auf einem ähnlich einer PictureBox als Container angelegten UserControl platzierte Steuerelemente hinter interne ("konstituierende") Steuerelemente des UserControls verschieben. Oder umgekehrt ausgedrückt: Sie können konstituierende Steuerelemente eines Container-UserControls in den Vordergrund vor später auf diesem platzierte Steuerelemente holen.

Eigentlich sollte man ja davon ausgehen, dass die "innere" Oberfläche eines UserControls mit den zur Entwicklungszeit des UserControls darauf platzierten, so genannten "konstituierenden" Steuerelementen gemeinsam eine Abbildungsebene bilden würden, während die Steuerelemente, die später auf einem Container-UserControl (dessen Eigenschaft ControlContainer also True ist) platziert werden, alle zusammen in einer Ebene darüber liegen sollten.

Im Normalfall ist dies ja auch so: Sie können die auf einem Container-UserControl platzierten Steuerelemente beliebig in den Vordergrund oder in den Hintergrund versetzen - die konstituierenden Steuerelemente des UserControls bleiben trotzdem immer im Hintergrund und behalten ihre eigene, ursprüngliche Tiefenstaffelung unverändert bei.

Ändern Sie allerdings die Tiefenanordnung eines der konstituierenden Steuerelemente im UserControl per Aufruf der ZOrder-Methode dieses Steuerelements, können Sie es in den Vordergrund verschieben - und zwar in den Vordergrund auch vor später "von außen" auf dem Container-UserControl platzierte weitere Steuerelemente. Allerdings gibt es eine kleine Einschränkung: Dies gilt nur für Steuerelemente mit einem eigenen Fenster, und nicht für die einfachen grafischen Steuerelemente (Label, Image, Shape und Line). Diese bleiben immer im Hintergrund - und konstituierende grafische Steuerelemente bleiben zudem immer im hintersten Hintergrund.

Schauen Sie sich dazu einmal folgendes Beispiel an. Die PictureBox mit dem Icon befindet sich von vornherein als konstituierendes Steuerelement auf dem Container-UserControl, während die beiden Optionsschaltflächen nachträglich auf dem Container platziert wurden.


Die PictureBox mit dem Icon ist ein konstituierendes Steuerelement, das sich vor nachträglich auf dem Container platzierte Steuerelemente bringen lässt.

Hier ist das UserControl mit einer Eigenschaft ZState versehen, über die Sie im Eigenschaftenfenster oder zur Laufzeit die Ebene der PictureBox ändern können:

Public Enum ZStateConstants
  ZForeground
  ZBackground
End Enum

Private pZState As ZStateConstants

Public Property Get ZState() As ZStateConstants
  ZState = pZState
End Property

Public Property Let ZState(New_ZState As ZStateConstants)
  Select Case New_ZState
    Case pZState
    Case ZForeground, ZBackground
      pZState = New_ZState
      UserControl_Show
      PropertyChanged "ZState"
    Case Else
      Err.Raise 380
  End Select
End Property

Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  Me.ZState = PropBag.ReadProperty("ZState", 1)
End Sub

Private Sub UserControl_Show()
  pic.ZOrder pZState
End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  PropBag.WriteProperty "ZState", pZState, 1
End Sub

Beachten Sie, dass die Änderung der ZOrder im Show-Ereignis des UserControls erfolgt. Ein Aufruf der ZOrder-Methode hat nämlich nicht die gewünschte Wirkung, wenn das UserControl nicht sichtbar ist.


Beispiel-Projekt ZStateSample (zstate.zip - ca. 3,4 KB)


Artikel
Zum Download-Bereich dieses Artikel
Mail an den Autor dieses Artikels

KnowHow
Zur KnowHow-Übersicht

KnowHow-Themen
Themen - Allgemeines
Themen - Entwicklungsumgebung (VB-IDE)
Themen - Forms
Themen - Steuerelemente (Controls)
Themen - Grafik
Themen - Dateien
Themen - UserControls
Themen - Einsteiger-Tipps
Themen - Wussten Sie...?

Übersicht nach Titeln in alphabetischer Reihenfolge
Übersicht nach Erscheinungsdatum

Schnellsuche




Zum Seitenanfang

Copyright © 1999 - 2017 Harald M. Genauck, ip-pro gmbh  /  Impressum

Zum Seitenanfang

Zurück...

Zurück...

Download Internet Explorer