MASTER CLASS. Michael Schwimmer. Excel VBA. Einstieg für Anspruchsvolle ADDISON-WESLEY. [ in Kooperation mit ]

Größe: px
Ab Seite anzeigen:

Download "MASTER CLASS. Michael Schwimmer. Excel VBA. Einstieg für Anspruchsvolle ADDISON-WESLEY. [ in Kooperation mit ]"

Transkript

1 MASTER CLASS Æ Michael Schwimmer Excel VBA Æ Einstieg für Anspruchsvolle ADDISON-WESLEY [ in Kooperation mit ]

2 3 Klassen 3.1 Was Sie in diesem Kapitel erwartet In diesem Kapitel geht es darum, zu zeigen, was Klassen sind und warum Sie diese viel häufiger einsetzen sollten. Ein kleines Beispiel zur Manipulation von Initialisierungsdateien zeigt die Vorgehensweise, mit der Sie möglichst unkompliziert und ohne umfangreiche Planung kleinere Klassen anlegen können. Außerdem wird gezeigt, wie Sie Steuerelemente dynamisch in eine Userform und ein Tabellenblatt einfügen und mit den Ereignissen dieser Steuerelemente umgehen. Dazu sind Klassen nämlich unerlässlich. 3.2 Allgemeines Klassen bilden die Grundlage der objektorientierten Programmierung. Sie kapseln die Funktionalität von Objekten, machen den Code übersichtlicher und man kann den übergeordneten Programmablauf besser verstehen. Nahezu alle Objekte, die Sie in Excel benutzen, beruhen auf Klassen. Wenn Sie den Objektkatalog öffnen (Abbildung 3.1), werden Sie hunderte verschiedener Objektklassen vorfinden. Wenn Sie Codeteile besitzen, die Sie immer wieder benutzen, sollten Sie sich auf jeden Fall dazu entschließen, dafür eine eigene Klasse anzulegen, auch wenn es Ihnen anfangs etwas umständlich vorkommt. Die Vorteile sind enorm und je häufiger Sie selbst Klassen schreiben und einsetzen, umso mehr werden auch Sie davon überzeugt sein. 91

3 3 Klassen Abbildung 3.1 Klassen im Objektkatalog Der wohl größte Vorteil ist der, dass Sie mit einer Klasse ein kompaktes, wiederverwendbares Objekt mit Eigenschaften und Methoden besitzen und beim Einsatz dieser Klasse nicht mehr wissen müssen, wie die Funktionalität implementiert ist. Es reicht, wenn Sie deren Eigenschaften, Methoden und Funktionen kennen. Arbeiten Sie im Team, müssen Sie gemeinsam lediglich die öffentlichen Eigenschaften und Methoden der Klassen festlegen. Die anderen Programmierer können anschließend die von Ihnen geschriebene Klassen benutzen, ohne dass diese sich mit dem Code auseinander setzen müssen, der dahinter steht. Für andere ist also Ihre Klasse eine Blackbox, vergleichbar mit einem Fernseher oder DVD- Player, bei denen man auch nicht unbedingt wissen muss, wie sie funktionieren, um diese Geräte benutzen zu können. Vielleicht stellt sich irgendwann einmal heraus, dass sich in Ihre Klasse ein Fehler eingeschlichen hat. Dann brauchen Sie nicht in jeder Anwendung, die diese Klasse benutzt, den Code anzupassen. Sie tauschen in den betroffenen Arbeitsmappen lediglich die fehlerhafte Klasse gegen eine fehlerfreie aus. Auch Erweiterungen der Klasse sind ohne weiteres möglich und beeinflussen die bestehenden Anwendungen nicht, wenn die vorhandenen Eigenschaften und Methoden beibehalten werden. 92

4 Instanzierung Finden Sie später Möglichkeiten, bestimmte Eigenschaften und Methoden der Klasse effizienter zu gestalten, nur zu. Es hat keine negativen Auswirkungen auf die Anwendungen, die sich der Klasse bedienen. Sie können auch auf einfache Art einen Schreibschutz für bestimmte Eigenschaften verwirklichen, indem Sie die Prozeduren 3URSHUW\ /HW und 3URSHUW\ 6HW ganz einfach weglassen. Sie können sogar mithilfe von Klassen benutzerdefinierte Typen nachbilden, die im Gegensatz zu den normalen Typen eine gewisse Eigenintelligenz besitzen. Denkbar wären dann beispielsweise Typen, die in verschiedenen Ländern mit unterschiedlichen Maßeinheiten eingesetzt werden können und notwendige Umrechnungen intern durchführen. 3.3 Instanzierung Klassen sind keine fertigen Objekte, sie sind quasi die Schablonen dazu. Erst durch die Instanzierung werden daraus reale Objekte, mit denen man auch etwas anfangen kann. Diese Schablone kann beliebig oft verwendet werden und jedes erzeugte Objekt ist dabei unabhängig von allen anderen und besitzt einen eigenen Satz von internen Variablen. Eine Instanz einer Klasse können Sie auf zwei Wegen anlegen: 1. Verwenden der 'LP-Anweisung zusammen mit 1HZ 'LP P\&ODVV $V 1HZ FOV7HVW 2. Mit der 'LP-Anweisung eine Objektvariable anlegen, mit 6HW 2EMHNWYDUL DEOH 1HZ.ODVVH ein Objekt erstellen und gleichzeitig der Objektvariablen zuweisen 'LP P\&ODVV $V FOV7HVW 6HW P\&ODVV 1HZ FOV7HVW Der Unterschied zwischen beiden Varianten ist der Zeitpunkt, ab dem das Objekt tatsächlich existiert. Bei der ersten Variante wird das Objekt erst bei einem Zugriff auf eine Methode oder Eigenschaft angelegt. Bei der zweiten Methode wird das Objekt schon bei der 6HW-Anweisung zum Leben erweckt. 3.4 Eigenschaften und Methoden Für jede Eigenschaft benötigen Sie zwei 3URSHUW\-Prozeduren oder eine öffentliche Variable. Die 3URSHUW\-Prozeduren stellen eine mögliche Schnittstelle zur Außenwelt der Klasse dar und werden beim Setzen und Lesen ausgeführt, sind also nicht unbedingt mit öffentlichen Variablen vergleichbar. Beim Auslesen wird die *HW-, beim Setzen die /HW- und bei Objekten die 6HW-Prozedur ausgeführt. Wenn Sie für eine Eigenschaft den Schreibschutz benötigen, lassen Sie einfach die 3URSHUW\ /HW_6HW-Prozeduren weg. 93

5 3 Klassen Zum Einfügen der 3URSHUW\-Prozeduren können Sie das Menü EINFÜGEN PRO- ZEDUR PROPERTY (Abbildung 3.2) in der VBE benutzen. Abbildung 3.2 Property einfügen Passen Sie die 3URSHUW\- Prozeduren so an, dass diese ausschließlich den Datentyp der internen Variablen aufnehmen und zurückgeben. Standardmäßig wird nämlich eine Property mit dem Datentyp 9DULDQW erzeugt. Für jede Eigenschaft, die über eine 3URSHUW\-Prozedur gesetzt und ausgelesen wird, benötigen Sie zudem noch eine klassenweit gültige Variable, welche die Werte aufnimmt und für die gesamte Lebensdauer der Klasseninstanz speichert. In der Ereignisprozedur &ODVVB,QLWLDOL]H können Sie diese Variablen initialisieren, also mit Werten vorbelegen. Diese Ereignisprozedur wird beim Anlegen der Klasseninstanz ausgeführt. Für Methoden können Sie öffentliche Prozeduren oder Funktionen verwenden. Was Sie letztendlich verwenden, bleibt Ihnen überlassen. Eine Funktion bietet sich beispielsweise dann an, wenn als Rückgabewert der Erfolg einer Aktion signalisiert werden soll. 3.5 Überladen von Parametern Um 9DULDQW bei Eigenschaftsprozeduren zu vermeiden, können Sie bei Klassen auch 3URSHUW\-Prozeduren mit gleichen Namen für verschiedene Datentypen schreiben, die je nach übergebenem Datentyp ausgeführt werden. Diese Funktionalität nennt man hehuodghq. 94

6 Erstellen von Klassen Hier ein kleines Beispiel (Listing 3.1) dazu: 6XE WHVWhEHUODGHQ 'LP 8HEHUODGHQ $V 1HZ FOV8HEHUODGHQ :LWK 8HEHUODGHQ Listing _01_Klassen.xls\mdlÜberladen 7DEHOOHQEODWW $XVJDEH 0VJ%R[ 7DEHOOHQEODWW hehujdeh DOV 6WULQJ 6HW 7DEHOOHQEODWW :RUNVKHHWV 0VJ%R[ 7DEHOOHQEODWW 2EMHNW EHUJDEH (QG :LWK Die Klasse FOV8HEHUODGHQ (Listing 3.2): 2SWLRQ ([SOLFLW 3ULYDWH PVWU%ODWW $V 6WULQJ 3XEOLF 3URSHUW\ *HW 7DEHOOHQEODWW $V 6WULQJ 7DEHOOHQEODWW PVWU%ODWW Listing _01_Klassen.xls\clsUeberladen 3XEOLF 3URSHUW\ /HW 7DEHOOHQEODWW%\9DO Y1HZ9DOXH $V 6WULQJ PVWU%ODWW Y1HZ9DOXH 3XEOLF 3URSHUW\ 6HW 7DEHOOHQEODWW%\9DO Y1HZ9DOXH $V :RUNVKHHW PVWU%ODWW Y1HZ9DOXH1DPH Ich glaube aber nicht, dass Sie allzu häufig in die Verlegenheit kommen, mit VBA so etwas zu realisieren. 3.6 Erstellen von Klassen Es hört sich vielleicht etwas seltsam an, aber der beste Weg, eine Klasse zu programmieren ist der, sie erst zu benutzen und anschließend die Funktionalität der Klasse zu realisieren. Das will ich an einem kleinen Beispiel demonstrieren, wobei Einträge aus einer.ini-datei gelesen und Werte in diese hineingeschrieben werden können Initialisierungsdateien Auch in Zeiten der Registry haben Initialisierungsdateien noch ihre Daseinsberechtigung. Diese Dateien entlasten die Registry, können mit einem Texteditor bearbeitet werden und sind sehr leicht weiterzugeben. VBA bietet zwar die Möglichkeit, mittels 6DYH6HWWLQJ und *HW6HWWLQJ Daten in der Registry abzulegen, leider werden diese Daten dann nur im Zweig HKEY_CURRENT_USER\Software\ VB and VBA Program Settings abgelegt. Darauf hat aber ein anderer Benutzer keinen Zugriff, weshalb allgemeine Einstellungen für jeden Benutzer separat abgelegt werden müssen. Das ist dann aber eine redundante Datenvorhaltung in Reinkultur. 95

