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/2002.

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

Steuerelemente vom Fließband

Autor: André Minhorst, Duisburg

Steuerelemente sind in der Regel recht individuell. Sie unterscheiden sich im Namen, in der Bezeichnung, im Aussehen und wahrscheinlich durch die für unterschiedliche Ereignisse hinterlegten Prozeduren voneinander. Daher werden sie in der Regel manuell angelegt und die Eigenschaften wie gewünscht eingestellt. Manchmal werden allerdings Steuerelemente in größeren Mengen benötigt, die sich noch dazu nur unwesentlich voneinander unterscheiden. Im vorliegenden Beitrag lernen Sie, wie Sie ein Formular oder einen Bericht schnell mit den benötigten Steuerelementen füllen, anstatt diese Aufgabe von Hand zu erledigen.

Wenn Sie z. B. einmal die Musterlösung zum Thema Projektverwaltung der vorliegenden Ausgabe von "Access im Unternehmen" betrachten, dann fallen Ihnen sicher die Mengen von Bezeichnungsfeldern ins Auge, die - unterschiedlich eingefärbt - die Dauer von Projekten und deren Phasen anzeigen (s. Abb. 1).

Abb. 1: Eine Projektverwaltung erfordert die Verwendung einiger Steuerelemente.

Jedes dieser Bezeichnungsfelder hat einige genau festgelegte Eigenschaften. So ist z. B. die Größe genau definiert.

Aus der Größe leitet sich wiederum die Position eines jeden Bezeichnungsfeldes ab, da diese genau auf einer Höhe und exakt nebeneinander liegen sollen.

Schon das exakte Positionieren von 28 Steuerelementen je Reihe ist eine unangenehme Arbeit. Und richtig leidig wird es, wenn Sie feststellen, dass die Bezeichnungsfelder alle etwas zu schmal sind - und Sie alle auf die neue Größe und die neue Position bringen müssen.

Da ja möglicherweise - wie auch in der Projektverwaltung - auf die Bezeichnungsfelder zugegriffen werden soll, um beispielsweise deren Hintergrundfarbe zu ändern, sollten Sie allen Bezeichnungsfeldern auch einen sinnvollen Namen zuweisen - z. B. lblDatum01, lblDatum02, usw.

Spätestens an dieser Stelle erfährt der vorliegende Bericht seine Daseinsberechtigung, denn das ständige Hin und Her zwischen dem Markieren des Steuerelements und dem Ändern des Bezeichnungsfeldnamens ist sehr aufwendig.

Die Funktionen CreateControl und CreateReportControl

Für die Erstellung eines Steuerelementes verwenden Sie - je nachdem, ob Sie das Steuerelement in einem Formular oder in einem Bericht erstellen möchten - die Funktion CreateControl oder CreateReportControl.

Beide Funktionen haben nahezu identische Parameter, sodass diese in einem Zug erläutert werden können. Die Syntax der Anweisung hat folgendes Aussehen:

CreateControl(Formularname, _
    Steuerelementtyp[, Bereich[, _
    Hauptobjekt[, Spaltenname[, Links[, _
    Oben[, Breite[, Höhe]]]]]]])

Die Parameter in den eckigen Klammern sind optional und müssen nicht angegeben werden.

Für den Parameter Formularname übergeben Sie der Funktion den Namen des Formulars oder Berichts, z. B. "frmProjekte". Mit Steuerelementtyp geben Sie die Art des Steuerelements an. Eine Aufstellung der möglichen Werte finden Sie in Tab. 1.

Als Wert für den Parameter Bereich erwartet die Funktion einen Wert wie z. B. Detailbereich (acDetail), Formular- oder Berichtskopf/-fuß
(acHeader, acFooter), Seitenkopf (acPageHeader), Seitenfuß (acPageFooter) usw. Mit diesem Wert geben Sie an, in welchem Bereich das Steuerelement erstellt werden soll.

Für den Parameter Hauptobjekt geben Sie den Namen eines übergeordneten Steuerelementes an. Im Falle eines Bezeichnungsfeldes können Sie hier beispielsweise den Namen eines Textfeldes angeben, an das Sie das Bezeichnungsfeld binden möchten. Wenn das Feld Daten enthält und an ein Feld der Datenherkunft gebunden werden soll, geben Sie für den Parameter Spaltenname den gewünschten Feldnamen an.

Schließlich fehlen noch die Position und die Größe, die mit den Parametern Links, Oben, Breite und Höhe übergeben werden.

Steuerelement

Konstante

Bezeichnungsfeld

acLabel

Rechteck

acRectangle

Linie

acLine

Bild

acImage

Befehlsschaltfläche

acCommandButton

Optionsfeld

