ActiveX-Komponente komponieren

Aufgabe | VB starten | ActveX-Schnittstellenassistent laden
Programmcode erstellen | Testen | Kompilieren

Wer's braucht.
Die Programmierung wird von VisualBasic sehr gut unterstützt. Deshalb gibt es außer fehlendem Bedarf keine Probleme damit.
Es folgt ein Beispiel:


Aufgabe

Gut, wenn man sie vorher festlegt. Hier also ein "verbessertes" Label, welches Text mit Schattierung darstellen soll. Da dies ja mit Mitteln von vb realisiert werden muß, kann man auf eine PictureBox zurückgreifen, die so etwas kann. In einem Label ist die erforderliche Positionierung der Schriftzüge nicht möglich.

zum Anfang

VisualBasic starten

Kann ich schon! Im Prinzip ja, aber: Diesmal nicht die "Standard-EXE" wählen, sondern "ActiveX-Steuerelement". Das Icon dazu zeigt ein Hochhaus aus Bauklötzen. Weil, genauso kompliziert geht es weiter.
Die IDE sieht aus wie immer, was ist anders?
Guck besser hin! Erstens wird kein richtiges Fenster gezeigt, zweitens erscheinen im Projektexplorer andere Einträge als sonst. Gearbeitet wird aber wie immer. Hier also: PictureBox einfügen.
Eigenschaften, die später immer gelten sollen, können jetzt eingestellt werden. Unsere PictureBox erhält, weil wir es so wollen, keinen Rand. Im Eigenschaftenfenster deshal "BorderStyle = 0 - kein" auswählen. Dann soll später, damit man einen Anhalt für die relative Lage des Schattens zur Schrift hat, das ganze neue Label mit der Einheit "Punkt" skaliert werden. Deshalb "ScaleMode = 2 -Punkt" wählen. Das war (erst mal) schon alles.
Nun müssen die Eigenschaften und Methoden des neuen Steuerelements festgelegt werden. Aus (mir) unerfindlichen Gründen heißen die "Schnittstellen". Gebraucht wird der "ActiveX-Schnittstellenassistent".
zum Anfang

ActiveX-Schnittstellenassistent laden und starten

Das Laden gelingt im Menü unter "Add-Inns/Add-Inn-Manager". Nach erneutem Öffnen des "Add-Inn"-Menüs steht er als Menüeintrag zum Start bereit.
Nach einem Fenster mit Erklärungen darüber, was nun geschehen soll, kommt das zweite Fenster: Schnittstellenmitglieder auswählen
Gemeint sind diejenigen Eigenschaften (Property), Methoden (Method), Ereignisse (Event), die das neue Steuerelement nach Meinung des Schöpfers benötigt. Die Vorauswahl ist Standard und kann weggeklickt werden.
Was unser Label braucht, sind Schrift, Farbe, Positionier-, und Bemessungsmöglichkeiten. Auch Cls ist gut. Was unbedingt sein muß, wäre die Print-Methode. Die ist nicht im Angebot, aber trotzdem da. Es lebe die Weisheit der vb-Erfinder!
Nach erfolgter Auswahl wird es komplizierter. Die nächste Karte ermöglicht die Ergänzung der Liste um neue Einträge.
Eigene Schnittstellenmitglieder angeben
Der Schatten soll in X- und Y-Richtung definiert gegen den eigentlichen Text verschoben werden. Macht zwei Variable "DeltaX" und "DeltaY" (Die Namen sind frei gewählt!). Dann braucht der Schatten eine Farbe: "ShadowColor" (auch frei gewählt, klingt doch echt professionell oder?). Dann braucht es einen Text, der dargestellt werden soll. Sollten wir ihn etwa "Caption" nennen? Dagegen spricht, daß er später positioniert, also mit der Print-Methode ausgegeben werden wird. Captions werden nie geprintet. Also um der Klarheit willen: "SchattenText". Dann fehlt noch eine Ausgapeprozedur, nennen wir sie "SchattenSchreib". Mehr fällt mir hier nicht ein.
Funktionalität zuordnen
Ich würde das anders ausdrücken aber so wird die nächste Aktivität offiziell beschrieben. Man darf die Eigenschaften, Methoden, Ereignisse des ActiveX-Steuerelements denjenigen eines verwendeten Steuerelements zuordnen. Sollte man unbedingt tun. Denn die Erfüllung aller unserer Wünsche ist damit garantiert. Hier werden alle von der PictureBox hergeleiteten Eigenschaften, Meth... (bis auf die neuen) derselben zugeordnet.
Die neu vergebenen Eigenschaften lassen sich natürlich nicht zuordnen. (= "keine"). Sie werden später das Eigenschaftsfenster des Steuerelments zieren und im anzulegenden Programmcode wie normale Variable behandelt. Die neuen Methoden müssen selber programmiert werden.
Nun noch schnell
Attribute festlegen,
ist doch klar oder etwa nicht? Hier sollen die neu vergebenen Schnittstellen einen Datentyp und ggf. einen Anfangswert (Default-Wert) erhalten. Für die Positionsangaben ist das "Single", für die Farbe der Typ "OLE_COLOR", der Text kommt in einen String. Für die Prozedur des Schreibens brauchen wir keine Rückgabe, also "Empty".
Außerdem kann (sollte!) jeweils eine Beschreibung eingetragen werden. (Hinweis aus gegebenem Anlaß: Es darf korrektes Deutsch verwendet werden!) Dies sind die Erläuterungen, die später im Eigenschaftenfenster angezeigt werden.
Fertig!
Dies beschert uns eine längliche Erläuterung, wie man das Steuerelement testen kann. Wer will, lese sie.
Zunächst sollte man seinen Code bewundern, aber nur behutsam ändern. Es müssen vor dem Testen von Hand einige Reste erledigt werden.