7 3 Klassen Deshalb sollten mittels 6DYH6HWWLQJ und *HW6HWWLQJ nur benutzerabhängige Einstellungen gespeichert werden. Allgemeine Einstellungen von Software werden üblicherweise unter HKEY_LOCAL_MACHINE\Software abgelegt, aber das lässt sich unter VBA nicht so einfach realisieren. Bei dem Weg über die Registry wird zudem noch sehr häufig vergessen, diese Einträge auch wieder zu löschen, wenn sie nicht mehr benötigt werden. Mit der Zeit wird die Registry dann so aufgebläht, dass sogar Performanceprobleme auftreten können. Man darf auch nicht vergessen, dass es auch nicht sehr sinnvoll ist, dem normalen Benutzer das Manipulieren der Registry zuzumuten, um solche überflüssigen Einträge zu entfernen. Neben irreparablen Fehlern, die durch Löschen oder die Manipulation der falschen Schlüssel auftreten, sind die meisten Benutzer mit solch einer Aktion auch schlicht und einfach überfordert. Eine.ini-Datei können Sie mit dem VBA-Befehl 2SHQ öffnen, auslesen und bearbeiten, Werte werden darin als Strings gespeichert. Wenn man den Aufbau dieser Dateien kennt, ist das Auslesen und Speichern gar kein so großes Problem. Eine Initialisierungsdatei ist eine einfache Textdatei mit der Dateinamenserweiterung.ini. Sie ist eingeteilt in Sektoren, in denen sich Schlüssel mit den zugehörigen Werten befinden. Nachfolgend beispielhaft der Aufbau, wie Sie ihn in einem Texteditor sehen würden: 6FKO VVHO :HUW 6FKO VVHO :HUW 6FKO VVHO :HUW 6FKO VVHO :HUW Erheblich leichter funktioniert das Auslesen und Speichern von Schlüsselinhalten aber mit den Betriebssystemfunktionen :ULWH3ULYDWH3URILOH6WULQJ und *HW3ULYDWH3URILOH6WULQJ, die Sie mit der 'HFODUH-Anweisung auch unter VBA benutzen können Das Benutzen der Klasse clsini In einem Standardmodul in diesem Beispiel ist es das Modul PGO&UHDWH erstellen Sie sich erst einmal eine Prozedur, die eine Instanz der Klasse FOV,QL anlegt und welche die gewünschten Eigenschaften und Methoden der Klasse benutzt. Dazu muss die Klasse noch nicht einmal existieren. Die wichtigste Eigenschaft der zukünftigen Klasse ist sicherlich der Pfad zu der Datei, die als Container für die zu speichernden Werte dienen soll. Diese Eigenschaft nennen wir sinnigerweise 3IDG=XU,QL. Des Weiteren benötigt man die Angabe der Sektion, in welcher der Schlüssel gespeichert oder aus der er ausgelesen werden soll. Wichtig ist auch der Name des Schlüssels, der den Wert aufnehmen soll, und schließlich der Wert selber. Diese drei Eigenschaften bekommen die Namen 6HNWLRQ 6FKO VVHO und :HUW. 96

8 Erstellen von Klassen Die vorher angesprochenen Eigenschaften sollen gesetzt und anschließend in die Datei geschrieben werden. Man könnte schon beim Setzen einer dieser Eigenschaften das Schreiben anstoßen, das ist aber keine gute Idee, denn es werden zum Speichern erst alle Eigenschaften benötigt. Also brauchen Sie eine Methode, die erst dann aufgerufen wird, wenn die benötigten Eigenschaften gesetzt sind. Diese Methode nennen wir $QOHJHQbQGHUQ, denn eine Sektion, ein Schlüssel und ein Wert kann neu angelegt oder geändert werden. In diesem Beispiel benutzte ich statt einer Prozedur eine Funktion, denn mit einer Funktion kann man zusätzlich noch einen Wahrheitswert zurückgeben, der Auskunft über den Erfolg der Aktion gibt. Schlüssel und Sektionen sollte man auch löschen können, also werden dafür auch zwei Methoden benötigt. Hier sind das die Methoden 6FKO VVHO/ VFKHQ und 6HNWLRQ/ VFKHQ, die auch wieder als Funktionen mit Erfolgsmeldung ausgeführt sind. Schön wäre es noch, wenn man alle Sektionen einer Datei oder alle Schlüssel einer Sektion auflisten könnte. Also werden auch dafür zwei Eigenschaften mit den Namen $OOH6HNWLRQHQ und $OOH6FKO VVHO angelegt, die in der Klasse als Funktion ausgeführt sind und jeweils ein Array mit dem Ergebnis liefern sollen. In dem vorliegendem Beispiel wird im Temp-Pfad eine Initialisierungsdatei angelegt. Zum Ermitteln des Temp-Pfades, das ist das temporäre Verzeichnis des jeweiligen Benutzers, wird die API-Funktion *HW7HPS3DWK benutzt. Anschließend werden in der Initialisierungsdatei zwei Sektionen mit jeweils zwei Schlüsseln und den zugehörigen Werten gespeichert. Zur Demonstration werden alle Sektionen dieser Datei, danach alle Schlüssel einer Sektion ausgelesen und angezeigt. Anschließend wird einer dieser angelegten Schlüssel gelöscht und alle noch vorhandenen Schlüssel dieser Sektion werden ausgelesen und angezeigt. Danach wird eine Sektion gelöscht und alle Sektionen der Datei werden angezeigt. Hier also der Code (Listing 3.3), mit dem Sie die noch anzulegende Klasse benutzen: 3ULYDWH 'HFODUH )XQFWLRQ *HW7HPS3DWK B /LE NHUQHO $OLDV *HW7HPS3DWK$ B %\9DO Q%XIIHU/HQJWK $V /RQJ B %\9DO OS%XIIHU $V 6WULQJ B $V /RQJ Listing _01_Klassen.xls\mdlCreate 3XEOLF 6XE 7HVW(QYLURQ 'LP OQJ5HW $V /RQJ 'LP VWU3DWK $V 6WULQJ 'LP P\,QL $V 1HZ FOV,QL 'LP YDU6HFWLRQ $V 9DULDQW 'LP YDU.H\ $V 9DULDQW 'LP YDU,WHP $V 9DULDQW 'LP VWU0VJ $V 6WULQJ VWU3DWK 6WULQJ OQJ5HW *HW7HPS3DWK/HQVWU3DWK VWU3DWK VWU3DWK /HIWVWU3DWK OQJ5HW 97