acOptionButton

Kontrollkästchen

acCheckBox

Optionsgruppe

acOptionGroup

Gebundenes Objektfeld

acBoundObjectFrame

Textfeld

acTextBox

Listenfeld

acListBox

Kombinationsfeld

acComboBox

Unterformular

acSubform

Objektfeld

acObjectFrame

Seite

acPage

Seitenumbruch

acPageBreak

ActiveX-Steuerelement

acCustomControl

Umschaltfläche

acToggleButton

Register-Steuerelement

acTabCtl

Tab. 1: Steuerelemente und deren Konstanten

Anlegen von Steuerelementen

Nachdem Sie nun den theoretischen Hintergrund haben, beginnen Sie direkt mit dem Anlegen von Steuerelementen via VBA-Prozedur. Sie lernen zunächst, wie Sie ein einfaches Textfeld anlegen, und erstellen anschließend ein an das Textfeld gebundenes Bezeichnungsfeld.

Anlegen eines Textfeldes

Nach der Theorie folgt nun die Praxis: Mit einer kleinen Prozedur legen Sie ein erstes Textfeld in einem leeren Formular an.

Anlegen eines Formulars

Zunächst einmal müssen Sie jedoch das Formular anlegen und es unter dem gewünschten Namen speichern - z. B. unter frmBeispiel.

Anlegen eines Moduls

Für die Prozedur zum Anlegen des Steuerelementes legen Sie außerdem ein neues Modul namens mdlBeispiel an.

Hinweis

Die für die Angabe von Position und Größe verwendeten Parameter erwarten Werte der Einheit Twips. 567 Twips entsprechen einem Zentimeter. Um ein besseres Gefühl für diese Einheit zu bekommen, können Sie auch Ausdrücke wie z. B. 567*2.5 verwenden. Der genannte Ausdruck entspricht einer Länge von 2,5 cm. (

Prozedur zum Erstellen eines Textfeldes

Public Sub TextfeldErstellen(Formularname As String)

    DoCmd.OpenForm Formularname, acDesign

    CreateControl Formularname, acTextBox, acDetail, , _
        , 567 * 3, 567, 567 * 3, 567 * 0.5

End Sub

Quellcode 2

Die Prozedur aus Quellcode 1 erstellt ein Textfeld wie in Abb. 2. Um die Prozedur auszuprobieren, rufen Sie diese im Testfenster auf. Das Testfenster aktivieren Sie mit der Tastenkombination Strg + G. Dort geben Sie einfach den Prozeduraufruf SteuerelementErstellen ein und führen ihn durch Betätigen der Eingabetaste aus.

Falls Sie das Formular frmBeispiel derzeit nicht in der Entwurfsansicht geöffnet haben, erhal-ten Sie eine entsprechende Fehlermeldung (s. Abb. 3).

Um das Formular nicht jedes Mal selbst in der Entwurfsansicht öffnen zu müssen, erweitern Sie die Prozedur SteuerelementErstellen um den folgenden Befehl, den Sie über dem bereits vorhandenen Befehl platzieren:

DoCmd.OpenForm "frmBeispiel", acDesign

Public Sub SteuerelementErstellen()

    CreateControl "frmBeispiel", _
        acTextBox, acDetail, , , 567, _
        567, 567 * 3, 567 * 0.5

End Sub

Quellcode 1

Abb. 2: Ein automatisiert erstelltes Textfeld

Abb. 3: Fehlermeldung bei fehlendem Formular in der Entwurfsansicht

Die Prozedur erstellt nun ohne Murren das gewünschte Textfeld. Wenn Sie nun einmal die Prozedur betrachten, stellen Sie fest, dass der Ausdruck "frmBeispiel" zweimal vorhanden ist.

Wenn Sie die Prozedur nun auf ein anderes Formular anwenden möchten, müssen Sie bereits an zwei Stellen den Formularnamen ändern.

Daher ziehen Sie diesen Parameter in den Prozedurkopf und übergeben ihn beim Aufruf. Die Prozedur hat nun das Aussehen wie in Quellcode 2.

Mit dem folgenden Aufruf erstellen Sie nun das gewünschte Textfeld:

TextfeldErstellen _
    "frmBeispiel"

Public Sub BezeichnungsfeldErstellen(Formularname As String)

    Dim ctlBezeichnungsfeld As Control

    DoCmd.OpenForm Formularname, acDesign

    Set ctlBezeichnungsfeld = CreateControl(Formularname, acLabel, acDetail, _
        "Beispieltextfeld", , 567, 567, 567 * 2, 567 * 0.5)

    ctlBezeichnungsfeld.Properties("Caption") = "Textfeld"

End Sub

Quellcode 3

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:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.