Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2009.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Werten Sie Ihre Anwendung mit interessanten Effekten optisch auf.

Techniken

Formulare

Voraussetzungen

Access 2000 oder höher

Beispieldateien

TransparenzUndAndereEffekte.mdb

Shortlink

655

Transparenz und andere Effekte in Formularen

André Minhorst, Duisburg

Windows Vista und andere Betriebssysteme machen vor, wie man den Wohlfühlfaktor vor dem Rechner durch schicke Effekte erhöht. Mit ein wenig Fantasie bekommt man Ähnliches auch unter Access hin - zumindest kann man Formulare mit ein wenig API-Unterstützung halbtransparent schalten oder ein- und ausblenden. Was außerdem noch geht, zeigen wir in diesem Beitrag.

Transparente Formulare

Wenn Sie möchten, können Sie die Formulare in Ihrer Anwendung transparent darstellen. Die nachfolgend vorgestellte Routine benötigt dazu einige Konstanten und API-Funktionen:

Private Const GWL_EXSTYLE _

= -20

Private Const WS_EX_LAYERED _

= 524288

Private Const LWA_ALPHA = 2

Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Declare Function SetLayeredWindowAttributes Lib "user32.dll" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Die Funktion selbst schließlich heißt FormTransparency und erwartet zwei Parameter: einen Objektverweis auf das betroffene Formular (frm) und den Grad der Transparenz (intTransparency) mit einem Wert zwischen 0 (durchsichtig) und 255 (undurchsichtig).

Sub FormTransparency(ByVal frm As Access.Form, _

    ByVal intTransparency As Integer)

    Dim i As Long, hwnd As Long

    If frm Is Nothing Then Exit Sub

    If frm.PopUp = False Then Exit Sub

    hwnd = frm.hwnd

    i = GetWindowLong(hwnd, GWL_EXSTYLE)

    i = i Or WS_EX_LAYERED

    SetWindowLong hwnd, GWL_EXSTYLE, i

    SetLayeredWindowAttributes hwnd, 0, _

    AValue, LWA_ALPHA

    End Sub

Die einzige Voraussetzung für den Einsatz von Transparenz ist, dass die Eigenschaft Popup des Formulars auf den Wert True eingestellt sein muss. Das können Sie in den Formulareigenschaften erledigen.

Ein einfaches Beispiel enthält ein Textfeld zur Eingabe des Transparenzgrades und eine Schaltfläche, die beim Klicken die Transparenz des Formulars auf den angegebenen Wert einstellt (s. Abb. 1).

pic001.png

Abb. 1: Beispiel für ein transparentes Formular

Die Beim Klicken-Ereignisprozedur des Formulars sieht schlicht so aus:

Private Sub cmdTransparenz_Click()

    FormTransparency Me, Me.txtTransparenz

    End Sub

Was kann man nun mit transparenten Formularen anfangen? Sie könnten zum Beispiel dafür sorgen, dass ein Formular sich nicht einfach öffnet, sondern sich langsam ein- und auch wieder ausblendet.

Formular ein- und ausblenden

Bis zu dem Zeitpunkt, an dem man nicht selbst mal ein Formular gesehen hat, das sich fast übergangslos von nicht sichtbar bis zur vollen Pracht einblendet, findet man dieses Feature wahrscheinlich völlig unnötig. Aber schauen Sie doch selbst!

Alles, was Sie brauchen, ist das Formular, das beim Öffnen langsam ein- und beim Schließen sanft ausgeblendet werden soll - und natürlich ein wenig Code, den Sie komplett in Listing 1 finden.

Listing 1: Sanftes Ein- und Ausblenden eines Formulars

Dim intTransparency As Integer

Dim bolEinblenden As Boolean

Const cintTimerInterval As Integer = 10

Private Sub Form_Load()

    intTransparency = 0

    bolEinblenden = True

    Me.TimerInterval = cintTimerInterval

    End Sub

Private Sub Form_Open(Cancel As Integer)

    FormTransparency Me, 0

    End Sub

Private Sub Form_Timer()

    If bolEinblenden = True Then

        If Not intTransparency <= 255 Then

            intTransparency = intTransparency + 5

            FormTransparency Me, intTransparency

        Else

            Me.TimerInterval = 0

        End If

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Formularposition speichern und wiederherstellen

Modale Dialoge mal anders

Formulare für die Dateneingabe

Validieren mit Klasse

Kein Datensatz- und Positionswechsel bei Requery

Datenbank nach Vorlage

Fortschrittsanzeige

Änderungsdaten protokollieren

Benutzerverwaltung

Alphabetisches Register

Zoomfenster im Eigenbau

Meldungsfenster im Eigenbau

Individuelle Datenauswahl

Formulare im Blickpunkt

Datumsbereiche auswählen

Suchformular für die Datenblattansicht

Unterformulare: Daten anlegen und löschen

Formular-Assistenten

Standard-Lookupformulare

Zugriff auf Formulare

Undo in Formularen und Unterformularen

Validierung von Daten

Konsistente Dateneingabe in Unterformulare

Die Fortschrittsanzeige - geduldigeres Warten

Zugriff auf Daten in Formularen und Steuerelementen

Projektzeitmanager

© 2003-2015 André Minhorst Alle Rechte vorbehalten.