9 3 Klassen Listing 3.3 (Forts.) 03_01_Klassen.xls\mdlCreate :LWK P\,QL 3IDG=XU,QL VWU3DWK 7HVWLQL 1HXH 6HNWLRQ 6HNWLRQ 6HNWLRQ 6FKO VVHO 6FKO VVHO :HUW :HUW $QOHJHQ 6FKO VVHO :HUW $QOHJHQbQGHUQ 6FKO VVHO 6FKO VVHO :HUW :HUW $QOHJHQ 6FKO VVHO :HUW $QOHJHQbQGHUQ 1HXH 6HNWLRQ 6HNWLRQ 6HNWLRQ 6FKO VVHO 6FKO VVHO :HUW :HUW $QOHJHQ 6FKO VVHO :HUW $QOHJHQbQGHUQ 6FKO VVHO 6FKO VVHO :HUW :HUW $QOHJHQ 6FKO VVHO :HUW $QOHJHQbQGHUQ $OOH 6HNWLRQHQ DXVOHVHQ YDU6HFWLRQ $OOH6HNWLRQHQ VWU0VJ )RU (DFK YDU,WHP,Q YDU6HFWLRQ VWU0VJ VWU0VJ YDU,WHP YE&U/I 1H[W 0VJ%R[ VWU0VJ $OOH 6HNWLRQHQ $OOH 6FKO VVHO DXVOHVHQ 6HNWLRQ YDU6HFWLRQ YDU.H\ $OOH6FKO VVHO VWU0VJ )RU (DFK YDU,WHP,Q YDU.H\ VWU0VJ VWU0VJ YDU,WHP YE&U/I 1H[W 0VJ%R[ VWU0VJ $OOH 6FKO VVHO LQ 6HNWLRQ :HUW DXV 6HNWLRQ O VFKHQ 6FKO VVHO YDU.H\ 6FKO VVHO/ VFKHQ $OOH 6FKO VVHO DXVOHVHQ YDU.H\ $OOH6FKO VVHO VWU0VJ )RU (DFK YDU,WHP,Q YDU.H\ VWU0VJ VWU0VJ YDU,WHP YE&U/I 1H[W 98

10 Erstellen von Klassen 0VJ%R[ VWU0VJ $OOH 6FKO VVHO LQ 6HNWLRQ 6HNWLRQ YDU6HFWLRQ 6HNWLRQ/ VFKHQ Listing 3.3 (Forts.) 03_01_Klassen.xls\mdlCreate $OOH 6HNWLRQHQ DXVOHVHQ YDU6HFWLRQ $OOH6HNWLRQHQ VWU0VJ )RU (DFK YDU,WHP,Q YDU6HFWLRQ VWU0VJ VWU0VJ YDU,WHP YE&U/I 1H[W 0VJ%R[ VWU0VJ $OOH 6HNWLRQHQ (QG :LWK Die Klasse clsini Bis jetzt haben Sie noch keine Zeile Code der eigentlichen Klasse geschrieben. Steht fest, welche Eigenschaften und Methoden die Klasse offen legen soll, können Sie sich an die Programmierung der Klasse machen. Fügen Sie dazu in Ihr Projekt eine leere Klasse ein und vergeben Sie den Klassennamen FOV,QL. Nachfolgend der Code der Klasse (Listing 3.4) 3ULYDWH 'HFODUH )XQFWLRQ *HW3ULYDWH3URILOH6WULQJ B /LE NHUQHO $OLDV *HW3ULYDWH3URILOH6WULQJ$ B %\9DO OS$SSOLFDWLRQ1DPH $V 6WULQJ B %\9DO OS.H\1DPH $V $Q\ B %\9DO OS'HIDXOW $V 6WULQJ B %\9DO OS5HWXUQHG6WULQJ $V 6WULQJ B %\9DO Q6L]H $V /RQJ B %\9DO OS)LOH1DPH $V 6WULQJ B $V /RQJ )XQNWLRQ XP (LQWUlJH DXV LQL'DWHL ]X OHVHQ Listing _01_Klassen.xls\clsIni 3ULYDWH 'HFODUH )XQFWLRQ :ULWH3ULYDWH3URILOH6WULQJ B /LE NHUQHO $OLDV :ULWH3ULYDWH3URILOH6WULQJ$ B %\9DO $SS1DPH $V 6WULQJ B %\9DO.H\1DPH $V 6WULQJ B %\9DO NH\GHIDXOW $V 6WULQJ B %\9DO )LOH1DPH $V 6WULQJ B $V /RQJ )XQNWLRQ XP (LQWUlJH LQ LQL'DWHL ]X VFKUHLEHQ 3ULYDWH PVWU)LOHSDWK $V 6WULQJ 3ULYDWH PVWU6HFWLRQ $V 6WULQJ 3ULYDWH PVWU.H\ $V 6WULQJ 3ULYDWH PVWU9DOXH $V 6WULQJ 3XEOLF )XQFWLRQ $QOHJHQbQGHUQ $V %RROHDQ,I :ULWH3ULYDWH3URILOH6WULQJ B PVWU6HFWLRQ PVWU.H\ B (QG PVWU9DOXH PVWU)LOHSDWK B! 7KHQ $QOHJHQbQGHUQ 7UXH )XQFWLRQ 99

11 3 Klassen Listing 3.4 (Forts.) 03_01_Klassen.xls\clsIni 3XEOLF )XQFWLRQ 6HNWLRQ/ VFKHQ $V %RROHDQ,I :ULWH3ULYDWH3URILOH6WULQJ B PVWU6HFWLRQ YE1XOO6WULQJ B YE1XOO6WULQJ PVWU)LOHSDWK B! 7KHQ 6HNWLRQ/ VFKHQ 7UXH (QG )XQFWLRQ 3XEOLF )XQFWLRQ 6FKO VVHO/ VFKHQ $V %RROHDQ,I :ULWH3ULYDWH3URILOH6WULQJ B PVWU6HFWLRQ PVWU.H\ B YE1XOO6WULQJ PVWU)LOHSDWK B! 7KHQ 6FKO VVHO/ VFKHQ 7UXH (QG )XQFWLRQ 3XEOLF )XQFWLRQ $OOH6HNWLRQHQ $V 9DULDQW 'LP VWU%XIIHU $V 6WULQJ 'LP OQJ5HW $V /RQJ VWU%XIIHU 6WULQJ OQJ5HW *HW3ULYDWH3URILOH6WULQJ B YE1XOO6WULQJ YE1XOO6WULQJ B 6FKO VVHO IHKOW VWU%XIIHU B PVWU)LOHSDWK $OOH6HNWLRQHQ 6SOLW/HIWVWU%XIIHU OQJ5HW &KU (QG )XQFWLRQ 3XEOLF )XQFWLRQ $OOH6FKO VVHO $V 9DULDQW 'LP VWU%XIIHU $V 6WULQJ 'LP OQJ5HW $V /RQJ VWU%XIIHU 6WULQJ OQJ5HW *HW3ULYDWH3URILOH6WULQJ B PVWU6HFWLRQ YE1XOO6WULQJ B VWU%XIIHU B PVWU)LOHSDWK $OOH6FKO VVHO 6SOLW/HIWVWU%XIIHU OQJ5HW &KU (QG )XQFWLRQ 3XEOLF 3URSHUW\ *HW 3IDG=XU,QL $V 6WULQJ 3IDG=XU,QL PVWU)LOHSDWK 3XEOLF 3URSHUW\ /HW 3IDG=XU,QL%\9DO Y1HZ9DOXH $V 6WULQJ PVWU)LOHSDWK Y1HZ9DOXH 3XEOLF 3URSHUW\ *HW 6HNWLRQ $V 6WULQJ 6HNWLRQ PVWU6HFWLRQ 3XEOLF 3URSHUW\ /HW 6HNWLRQ%\9DO Y1HZ9DOXH $V 6WULQJ PVWU6HFWLRQ Y1HZ9DOXH 100

12 Erstellen von Klassen 3XEOLF 3URSHUW\ *HW 6FKO VVHO $V 6WULQJ 6FKO VVHO PVWU.H\ 3XEOLF 3URSHUW\ /HW 6FKO VVHO%\9DO Y1HZ9DOXH $V 6WULQJ PVWU.H\ Y1HZ9DOXH Listing 3.4 (Forts.) 03_01_Klassen.xls\clsIni 3XEOLF 3URSHUW\ *HW :HUW $V 6WULQJ 'LP VWU%XIIHU $V 6WULQJ 'LP OQJ5HW $V /RQJ VWU%XIIHU 6WULQJ OQJ5HW *HW3ULYDWH3URILOH6WULQJ B PVWU6HFWLRQ PVWU.H\ B 6FKO VVHO IHKOW VWU%XIIHU B PVWU)LOHSDWK PVWU9DOXH /HIWVWU%XIIHU OQJ5HW :HUW PVWU9DOXH 3XEOLF 3URSHUW\ /HW :HUW%\9DO Y1HZ9DOXH $V 6WULQJ PVWU9DOXH Y1HZ9DOXH AnlegenÄndern Die als öffentliche Methode benutzte Funktion $QOHJHQbQGHUQ legt eine.ini-datei an, falls diese noch nicht existiert. Das entsprechende Verzeichnis muss aber bereits existieren. Zuständig dafür ist die API-Funktion :ULWH3ULYDWH3URILOH 6WULQJ. Dieser Funktion wird als Parameter der Dateipfad inklusive Dateiname, Sektion, Schlüsselname und zugehörigem Wert übergeben. Die API-Funktion :ULWH3ULYDWH3URILOH6WULQJ liefert als Ergebnis einen Longwert zurück, der ungleich null ist, wenn die Funktion erfolgreich war. Dieser wird dazu benutzt, den Wert :$+5 als Funktionsergebnis zurückzugeben, wenn alles geklappt hat. SchlüsselLöschen Die als öffentliche Methode benutzte Funktion 6FKO VVHO/ VFKHQ löscht einen existierenden Schlüssel. Zuständig dafür ist wiederum die API-Funktion :ULWH3ULYDWH3URILOH6WULQJ. Die an diese Funktion übergebenen Parameter sind der Dateipfad inklusive Dateiname, Sektion und Schlüsselname. Damit der Schlüssel gelöscht wird, muss als Parameter für den Wert ein YE1XOO6WULQJ übergeben werden. Wenn alles geklappt hat, was Sie am Rückgabewert von :ULWH3ULYDWH3URILOH6WULQJ erkennen können, wird als Funktionsergebnis :$+5 zurückgegeben. 101

13 3 Klassen SektionLöschen Die als öffentliche Methode benutzte Funktion 6HNWLRQ/ VFKHQ löscht eine existierende Sektion in der angegebenen Datei. Zuständig für die eigentliche Arbeit ist, wie nicht schwer zu erraten ist, die API-Funktion :ULWH3ULYDWH3URILOH 6WULQJ. Dieser wird diesmal als Parameter der Dateipfad inklusive dem Dateinamen und die zu löschende Sektion übergeben. Damit die Sektion auch tatsächlich gelöscht wird, muss als Parameter für den Schlüsselnamen und für den Wert ein YE1XOO6WULQJ übergeben werden. Wie bei den anderen Methoden wird als Funktionsergebnis :$+5 zurückgegeben, wenn alles geklappt hat. Wert Die Property *HW :HUW liest den Wert eines Schlüssels aus. Zuständig dafür ist die API-Funktion *HW3ULYDWH3URILOH6WULQJ. Dieser Funktion wird als Parameter der Dateipfad inklusive Dateiname, Sektion und Schlüsselname übergeben. Sie liefert als Ergebnis einen Longwert zurück, der ungleich null ist, wenn die Funktion erfolgreich war. Der eigentliche Wert wird im Parameter OS5HWXUQHG6WULQJ zurückgeliefert. Dazu wird an dieser Stelle ein ausreichend großer Puffer übergeben, der den String aufnimmt. Der Parameter Q6L]H gibt die Länge des Puffers an und OS'HIDXOW ist ein String, der geliefert wird, wenn der Schlüssel nicht existiert. In der /HW-Prozedur bekommt lediglich die interne Variable PVWU9DOXH den übergebenen Wert zugewiesen. Das Schreiben übernimmt die Methode $QOHJHQ bqghuq. AlleSektionen Diese Property ist schreibgeschützt, da nur eine *HW-Prozedur angelegt wurde. Der Code ist fast der gleiche wie in der Property *HW :HUW, lediglich der Parameter für die Sektion muss auf YE1XOO6WULQJ gesetzt werden. In diesem Fall werden alle Sektionen durch ein FKU getrennt im Parameter OS5HWXUQHG 6WULQJ zurückgeliefert. Mit der 6SOLW-Funktion wird daraus ein Array gemacht und an den Aufrufer geliefert. AlleSchlüssel Diese Property ist schreibgeschützt, da nur eine *HW-Prozedur angelegt wurde. Der Code ist fast der gleiche wie in $OOH6HNWLRQHQ, lediglich der Parameter für den Schlüssel muss auf YE1XOO6WULQJ gesetzt werden. In diesem Fall werden alle Schlüssel der Sektion durch ein FKU getrennt im Parameter OS5HWXUQHG 6WULQJ zurückgeliefert. Mit der 6SOLW-Funktion wird daraus ein Array gemacht und an den Aufrufer geliefert. PfadZurIni, Sektion, Schlüssel In diesen Property-Prozeduren werden lediglich die internen Variablen ausgelesen und gesetzt. 102