zum Anfang

Programmcode erstellen

Irgendwas soll das ActiveX-Ding doch tun. Das muß nun in den Rechner. Hier ist es ja nicht viel, nur eine einzige Prozedur. Was im folgenden rot gezeigt wird, ist vom Codegenerator angelegt worden und sollte so bleiben. Der übrige Code erledigt die erforderlichen Schritte, zunächst das Retten der eingestellten Werte für den Originaltext, dann den verschobenen Schatten schreiben, anschließend darüber den richtigen Text.

'ACHTUNG! DIE FOLGENDEN KOMMENTIERTEN ZEILEN NICHT ENTFERNEN ODER VERÄNDERN!
'MemberInfo=14

Public Sub SchreibSchatten()
Dim vonX As Single, vonY As Single, col As Long
col = Picture1.ForeColor
vonX = Picture1.CurrentX
vonY = Picture1.CurrentY
Picture1.CurrentX = vonX + DeltaX
Picture1.CurrentY = vonY + DeltaY
Picture1.ForeColor = Shadowcolor
Picture1.Print SchattenText
Picture1.CurrentX = vonX
Picture1.CurrentY = vonY
Picture1.ForeColor = col
Picture1.Print SchattenText
End Sub
zum Anfang

Testen

Zuerst mal das Benutzersteuerelement sichern, dabei werden Namen und Speicherorte vergeben, AUFPASSEN! Dann das Fenster, auf dem es entstand, schließen. Damit befindet es sich automatisch im "Ausführungszustand", zu deutsch, es kann genutzt werden. Man findet das Klötzchenhaus symbolisch nun am Ende der Werkzeugsammlung.
Jetzt mit "Datei, Projekt hinzufügen" eine Standard-EXE hinzuladen. Auf das neue Formular kann mit Doppelklick das ActiveX-Steuerelement eingefügt werden, dazu ein Button, damit man die Sache starten kann.
An Programmcode ist nicht viel nötig. Den Schattentext, die Farbe des Schattens (ShadowColor), die Verschiebung des Schattens (DeltaX, DeltaY) kann man (muß man aber nicht) im Eigenschaftenfenster festlegen. Minimalvariante an Codeaufwand ist dann:

Private Sub Command1_Click()
UserControl1.SchreibSchatten
End Sub

Test
Eine vielleicht nötige Anmerkung: Dieses Steuerelement ist noch nicht, was man "ausgereift" nennen könnte. Darum soll es aber hier auch nicht gehen!

zum Anfang

Kompilieren

Wer sein ActiveX nur selber nutzen will, muß keinen weiteren Aufwand bezüglich der Registrierung treiben. Im Menü "Datei" gibt es bei geöffnetem ActiveX-Projekt die Option "UserControl.ocx erstellen", anstelle von UserControl steht dort natürlich der vorher vergebene Name. Man kompiliert zweckmäßigerweise direkt in das Windows/System-Verzeichnis, dann steht später das Steuerelement über "Projekt, Komponenten" zum Laden bereit.

zum Anfang

© R. Hirte * 2000