14 Ereignisprozeduren WithEvents 3.7 Ereignisprozeduren WithEvents Eine weitere wichtige Eigenschaft von Klassen ist, dass sie Ereignisse auslösen und auch Ereignisse von Objekten, die mit :LWK(YHQWV deklariert wurden, empfangen können. In Klassenmodulen von UserForms oder Tabellenblättern stehen Ihnen schon vordefinierte Ereignisprozeduren zur Verfügung. Wenn Sie dort Objekte einfügen, können Sie auch deren Ereignisse benutzen. Wollen Sie aber zum Beispiel Command-Buttons dynamisch in UserForms einfügen, d.h. während der Laufzeit und nicht während der Entwicklungszeit, haben Sie das Problem, dass Ereignisprozeduren nicht als Arrays ausgeführt werden können. Sie benötigen also für jedes Objekt eine eigene Ereignisprozedur. Mit :LWK(YHQWV und einer Klasse können Sie das ohne programmgesteuertes Einfügen von Code realisieren. Das Konzept ist anfangs nicht einfach zu verstehen, wenn Sie es aber ein paarmal durchgespielt hat, ist es gar nicht mehr so schwer Kontrollkästchen und Tabellenblatt An folgendem Beispiel, das Schritt für Schritt aufgebaut wird, kann man sich die Vorgehensweise am besten verdeutlichen. Es sollen programmgesteuert Kontrollkästchen (CheckBox) in ein Tabellenblatt eingefügt werden und die Klick-Ereignisse empfangen und ausgewertet werden: 1. Sie legen fest, von welchem Objekttyp Sie ein Ereignis empfangen wollen. Wir nehmen an, dass es sich dabei um eine &KHFN%R[ von 06)RUPV handeln soll. 2. Fügen Sie zu Ihrem Projekt eine Klasse hinzu, als Name dafür wird hier FOV6KHHW(YHQW vergeben. 3. Im Deklarationsbereich dieser Klasse legen Sie eine öffentliche Objektvariable des gewünschten Objekttyps an, in diesem Fall 06)RUPV&KHFN%R[, und zwar mit dem Schlüsselwort :LWK(YHQWV. Das Schlüsselwort :LWK(YHQWV legt fest, dass dieses Objekt in dieser Klasse ein Ereignis (Event) empfangen kann. 3XEOLF :LWK(YHQWV REM&KHFN%R[ $V 06)RUPV&KHFN%R[ 4. Im Deklarationsbereich der Klasse legen Sie eine weitere Objektvariable an. In diesem von außen übergebenen Objekt soll später eine Prozedur aufgerufen werden. 3ULYDWH PREM2ZQHU $V 2EMHFW 5. Der Objektvariablen PREM2ZQHU muss man von außen ein Objekt zuweisen können, also legen Sie dafür eine Eigenschaftsprozedur (3URSHUW\) an. Da es sich um ein Objekt handelt, müssen Sie 3URSHUW\ 6HW benutzen. 3XEOLF 3URSHUW\ 6HW 2ZQHU%\9DO Y1HZ9DOXH $V 2EMHFW 6HW PREM2ZQHU Y1HZ9DOXH 103

15 3 Klassen 6. Jetzt erstellen Sie in der Klasse die Ereignisprozedur des Objektes. Das Ereignis ist dabei durch einen Unterstrich vom Objekt getrennt. Die angelegte Prozedur wird in diesem Fall durch das Ändern der mit der Objektvariablen REM&KHFN%R[ verbundenen &KHFN%R[ ausgeführt. In dieser Prozedur rufen Sie die Zielprozedur P\&KHFNER[B.OLFN(YHQW des als PREM2ZQHU übergebenen Objekts auf und übergeben dabei noch den Status der Checkbox. 3ULYDWH 6XE REM&KHFN%R[B&KDQJH.OLFNHYHQW GHV %XWWRQV 2Q (UURU 5HVXPH 1H[W (LQH IIHQWOLFKH 3UR]HGXU LQ GHU DOV 2ZQHU EHUJHEHQHQ.ODVVH DXVI KUHQ PREM2ZQHUP\&KHFNER[B.OLFN(YHQW REM&KHFN%R[9DOXH 7. Fügen Sie das Objekt, das ein Ereignis auslösen soll, in ein Tabellenblatt ein. 8. Legen Sie im Klassenmodul des Tabellenblattes eine öffentliche Prozedur an, die bei einem Ereignis aufgerufen werden soll. 3XEOLF 6XE P\&KHFNER[B.OLFN(YHQWVWU9DOXH $V 6WULQJ 9. In einer Prozedur erstellen Sie für jede Checkbox in dem Tabellenblatt eine neue Instanz der Klasse FOV&KHFN%R[. Damit die Instanz nicht nach dem Beenden der Prozedur gelöscht wird, haben Sie vorher eine Collection auf Klassenebene deklariert, der Sie die Instanz als neues Element übergeben. Während der Lebensdauer der Collection, also bis die Codezeile 6HW P\&RO 1HZ &ROOHFWLRQ oder 6HW P\&RO 1RWKLQJ ausgeführt wird, bleibt die hinzugefügte Klasseninstanz am Leben. Die Eigenschaft 2ZQHU der angelegten Klasse bekommt einen Verweis auf das eigene Tabellenblatt. 3XEOLF 6XE 0DNH(YHQWV 'LP [ $V 2/(2EMHFW 6HW PREM(YHQWV 1HZ &ROOHFWLRQ )RU (DFK [,Q $FWLYH6KHHW2/(2EMHFWV,I 7\SH1DPH[2EMHFW &KHFN%R[ 7KHQ 6HW PREM&KHFN 1HZ FOV6KHHW(YHQW 6HW PREM&KHFNREM&KHFN%R[ [2EMHFW 6HW PREM&KHFN2ZQHU 0H PREM(YHQWV$GG PREM&KHFN (QG,I 1H[W Und hier noch einmal der zusammenhängende Code. In eine Klasse mit Namen FOV6KHHW(YHQW (Listing 3.5): 104

16 Ereignisprozeduren WithEvents (YHQWV YRQ GLHVHP 2EMHNW N QQHQ KLHU DXVJHI KUW ZHUGHQ 3XEOLF :LWK(YHQWV REM&KHFN%R[ $V 06)RUPV&KHFN%R[ 2EMHNWYDULDEOH ]XU $XIQDKPH HLQHU 5HIHUHQ] 3ULYDWH PREM2ZQHU $V 2EMHFW Listing _02_Events.xls\clsSheetEvent 3ULYDWH 6XE REM&KHFN%R[B&KDQJH &KDQJHHYHQW GHU &KHFNER[ 2Q (UURU 5HVXPH 1H[W (LQH IIHQWOLFKH 3UR]HGXU LQ GHU DOV 2ZQHU EHUJHEHQHQ.ODVVH DXVI KUHQ PREM2ZQHUP\&KHFNER[B.OLFN(YHQW REM&KHFN%R[9DOXH 3XEOLF 3URSHUW\ 6HW 2ZQHU%\9DO Y1HZ9DOXH $V 2EMHFW %HVLW]HU EHUJLEW HLQH 5HIHUHQ] DXI GDV 2EMHNW GDPLW GRUW HLQH 3UR]HGXU DXIJHUXIHQ ZHUGHQ NDQQ 6HW PREM2ZQHU Y1HZ9DOXH In das Klassenmodul eines Tabellenblattes (Listing 3.6): &ROOHFWLRQ GDPLW GLH 2EMHNWH DP /HEHQ EOHLEHQ 3ULYDWH PREM(YHQWV $V &ROOHFWLRQ 3ULYDWH PREM&KHFN $V FOV6KHHW(YHQW Listing _02_Events.xls\Tabelle1 3XEOLF 6XE P\&KHFNER[B.OLFN(YHQWVWU9DOXH $V 6WULQJ 'LHVH IIHQWOLFKH 3UR]HGXU ZLUG YRQ MHGHU JHODGHQHQ.ODVVH FOV7HVW(YHQWV QDFK HLQHP.OLFN DXIJHUXIHQ 0HOGXQJ DXVJHEHQ 0VJ%R[ VWU9DOXH 3XEOLF 6XE 0DNH(YHQWV 'LP [ $V 2/(2EMHFW 6HW PREM(YHQWV 1HZ &ROOHFWLRQ )RU (DFK [,Q $FWLYH6KHHW2/(2EMHFWV,I 7\SH1DPH[2EMHFW &KHFN%R[ 7KHQ 6HW PREM&KHFN 1HZ FOV6KHHW(YHQW 6HW PREM&KHFNREM&KHFN%R[ [2EMHFW 6HW PREM&KHFN2ZQHU 0H PREM(YHQWV$GG PREM&KHFN (QG,I 1H[W 105

17 3 Klassen CommandButton und UserForms Nachfolgend ein Beispiel zum dynamischen Einfügen von Buttons und Empfangen des Klickereignisses in einer Klasse. In der Klasse wiederum kann ein Ereignis ausgelöst werden, das dann in der Besitzerklasse ausgeführt wird. Erst einmal der Code der Klasse FOV7HVW(YHQWV (Listing 3.7): Listing _02_Events.xls\clsTestEvents (YHQWV YRQ GLHVHP 2EMHNW N QQHQ KLHU DXVJHI KUW ZHUGHQ 3XEOLF :LWK(YHQWV REM&RPPDQG%XWWRQ $V 06)RUPV&RPPDQG%XWWRQ 'LHVHV (YHQW NDQQ LQ DQGHUHQ.ODVVHQ DXVJHO VW ZHUGHQ 3XEOLF (YHQW.OLFN(YHQWVWU1DPH $V 6WULQJ 2EMHNWYDULDEOH ]XU $XIQDKPH HLQHU 5HIHUHQ] 3ULYDWH PREM2ZQHU $V 2EMHFW 3ULYDWH 6XE REM&RPPDQG%XWWRQB&OLFN.OLFNHYHQW GHV %XWWRQV 2Q (UURU 5HVXPH 1H[W (LQH IIHQWOLFKH 3UR]HGXU LQ GHU DOV 2ZQHU EHUJHEHQHQ 8VHU)RUP DXVI KUHQ PREM2ZQHUP\%XWWRQB.OLFN(YHQW REM&RPPDQG%XWWRQ1DPH (YHQW LQ GHU %HVLW]HUNODVVH DXVO VHQ XQG 1DPH EHUJHEHQ 5DLVH(YHQW.OLFN(YHQWREM&RPPDQG%XWWRQ1DPH (QG 6XE 3XEOLF 3URSHUW\ 6HW 2ZQHU%\9DO Y1HZ9DOXH $V 2EMHFW %HVLW]HU EHUJLEW HLQH 5HIHUHQ] DXI GLH 8VHU)RUP GDPLW GRUW HLQH 3UR]HGXU DXIJHUXIHQ ZHUGHQ NDQQ 6HW PREM2ZQHU Y1HZ9DOXH Hier der Code, der in das Klassenmodul einer UserForm gehört (Listing 3.8). In diese UserForm gehört noch ein Button mit dem Namen FPG&UHDWH1HZ. Listing _02_Events.xls\frmEventAll $Q]DKO GHU 8VHU)RUPV 3ULYDWH OQJ&RQWURO&RXQW $V < 3RVLWLRQ GHU 8VHU)RUP 3ULYDWH OQJ<3RV $V /RQJ /RQJ 'HU JHPHLQVDPH 1DPHQVWHLO GHU %XWWRQV 3ULYDWH &RQVW %XWWRQ1DPH FPG8VHU'HILQHG &ROOHFWLRQ GDPLW GLH 2EMHNWH DP /HEHQ EOHLEHQ 3XEOLF REM(YHQWV $V 1HZ &ROOHFWLRQ 2EMHNWYDULDEOH DQOHJHQ XQG IHVWOHJHQ GDVV (UHLJQLVVH HPSIDQJHQ ZHUGHQ N QQHQ 3ULYDWH :LWK(YHQWV REM%XWWRQ $V FOV7HVW(YHQWV 106

18 Ereignisprozeduren WithEvents 3ULYDWH 6XE $GG&RPPDQG $Q]DKO GHU %XWWRQV VSHLFKHUQ OQJ&RQWURO&RXQW OQJ&RQWURO&RXQW Listing 3.8 (Forts.) 03_02_Events.xls\frmEventAll 0HKU DOV YLHU %XWWRQV ZROOHQ ZLU QLFKW,I OQJ&RQWURO&RXQW! 7KHQ ([LW 6XE 1HXHV.ODVVHQREMHNW DQOHJHQ 6HW REM%XWWRQ 1HZ FOV7HVW(YHQWV 5HIHUHQ] DXI GLH 8VHU)RUP EHUJHEHQ 6HW REM%XWWRQ2ZQHU 0H %XWWRQ DQOHJHQ 6HW REM%XWWRQREM&RPPDQG%XWWRQ B 0H&RQWUROV$GG B )RUPV&RPPDQG%XWWRQ B %XWWRQ1DPH )RUPDWOQJ&RQWURO&RXQW 3RVLWLRQ XQG 1DPH IHVWOHJHQ :LWK REM%XWWRQREM&RPPDQG%XWWRQ 7RS OQJ<3RV &DSWLRQ 7HVWEXWWRQ OQJ&RQWURO&RXQW (QG :LWK OQJ<3RV OQJ<3RV.ODVVHQREMHNWH LP6SHLFKHU KDOWHQ REM(YHQWV$GG REM%XWWRQ 3XEOLF 6XE REM%XWWRQB.OLFN(YHQWVWU2EMHNWQDPH $V 6WULQJ 1XU GDV OHW]WH.ODVVHQREMHNW IHXHUW GLHVHV (YHQW GHQQ REM%XWWRQ KlOW QXU HLQH 5HIHUHQ] DXI GHQ OHW]WHQ %XWWRQ 0DQ EUlXFKWH I U MHGHV 2EMHNW VROFK HLQH (UHLJQLVSUR]HGXU DOVR DXFK PHKUHUH 2EMHNWYDULDEOHQ $UUD\V VLQG QLFKW HUODXEW 0VJ%R[ VWU2EMHNWQDPH (UHLJQLVSUR]HGXU 3XEOLF 6XE P\%XWWRQB.OLFN(YHQWVWU2EMHNWQDPH $V 6WULQJ 'LHVH IIHQWOLFKH 3UR]HGXU ZLUG YRQ MHGHU JHODGHQHQ.ODVVH FOV7HVW(YHQWV QDFK HLQHP.OLFN DXIJHUXIHQ 'LP OQJ,QGH[ $V /RQJ 6WHXHUHOHPHQWLQGH[ H[WUDKLHUHQ OQJ,QGH[ &/QJ5LJKWVWU2EMHNWQDPH 0HOGXQJ DXVJHEHQ 0VJ%R[ VWU2EMHNWQDPH giihqwolfkh 3UR]HGXU 1XPPHU OQJ,QGH[ B 3ULYDWH 6XE FPG&UHDWH1HZB&OLFN $GG&RPPDQG 107

19 3 Klassen Abbildung 3.3 Verschiedene Ansichten der UserForm Die Funktionalität der UserForm Bei einem Klick auf den Button FPG&UHDWH1HZ wird die Prozedur $GG&RPPDQG aufgerufen. Wenn bereits mehr als vier Buttons angelegt wurden, wird diese aber sofort wieder verlassen. Die auf Klassenebene angelegte Objektvariable REM%XWWRQ nimmt anschließend mit 6HW und 1HZ eine neue Instanz der Klasse FOV7HVW(YHQWV auf. Da diese mit dem Schlüsselwort :LWK(YHQWV deklariert wurde, können Ereignisse des damit verbundenen Objektes empfangen werden. Anschließend können Sie eine Objektreferenz der UserForm an die soeben instanzierte Klasse übergeben. Damit wird erreicht, dass die Klasse eine öffentliche Prozedur der UserForm aufrufen kann. Zum Einfügen eines Buttons wird die $GG-Methode der Controls-Auflistung in der UserForm benutzt. Gleichzeitig bekommt die Klasse über die als öffentlich deklarierte Variable REM&RPPDQG%XWWRQ eine Objektreferenz auf den soeben hinzugefügten Button. In der Klasse FOV7HVW(YHQWV ist diese Variable mit :LWK(YHQWV deklariert worden, also kann dort das Objekt Ereignisse auslösen. Anschließend wird die Position des Buttons festgelegt werden, ich erhöhe aber jeweils nur die Y-Position. Würde man an dieser Stelle die Prozedur einfach beenden, hätte man beim nächsten Einfügen eines Buttons ein Problem: Wenn Sie mit 6HW und 1HZ eine neue Instanz der Klasse FOV7HVW(YHQWV anlegen und sie der Objektvariablen REM%XWWRQ zuweisen, wird die ältere, mit der Objektvariablen verbundene Klasseninstanz aus dem Speicher gelöscht. 108

20 Ereignisprozeduren WithEvents Also benutzen Sie eine klassenweit gültige Collection und fügen die Objektvariable als Element hinzu. Dadurch wird erreicht, dass noch zusätzlich eine Referenz auf das Klassenobjekt angelegt wird, die so lange bestehen bleibt, bis sie aus der Collection entfernt wird oder die Objektvariable der Collection auf 1RWKLQJ gesetzt wird. Wird die Objektvariable REM%XWWRQ für eine neue Klasseninstanz benutzt, bleibt wegen der noch bestehenden Referenz auch die ältere Instanz noch im Speicher. Die Prozedur REM%XWWRQB.OLFN(YHQW ist eine Ereignisprozedur, die von dem mit der Objektvariablen REM%XWWRQ verbundenen Objekt ausgelöst wird. Deshalb wurde auch bei der Deklaration das Schlüsselwort :LWK(YHQWV benutzt. Die Prozedur P\%XWWRQB.OLFN(YHQW ist eine öffentliche Prozedur. Diese wird bei einem Klick auf einen Button von der damit verbundenen Klasse aufgerufen. clstestevents Die Objektvariable REM&RPPDQG%XWWRQ vom Typ 06)RUPV&RPPDQG%XWWRQ ist mit dem Schlüsselwort :LWK(YHQWV deklariert worden. Im Deklarationsteil dieser Klasse wird noch das Event.OLFN(YHQW angelegt, das man innerhalb der Klasse feuern kann. Feuern bedeutet, dass Sie in der Klasse, die eine Instanz auf diese Klasse hält, eine Ereignisprozedur auslösen können. Dazu muss die Objektvariable, die eine Instanz auf die feuernde Klasse hält, also in der UserForm die Variable REM%XWWRQ mit dem Schlüsselwort :LWK(YHQWV, deklariert sein. Wenn Sie in der UserForm als Prozedurnamen den Objektnamen benutzen, einen Unterstrich und den Ereignisnamen dranhängen, kann die feuernde Klasse diese Prozedur aufrufen und ihr sogar Parameter übergeben. Ausgelöst wird das durch die Anweisung 5DLVH(YHQW.OLFN(YHQWREM&RPPDQG%XWWRQ1DPH. Umgekehrt kann das mit der Objektvariablen REM&RPPDQG%XWWRQ verbundene Objekt in diesem Beispiel ein eingefügter Button eine Ereignisprozedur in der verbundenen Klasse aufrufen. Dazu wird wieder der Objektname mit dem Ereignisnamen durch einen Unterstrich verbunden und als Prozedurname benutzt (REM&RPPDQG%XWWRQB&OLFN). In der Property-Prozedur 3URSHUW\ 6HW 2ZQHU wird eine Referenz auf die User- Form an die Klasse übergeben und in der Variablen PREM2ZQHU gespeichert. Damit ist es möglich, eine öffentliche Prozedur des aufrufenden Objektes ausführen zu lassen. Die Zeile PREM2ZQHUP\%XWWRQB.OLFN(YHQW ruft dann die entsprechende Prozedur in der UserForm auf. Durch diesen kleinen Kniff können Sie in der UserForm eine einzige Prozedur für alle Klickereignisse realisieren. Damit unterschieden werden kann, welcher Button gerade angeklickt wurde, übergeben Sie zusätzlich den Namen des Buttons. 109

Klassen. 3.1 Was Sie in diesem Kapitel erwartet. 3.2 Allgemeines

Klassen. 3.1 Was Sie in diesem Kapitel erwartet. 3.2 Allgemeines 3 Klassen 3.1 Was Sie in diesem Kapitel erwartet In diesem Kapitel erfahren Sie, was Klassen sind und warum man diese überhaupt einsetzen sollte. Es soll gleichzeitig etwas Werbung für das Konzept der

Mehr

1. Ist Collection ein spezifischer oder ein allgemeiner Objekttyp? Begründen Sie Ihre Antwort.

1. Ist Collection ein spezifischer oder ein allgemeiner Objekttyp? Begründen Sie Ihre Antwort. Aufgabe 2.1 (8TELEFONVERZEICHNIS) Lernziele Õ Objektvariablen Õ Collection-Objekt Õ Objekte erstellen Õ Klassenmodul und benutzerdefinierte Objekte Wiederholungsfragen 1. Ist Collection ein spezifischer

Mehr

ACCESS. Formulare per VBA referenzieren FORMULARE MIT VBA PROGRAMMIEREN FORMULARE PER VBA REFERENZIEREN BASICS

ACCESS. Formulare per VBA referenzieren FORMULARE MIT VBA PROGRAMMIEREN FORMULARE PER VBA REFERENZIEREN BASICS Formulare per VBA referenzieren Wenn Sie Formulare und Steuerelemente programmieren wollen, müssen Sie wissen, wie Sie diese referenzieren. Nicht immer geschieht dies vom Klassenmodul des Formulars selbst

Mehr

Michael Kolberg. einfach klipp & klar. Microsofft* Press

Michael Kolberg. einfach klipp & klar. Microsofft* Press Michael Kolberg einfach klipp & klar Microsofft* Press III Vorwort 11 Die CD-ROM zum Buch 21 Die AutoPlay-Funktion der CD-ROM 22 Installation der Testfragen und des Ebooks 23 Installation des Computer-Lexikons

Mehr

Skriptum Bauinformatik SS 2013 (Vorlesung IV)

Skriptum Bauinformatik SS 2013 (Vorlesung IV) Skriptum Bauinformatik SS 2013 (Vorlesung IV) Stand: 23.04.2013 Dr. Johannes Lange 2 Inhalt Objektorientierte Programmierung Großes Beispiel... 2 Klasse erstellen... 2 Erzeugen eines Objekts der Klasse...

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

Mehr

ACCESS. Access-Daten nach Excel verknüpfen INTERAKTIV ACCESS-DATEN NACH EXCEL VERKNÜPFEN BASICS

ACCESS. Access-Daten nach Excel verknüpfen INTERAKTIV ACCESS-DATEN NACH EXCEL VERKNÜPFEN BASICS -DATEN NACH EXCEL VERKNÜPFEN Access-Daten nach Excel verknüpfen Wir haben uns bereits in verschiedenen Artikeln angesehen, wie Sie von Access aus auf die Daten einer Excel-Datei zugreifen können ob per

Mehr

Unterprogramme. AnPr. Wiederholungen im Code werden vermieden. Programme werden leichter lesbar. Die Entwicklung und der Test werden vereinfacht.

Unterprogramme. AnPr. Wiederholungen im Code werden vermieden. Programme werden leichter lesbar. Die Entwicklung und der Test werden vereinfacht. Name Klasse Datum 1 Allgemeines Programme werden üblicherweise nicht als ein einziger, fortlaufender Programmcode verfasst, sondern mit geeigneten Mitteln unterteilt und somit strukturiert. Die Methodik

Mehr

Inhaltsverzeichnis. Vorwort 11

Inhaltsverzeichnis. Vorwort 11 Vorwort 11 Kapitell Grundlagen 15 1.1 Was Sie in diesem Kapitel erwartet 15.,2 Kommentare 15 1.3 Geschwindigkeit von VBA 16 1.4 Variablen 17 1.4.1 Variablennamen 17 1.4.2 Namenskonventionen 20 1.4.3 Datentypen

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Es können ganze Programmteile aufgenommen werden. Mithilfe von Funktionen kann man denselben

Mehr

Makro + VBA 2007 effektiv

Makro + VBA 2007 effektiv Daten Makro + VBA 2007 effektiv 5 DATEN 5.1 Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten, siehe Seite 84, jederzeit im Programm verändert werden. Als Variablen können

Mehr

Vorwort...10 Einleitung...12 Lernen Üben Anwenden...12 Inhalt und Aufbau des Buches...13 Inhalt...13 Aufbau Access 2007 (fast) alles ist

Vorwort...10 Einleitung...12 Lernen Üben Anwenden...12 Inhalt und Aufbau des Buches...13 Inhalt...13 Aufbau Access 2007 (fast) alles ist Vorwort...10 Einleitung...12 Lernen Üben Anwenden...12 Inhalt und Aufbau des Buches...13 Inhalt...13 Aufbau...14 1 Access 2007 (fast) alles ist neu...16 Sinnvolle Optionseinstellungen...17 Standarddatenbankordner

Mehr

Funktionen in JavaScript

Funktionen in JavaScript Funktionen in JavaScript Eine Funktion enthält gebündelten Code, der sich in dieser Form wiederverwenden lässt. Mithilfe von Funktionen kann man denselben Code von mehreren Stellen des Programms aus aufrufen.

Mehr

6. Zeiger Allgemeines Definition eines Zeigers

6. Zeiger Allgemeines Definition eines Zeigers 6. Zeiger www.c-programme.de Stefan Thiemert Kapitel 6 - Seite 1 von 6 6. 1. Allgemeines Zeiger spielen in der Programmierung eine wichtige Rolle. Sie sind wichtig, bei der Arbeit mit Arrays und Funktionen.

Mehr

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue

C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections. Leibniz Universität IT Services Anja Aue C# - Einführung in die Programmiersprache Arrays, Enumeration und Collections Leibniz Universität IT Services Anja Aue Arrays... speichern mehrere Werte vom gleichen Datentyp. fassen zusammenhängende Werte

Mehr

IMS-Audit Pro. Kurzanleitung 2 / 14

IMS-Audit Pro. Kurzanleitung 2 / 14 Schneller Einstieg Version 11.2018 2 / 14 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einleitung... 4 1.1 Installation... 4 1.2 Bildschirm Übersichten... 4 2 Stammdaten eintragen... 5 2.1 Mandanten anlegen...

Mehr

Rückgabewerte von Methoden

Rückgabewerte von Methoden OOP Rückgabewerte von Methoden Henrik Horstmann 14. September 2014 Inhaltsverzeichnis Inhaltsverzeichnis 1 Bedeutung der Symbole...1 2 Rückgabewerte von Methoden...2 3 Der freundliche Computer...2 3.1

Mehr

Inhaltsverzeichnis. Teil I Erste Schritte. 1 Einleitung 11. Teil II Grundlagen von VBA. 2 Die ersten VBA-Prozeduren erstellen 17

Inhaltsverzeichnis. Teil I Erste Schritte. 1 Einleitung 11. Teil II Grundlagen von VBA. 2 Die ersten VBA-Prozeduren erstellen 17 Teil I Erste Schritte 1 Einleitung 11 1.1 Die Themenschwerpunkte dieses Buches 11 Visual Basic for Applications 11 Die Beispieldateien 12 1.2 Wie Sie am besten mit diesem Buch arbeiten 13 Programmierung

Mehr

1. Kapitel Konfiguration der Felder der Kursbeschreibung

1. Kapitel Konfiguration der Felder der Kursbeschreibung Handbuch 1. Kapitel Konfiguration der Felder der Kursbeschreibung Mit der Datei config.xml im Verzeichnis swp/xml/_i18n/ kann die Struktur der Kursbeschreibung einfach an eigene Wünsche angepasst werden.

Mehr

(Ausnahmebehandlung)

(Ausnahmebehandlung) 16. Exceptions (Ausnahmebehandlung) 16-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 16: Exceptions (Ausnahmebehandlung) Motivation Throw und Catch 16. Exceptions (Ausnahmebehandlung) 16-2

Mehr

Fragen zur OOP in Java

Fragen zur OOP in Java - 1 - Inhalt Was bedeutet OOP?... 2 Was versteht man unter einer Klasse?... 2 Wie nennt man die Mitglieder einer Klasse?... 2 Wie erzeugt man Objekte?... 2 Wie greife ich auf Member einer Klasse zu?...

Mehr

Visual Basic Editor CATIA V5

Visual Basic Editor CATIA V5 Visual Basic Editor CATIA V5 Daniel Frauenrath Allgemein Der Visual Basic Editor ist fester Bestandteil von CATIA V5. Im Gegensatz zum internen Editor für CATScript und CATVbs hat der Visual Basic Editor

Mehr

ÜBUNGS-BLOCK 7 LÖSUNGEN

ÜBUNGS-BLOCK 7 LÖSUNGEN ÜBUNGS-BLOCK 7 LÖSUNGEN Aufgabe 1: Gegeben ist folgender Code: Auto[] array = new Auto[3]; // Alle Autos im Array tunen: for (int i = 1; i

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 12 im Bauwesen Markus Uhlmann 1 Zusammenfassung der 11. Vorlesung Objektorientierte Programmierung (OOP) Wozu eigentlich? Was unterscheidet OOP von traditionellen Techniken? Verwendung von vordefinierten

Mehr

13 Unterprogramme erstellen

13 Unterprogramme erstellen 13 Unterprogramme erstellen»non prendere il lavoro come un nemico, e non farne nemmeno l'unica ragione della tua vita. Betrachte die Arbeit nicht als Feind und mache sie auch nicht zum einzigen Grund deines

Mehr

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! 5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! Feld: Index: 17 3-2 9 0 1 0 1 2 3 4 5 Harald Räcke 114/656

Mehr

Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf:

Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf: JavaScript - Inhalt 1. Objekte 2. Arrays 3. Callbacks 1)JavaScript Objekte Objekte haben eine eigene Notation, also Schreibweise, beim Aufruf: Eine Methode wird immer mit dem Namen des Objekts, einem Punkt

Mehr

GERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT

GERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT User Requirements GERICHTETER GEWICHTETER GRAPH DESIGNDOKUMENT Softwareentwicklung Praktikum, Übungsbeispiel 1 Gruppe 18 Andreas Hechenblaickner [0430217] Daniela Kejzar [0310129] Andreas Maller [0431289]

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

1 Datenübernahme ohne VBA Grundlagen der VBA Programmierung Inhalt

1 Datenübernahme ohne VBA Grundlagen der VBA Programmierung Inhalt Inhalt 1 Datenübernahme ohne VBA... 11 1.1 Fernbezüge zu Excel-Arbeitsmappen...13 Fernbezüge erstellen... 13 Verknüpfungen aktualisieren...16 Beispiel Daten aus mehreren Arbeitsmappen zusammenfassen...

Mehr

Ein erstes "Hello world!" Programm

Ein erstes Hello world! Programm OOP Henrik Horstmann 14. September 2014 Inhaltsverzeichnis Inhaltsverzeichnis 1 Bedeutung der Symbole...1 2 Die Benutzer Oberfläche von HOOPLU...2 2.1 Projekte öffnen und speichern...2 2.2 Die Klasse Program

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Richtig einsteigen: Access 2007 VBA-Programmierung

Richtig einsteigen: Access 2007 VBA-Programmierung Lorenz Hölscher Richtig einsteigen: Access 2007 VBA-Programmierung Miaosott Teill Erste Schritte 1 Einleitung 9 1.1 Die Themenschwerpunkte dieses Buches 9 Visual Basic for Applications 9 Die Beispiel-Datenbank

Mehr

Microsoft Access 2010 Bilder

Microsoft Access 2010 Bilder Microsoft Access 2010 Bilder Hyperlinks... arbeiten ähnlich wie ein Link in einer Webseite. sind ein Verweis auf eine Datei (access2010\material\beispiel\tabledevelop\automat.accdb). können ein Verweis

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Kurs-Dokumentation. Zentrum für Informatik ZFI AG. Refresher Microsoft Access Programmierung (PA1P-0418) -IT Ausbildung nach Mass

Kurs-Dokumentation. Zentrum für Informatik ZFI AG. Refresher Microsoft Access Programmierung (PA1P-0418) -IT Ausbildung nach Mass Zentrum für Informatik - Refresher Microsoft Access Programmierung (... 1/5 Kurs-Dokumentation Zentrum für Informatik ZFI AG Refresher Microsoft Access Programmierung (PA1P-0418) -IT Ausbildung nach Mass

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Christian-Albrechts-Universität zu Kiel CAU 8-1 Objektorientiertes Programmieren Die Programme, die bisher in diesem Kurs verwendet wurden, sind alle klein und überschaubar

Mehr

MMC/SD FAT 16 mit AVR und C

MMC/SD FAT 16 mit AVR und C MMC/SD FAT 16 mit AVR und C Die Bibliothek von Roland Riegel enthält einen kompletten FAT16 Zugriff auf MMC/SD Karten über den SPI eines µc. Anforderungen: - SPI oder 5 freie PINs am Controller - Für den

Mehr

Seiten und Navigationspunkte

Seiten und Navigationspunkte Seiten und Navigationspunkte Legen Sie neue Seiten und Navigationspunkte an. Um Sie mit dem Anlegen von Seiten und Navigationspunkten vertraut zu machen, legen wir zunächst einen neuen Navigationspunkt

Mehr

Beck EDV-Berater VBA. Visual Basic for Applications Programmieren unter Office XP. 2., neu bearbeitete Auflage

Beck EDV-Berater VBA. Visual Basic for Applications Programmieren unter Office XP. 2., neu bearbeitete Auflage Beck EDV-Berater VBA Visual Basic for Applications Programmieren unter Office XP 2., neu bearbeitete Auflage von Jens Baumeiser und Thorsten Petrowski Deutscher Taschenbuch Verlag Inhaltsverzeichnis Einführung

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

Mehr

Programmieren I. Kapitel 12. Referenzen

Programmieren I. Kapitel 12. Referenzen Programmieren I Kapitel 12. Referenzen Kapitel 12: Referenzen Ziel: Die Wahrheit über Objekte Lebensdauer Speicherverwaltung Parameterübergabemechanismen in Methoden Gleichheiten, Kopien Arrays Speicherbereinigung

Mehr

Aufgaben zu OOP der Klasse FTI32

Aufgaben zu OOP der Klasse FTI32 Hinweis: Verstehen Sie folgende Aufgaben als mögliche Bestandteile für die anstehende Klausur. Betrachten Sie die Lösungen nicht von vorne herein als richtig, sondern beantworten Sie nochmals die Fragen

Mehr

C++ - Objektorientierte Programmierung Polymorphie

C++ - Objektorientierte Programmierung Polymorphie C++ - Objektorientierte Programmierung Polymorphie hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen C++ - Objektorientierte Programmierung 21.06.16 Seite 1 Polymorphie

Mehr

Begriffe 1 (Wiederholung)

Begriffe 1 (Wiederholung) Begriffe 1 (Wiederholung) Klasse Eine Klasse ist der Bauplan für ein oder mehrere Objekte. In einer Klasse werden Dienste (Methoden) zur Verfügung gestellt. Klassennamen beginnen mit einem Großbuchstaben.

Mehr

Inhaltsverzeichnis. Teil I Erste Schritte. 1 Einleitung Teil II Grundlagen von VBA. 2 Die ersten VBA-Prozeduren erstellen...

Inhaltsverzeichnis. Teil I Erste Schritte. 1 Einleitung Teil II Grundlagen von VBA. 2 Die ersten VBA-Prozeduren erstellen... Datei: 00b.doc, Seite3 1. Oktober 2010 Inhaltsverzeichnis Teil I Erste Schritte 1 Einleitung.... 9 1.1 Die Themenschwerpunkte dieses Buches... 9 Visual Basic for Applications... 9 Die Beispieldatenbank...

Mehr

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und 17.6.2008 Organisatorisches Um auf die Mailingliste aufgenommen zu werden schicke einfach eine

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Übung zur Vorlesung EidP (WS 2018/19) Blatt 4

Übung zur Vorlesung EidP (WS 2018/19) Blatt 4 Lutz Oettershagen Jurij Kuzmic Dortmund, den 8. November 2018 Übung zur Vorlesung EidP (WS 2018/19) Blatt 4 Block gelb Es können 4 Punkte erreicht werden. Abgabedatum: 15. November 2018, 2:59 Uhr Hinweise

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

%YXSV4IXIV8IMGL -RLEPXPMGLIW0IOXSVEX&IEXI1ENIXWGLEO -RXIKVMIVXI0ÔWYRKIRQMX3JJMGI<4 F],)6(8:IVPEKJÚV&MPHYRKWQIHMIR+QF,

%YXSV4IXIV8IMGL -RLEPXPMGLIW0IOXSVEX&IEXI1ENIXWGLEO -RXIKVMIVXI0ÔWYRKIRQMX3JJMGI<4 F],)6(8:IVPEKJÚV&MPHYRKWQIHMIR+QF, :&% %YXSV4IXIV8IMGL -RLEPXPMGLIW0IOXSVEX&IEXI1ENIXWGLEO %YJPEKIZSQ(I^IQFIV F],)6(8:IVPEKJÚV&MPHYRKWQIHMIR+QF, &SHIRLIMQ -RXIVRIX[[[LIVHX]SYHIEXGL [[[LIVHXFYWMRIWWHIEXGL [[[LIVHXZLWHIEX %PPI 6IGLXI ZSVFILEPXIR

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017

Java Methoden. Informatik 1 für Nebenfachstudierende Grundmodul. Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 1 für Nebenfachstudierende Grundmodul Java Methoden Kai-Steffen Hielscher Folienversion: 1. Februar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht Kapitel 3 - Java

Mehr

micon VFC 2 x 20 PC-Software für mitex VFC 2 x 20

micon VFC 2 x 20 PC-Software für mitex VFC 2 x 20 Benutzerhandbuch 1 Allgemeines Die PC-Software micon VFC 2x20 dient zum übertragen bzw. empfangen von Texten des Displays mitex VFC 2x20. Die Software ist unter folgenden Betriebssystemen lauffähig: Windows

Mehr

Eine Kommando-Oberfläche für.net

Eine Kommando-Oberfläche für.net Institut für Systemsoftware O.Univ.-Prof. Dr. Hanspeter Mössenböck Eine Kommando-Oberfläche für.net In.NET (wie auch in vielen anderen Systemen) haben Programme nur einen einzigen Eintrittspunkt (ihre

Mehr

OLConnector Programmierung

OLConnector Programmierung Das Vorgehen, um Outlook zu automatisieren, unterscheidet sich mit dem nur geringfügig vom üblicherweise dafür eingesetzten. Um irgendwelche Aktionen ausführen zu können, benötigt man die laufende Instanz

Mehr

Access 2010. für Windows. Ricardo Hernández García 1. Ausgabe, 1. Aktualisierung, Dezember 2011. Automatisierung, Programmierung ACC2010P

Access 2010. für Windows. Ricardo Hernández García 1. Ausgabe, 1. Aktualisierung, Dezember 2011. Automatisierung, Programmierung ACC2010P Ricardo Hernández García 1. Ausgabe, 1. Aktualisierung, Dezember 2011 Access 2010 für Windows Automatisierung, Programmierung ACC2010P 4 Access 2010 für Windows - Automatisierung, Programmierung 4 Mit

Mehr

Access Programmierung. Ricardo Hernández García. 1. Ausgabe, November 2013 ACC2013P

Access Programmierung. Ricardo Hernández García. 1. Ausgabe, November 2013 ACC2013P Access 2013 Ricardo Hernández García 1. Ausgabe, November 2013 Programmierung ACC2013P Die VBA-Entwicklungsumgebung 5 Weitere Eingabehilfen Im Menü Bearbeiten finden Sie noch weitere Hilfen, die Ihnen

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

Prinzipien der objektorientierten Programmierung (OOP)

Prinzipien der objektorientierten Programmierung (OOP) Die Ziele der OOP sind: - bessere Warbarkeit - Wiederverwendbarkeit 1.) Datenkapselung Prinzipien der objektorientierten Programmierung (OOP) Komplexe Datenstrukturen (wie zb ein Stack) werden vom Anwendungsprogramm

Mehr

Objektorientierte Programmierung II

Objektorientierte Programmierung II Objektorientierte Programmierung II OOP I Erlaubt Entwicklers, im Problemraum zu denken und zu arbeiten. Das Problem wird in eine Menge von Objekten zerlegt. Objekte wirken aufeinander, um das Problem

Mehr

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

Erstellen von speziellen Ereignissen in C#

Erstellen von speziellen Ereignissen in C# Erstellen von speziellen Ereignissen in C# Anhand eines Projekts, das demonstriert, wie spezielle Ereignisse ausgelöst werden und wie sie sich auf den verwendeten Code auswirken, zeigen wir Ihnen, wie

Mehr

%YXSV.ÚVKIR)RKIQERR -RLEPXPMGLIW0IOXSVEX)PQEV*YGLW F],)6(8:IVPEKJÚV&MPHYRKWQIHMIR+QF, 7]WXIQEHQMRMWXVEXMSR

%YXSV.ÚVKIR)RKIQERR -RLEPXPMGLIW0IOXSVEX)PQEV*YGLW F],)6(8:IVPEKJÚV&MPHYRKWQIHMIR+QF, 7]WXIQEHQMRMWXVEXMSR 27% %YXSV.ÚVKIR)RKIQERR -RLEPXPMGLIW0IOXSVEX)PQEV*YGLW %YJPEKIZSQ2SZIQFIV F],)6(8:IVPEKJÚV&MPHYRKWQIHMIR+QF, &SHIRLIMQ -RXIVRIX[[[LIVHX]SYHIEXGL [[[LIVHXFYWMRIWWHIEXGL [[[LIVHXZLWHIEX %PPI 6IGLXI ZSVFILEPXIR

Mehr

Richtig einsteigen: Access 2010 VBA-Programmierung

Richtig einsteigen: Access 2010 VBA-Programmierung Richtig einsteigen: Access 2010 VBA-Programmierung Von den Grundlagen bis zur professionellen Entwicklung von Lorenz Hölscher 1. Auflage Richtig einsteigen: Access 2010 VBA-Programmierung Hölscher schnell

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Die Klasse Collection (gb) implementiert eine Hash-Tabelle, deren Elemente aus einem Wert-Schlüssel-Paar

Die Klasse Collection (gb) implementiert eine Hash-Tabelle, deren Elemente aus einem Wert-Schlüssel-Paar 7.5.0 Collection Die Klasse Collection (gb) implementiert eine Hash-Tabelle, deren Elemente aus einem Wert-Schlüssel-Paar bestehen. Die Schlüssel sind generell vom Typ String und die assoziierten Werte

Mehr

%YXSV;SPJKERK1YWGLRIV -RLEPXPMGLIW0IOXSVEX7MPOI/ERIW %YXSQEXMWMIVYRK4VSKVEQQMIVYRK F],)6(8:IVPEKJÚV&MPHYRKWQIHMIR+QF,

%YXSV;SPJKERK1YWGLRIV -RLEPXPMGLIW0IOXSVEX7MPOI/ERIW %YXSQEXMWMIVYRK4VSKVEQQMIVYRK F],)6(8:IVPEKJÚV&MPHYRKWQIHMIR+QF, ;;4 %YXSV;SPJKERK1YWGLRIV -RLEPXPMGLIW0IOXSVEX7MPOI/ERIW %YJPEKIZSQ.ERYEV F],)6(8:IVPEKJÚV&MPHYRKWQIHMIR+QF, &SHIRLIMQ -RXIVRIX[[[LIVHX]SYHIEXGL [[[LIVHXFYWMRIWWHIEXGL [[[LIVHXZLWHIEX %PPI 6IGLXI ZSVFILEPXIR

Mehr

ModernOffice - Outlook-Synchronisation

ModernOffice - Outlook-Synchronisation ModernOffice - Outlook-Synchronisation 1. Beschreibung Mit dieser Funktion haben Sie die Möglichkeit, die Adressen oder Termine von Modern Office mit Microsoft Outlook auszutauschen. Die Termine werden

Mehr

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Klausur 1. August 2008 1. Dynamische Datenstrukturen und objektorientierte Programmierung (45 Punkte) Gegeben sei eine Datenstruktur mit folgendem Aufbau struct lelem { int w;

Mehr

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList

Mehr

1. Im Hauptmenü wechseln Sie in den Punkt Liste. 2. Im Seitenbaum klicken Sie in den Menüpunkt, wo das Formular eingefügt werden soll.

1. Im Hauptmenü wechseln Sie in den Punkt Liste. 2. Im Seitenbaum klicken Sie in den Menüpunkt, wo das Formular eingefügt werden soll. 1. Im Hauptmenü wechseln Sie in den Punkt Liste. 2. Im Seitenbaum klicken Sie in den Menüpunkt, wo das Formular eingefügt werden soll. (ich habe hier als Beispiel den Punkt Angestellte benutzt) 3. In der

Mehr

Trainingsmanagement Gutschein Management. Beschreibung

Trainingsmanagement Gutschein Management. Beschreibung Trainingsmanagement Beschreibung www.dastm.de info@dastm.de 1. Einführung... 2 2. Gutschein Funktionen... 3 2.1. Gutschein Menü... 3 2.2. Gutscheine anlegen... 4 Gutschein Kassenwirksam erfassen... 6 Gutschein

Mehr

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen

Objektorientierte Programmierung. Agenda für heute, 1. April, Eines der drei wichtigsten Programmierparadigmen Agenda für heute, 1. April, 2010 Imperatives vs. objektorientiertes Programmieren Lesen Sie den Begleittext Seite 79 85 Eines der drei wichtigsten Programmierparadigmen (Paradigma: Denkmuster) Imperative

Mehr

ToolBar Datentyp Default Beschreibung AutoResize Boolean False Gibt an, ob sich die Größe der ToolBar automatisch an den Inhalt anpasst

ToolBar Datentyp Default Beschreibung AutoResize Boolean False Gibt an, ob sich die Größe der ToolBar automatisch an den Inhalt anpasst 12.3.2 ToolBar Die Klasse ToolBar (gb.form.mdi) implementiert eine Symbolleiste zur Aufnahme von ToolButton und MenuButton. Sie besitzt einige spezielle Eigenschaften, aber nur eine Methode und genau ein

Mehr

Microsoft 2010 Express/Beispiel für Grafische Oberflächen

Microsoft 2010 Express/Beispiel für Grafische Oberflächen I Vorbereitung wie Konsolanwendung Rechner hochfahren - Visual C++ 2010 Express aufrufen Datei/neu/Projekt im Menue wählen II Projekt und Projektmappe anlegen Vorlage CLR markieren Projekttyp Windows Forms-Anwendung

Mehr

3 Bibliotheken. Objekte sammeln und verwalten. Sie werden lernen, wie Sie vielbenutzte Objekte organisieren und verwalten.

3 Bibliotheken. Objekte sammeln und verwalten. Sie werden lernen, wie Sie vielbenutzte Objekte organisieren und verwalten. Objekte sammeln und verwalten Sie werden lernen, wie Sie vielbenutzte Objekte organisieren und verwalten. Oft benötigte Objekte sollten schnell bei der Hand sein, wenn man sie braucht. Sie in»normalen«indesign-dokumenten

Mehr

Die Warenkorbfunktion (workbasket)

Die Warenkorbfunktion (workbasket) Beschreibung der Komponente zur integration eines Warenkorbs in die Anwendung Table of contents 1 Allgemein...2 2 Körbe speichern und laden...3 3 Aufgelöstes XML oder beliebige weitere Metadaten im Korb...

Mehr

White Paper Wählen-Buttons in Excel

White Paper Wählen-Buttons in Excel White Paper Wählen-Buttons in Excel Seite 2 White Paper... 1 Wählen-Buttons in Excel... 1 Wählen-Button in einer Tabelle... 3 Schritt 1: Excel-Datei öffnen... 3 Schritt 2: Button einbauen... 3 Schritt

Mehr

10.4 Konstante Objekte

10.4 Konstante Objekte 10.4 Konstante Objekte Genau wie bei einfachen Datentypen (int,double,...) kann man auch Objekte als const deklarieren. Eine solche Deklaration bedeutet, daß alle Attribute so behandelt werden, als wären

Mehr

Objektorientierte Programmierung. Agenda für heute, 26. März, Eines der drei wichtigsten Programmierparadigmen

Objektorientierte Programmierung. Agenda für heute, 26. März, Eines der drei wichtigsten Programmierparadigmen Agenda für heute, 26. März, 2009 Imperatives vs. objektorientiertes Programmieren Lesen Sie den Begleittext Seite 79 85 Eines der drei wichtigsten Programmierparadigmen (Paradigma: Denkmuster) Imperative

Mehr

Skriptum Bauinformatik SS 2013 (Vorlesung III)

Skriptum Bauinformatik SS 2013 (Vorlesung III) Skriptum Bauinformatik SS 2013 (Vorlesung III) Stand: 16.04.2013 Dr. Johannes Lange 2 Inhalt Grundlagen Programmierung... 2 Imperative Programmierung... 2 Objektorientierte Programmierung... 2 Objekte...

Mehr

Tabellen / Textbausteine bearbeiten

Tabellen / Textbausteine bearbeiten Tabellen / Textbausteine bearbeiten Dateien und Verzeichnisse...1 Tabellen-Dateien der WinIBW 1.3...1 Standard-Tabellen...1 Neue Tabelle...2 Tabellen-Dateien bearbeiten...3 Textbausteine hinzufügen...4

Mehr

(3) Button-Klick & Texteingabe

(3) Button-Klick & Texteingabe Nachdem ihr jetzt Buttons und ein Eingabefeld hinzugefügt habt, wollt ihr sie sicherlich auch benutzen können und festlegen, was bei einem Klick oder Eintrag passieren soll! Dazu taucht ihr nun in die

Mehr

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische

Mehr

Konstruktor. Grundlagen der Programmierung. Stephan Kleuker 90

Konstruktor. Grundlagen der Programmierung. Stephan Kleuker 90 Konstruktor Stephan Kleuker 90 Wie erstellt man Objekte mit den bisher erstellten Code kann man genau genommen nichts anfangen, da Klassen nur Rahmen sind zur Erzeugung eines Objektes muss es die Möglichkeit

Mehr

C++ - Objektorientierte Programmierung Vererbung

C++ - Objektorientierte Programmierung Vererbung C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Umsetzung einer Klassenkarte in einer Programmiersprache

Umsetzung einer Klassenkarte in einer Programmiersprache Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,

Mehr

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 2.5.07 Übersicht 1 2 definition 3 Parameterübergabe, aufruf 4 Referenztypen bei 5 Überladen von 6 Hauptprogrammparameter 7 Rekursion bilden das Analogon

Mehr

Arbeitsblatt 5 EAD II NetBeans

Arbeitsblatt 5 EAD II NetBeans Arbeitsblatt 5 EAD II NetBeans Graphische Oberfläche für Uhrenanzeige mit NetBeans Für die Einführung in die Verwendung von NetBeans erstellen wir die graphische Oberfläche für die Uhr nun mit NetBeans.

Mehr

2.3.2 Fenster verschieben Fenster überlappen

2.3.2 Fenster verschieben Fenster überlappen PC EINSTEIGER Das Betriebssystem 2.3.2 Fenster verschieben Wenn das Fenster nicht durch MAXIMIEREN in den Vollbildmodus gestellt wurde, können Sie das Fenster auf Ihrem Desktop frei verschieben. Platzieren

Mehr

Access 2010 Programmierung Import und Export nach Excel

Access 2010 Programmierung Import und Export nach Excel Access 2010 Programmierung Import und Export nach Excel Excel... ist das Tabellenkalkulationsprogramm von Microsoft Office. wird genutzt, um numerische Daten in Tabellenform zu erfassen. kann Daten automatisch

Mehr