Session D-BROW

ClassBrowser /
PowerBrowser

Markus Egger
EPS-Software


Der Klassenbrowser

Der Klassenbrowser von Visual FoxPro ist ein Programm, das selbst in Visual FoxPro geschrieben wurde und jederzeit durch Ihr eigenes Programm ersetzt werden könnte.

Der Name des aktuellen Klassenbrowsers ist in der Systemvariable _BROWSER definiert. Standard ist das Programm BROWSER.APP (_BROWSER = Home() + ”BROWSER.APP”). Der Klassenbrowser öffnet ein oder mehrere Files in denen Klassen gespeichert sein können. Der Klassenbrowser ist Bestandteil der Visual FoxPro - Professional Version. In dieser Version gibt es im Tools-Menü einen Punkt namens Klassenbrowser. Dieser Menüpunkt wird vom Programm VFPSTART.PRG installiert, das sich im Visual FoxPro - Hauptverzeichnis befindet. Sie können den Klassenbrowser jedoch auch mit DO (_BROWSER) starten.

Der Klassenbrowser arbeitet modeless. Das bedeutet, daß Sie beliebig viele Instanzen des Browsers aufrufen können. Da die Struktur der VCX- und SCX-Dateien dieselbe ist, können Sie auch Formulare anzeigen. Neu in Visual FoxPro 5.0 ist, daß man auch gesamte Projekte und Applikationen mit dem Klassenbrowser betrachten kann. Außerdem gibt es einige spezielle Erweiterungen für OLE-Public Klassen.

Die Iconleiste des Klassenbrowsers

Klassenbibliothek öffnen

Mit diesem Icon können Sie eine existierende Klassenbibliothek öffnen. Bevor die Klasse angezeigt wird, werden alle Bibliotheken die bisher geöffnet waren, aus dem Klassenbrowser entfernt und es erscheint nur die gewählte Klasse im Browser.

Neu in Visual FoxPro 5.0: Wenn Sie mit der rechten Maustaste auf diesen Button klicken, erhalten Sie eine Liste der 8 zuletzt geöffneten Bibliotheken.

Zusätzliche Klassenbibliotheken öffnen

Wenn Sie eine neue Klassenbibliothek öffnen möchten, die bisher geöffneten Bibliotheken aber im Browser verbleiben sollen, können Sie dieses Icon verwenden. Abgesehen davon, daß die bereits geöffneten Bibliotheken offen bleiben, gibt es keine Unterschiede zum normalen Öffnen einer Klassenbibliothek.

Neu in Visual FoxPro 5.0: Wenn Sie mit der rechten Maustaste auf diesen Button klicken, erhalten Sie eine Liste der 8 zuletzt geöffneten Bibliotheken.

Sourcecode einer Klasse generieren

Der Klassenbrowser bietet Ihnen die Möglichkeit, eine Klasse aus einer VCX in eine Sourcecode-Version zu exportieren. Dies funktioniert jedoch nicht mit allen Klassen. So können z.B. bei OLE-Subklassen nicht alle Informationen exportiert werden, die benötigt würden. Auch bei sehr komplexen Klassen mit mehreren Stufen von Kindobjekten kann es zu Problemen kommen.

Neu in Visual FoxPro 5.0: Wenn Sie mit der rechten Maustaste auf diesen Button klicken, haben Sie die Möglichkeit, direkt in ein File zu exportieren.

Suchen

Dieser Button stellt Ihnen eine leistungsstarke Suchfunktion zur Verfügung. Er erlaubt Ihnen, einen String in allen geöffneten Klassenbibliotheken zu suchen. Dabei wird im Klassennamen, in der Klassenbeschreibung, in den Property- und Methodennamen und in deren Beschreibungen gesucht. Die Klasse, in der der String gefunden wird, wird anschließend angezeigt.

Anlegen einer neuen Klasse

Der Klassenbrowser erlaubt Ihnen, eine Subklasse der aktuell angezeigten Klasse anzulegen. Dabei wird im wesentlichen nur der Create-Class-Dialog angezeigt und als Default wird die aktuelle Klasse als Elternklasse eingetragen. Sie können dies jedoch auch jederzeit ändern.

Umbenennen einer Klasse

Mit Hilfe dieses Icons können Sie den Namen der aktuell angezeigten Klasse ändern.

Neu in Visual FoxPro 5.0: Wenn eine Klasse umbenannt wird, werden automatisch alle Referenzen auf diese Klasse umdefiniert. Dies gilt natürlich nur für die Klassen, die momentan im Browser angezeigt werden.

Umdefinieren einer Klasse

Oftmals ist es notwendig, eine Klasse umzudefinieren. Dies bedeutet, daß Sie die Elternklasse der aktuellen Klasse ändern möchten. Ein typischer Anwendungsfall sind Form-Klassen. Immer wieder passiert es, daß man ein Formular (Form) editiert, und wenn man fertig ist, bemerkt man, daß das Formular eigentlich eine Subklasse eines anderen Formulares sein soll. Mit Hilfe dieser Funktion können Sie dies nachträglich machen.

Neu in Visual FoxPro 5.0: Wenn eine Klasse umdefiniert wird, werden automatisch alle Referenzen auf diese Klasse umdefiniert. Dies gilt natürlich nur für die Klassen, die momentan im Browser angezeigt werden.

Eine Klasse löschen

Wenn Sie eine Klasse aus Ihrer Bibliothek löschen möchten, ist dieser Button der richtige für Sie. Seien Sie aber vorsichtig mit dieser Funktion. Die gelöschten Klassen bleiben zwar vorerst noch in Ihrer Bibliothek, sind aber schwierig wiederherzustellen.

Eine Klassenbibliothek aufräumen

Wie bereits erwähnt, bleiben alle Klassen, die Sie löschen, vorerst in der Klassenbibliothek bestehen und werden nur als gelöscht markiert. Dies führt dazu, daß die Klassenbibliothek unnötig groß werden kann. Wenn Sie aber sicher sind, daß Sie die gelöschten Klassen wirklich nicht mehr brauchen, können Sie mit diesem Button alle als gelöscht markierten Klassen wirklich (physikalisch) aus der Bibliothek entfernen. Ein Wiederherstellen der gelöschten Klassen ist dann nicht mehr möglich.

Filter setzen

Mit Hilfe dieser Listbox können Sie Filter setzen. Dies bedeutet, daß nur Klassen, die dem Filter entsprechen, angezeigt werden. Dies ist ein unentbehrliches Hilfsmittel, wenn Sie mit großen Klassenbibliotheken arbeiten.

Sie können entweder einen der vorgegebenen Filter auswählen, oder eigene Filter definieren. Sie können einen vordefinierten Filter auswählen, indem Sie ein Item aus der Listbox wählen. Vordefiniert sind Filter für alle Visual FoxPro Basisklassen. Wählen Sie z.B. “CommandButton”, so werden alle Klassen angezeigt, deren Basisklasse “CommandButton” ist.

Wenn Sie selbst einen Filter definieren, bezieht sich dies jedoch nicht auf die Basisklasse sondern auf den Namen der Klasse. Geben Sie z.B. “Mover” ein, werden alle Klassen angezeigt, die “Mover” heißen. (Dies würde natürlich nur Sinn machen, wenn Sie mehrere Klassenbibliotheken geöffnet haben, da Klassennamen in einer Bibliothek ja eindeutig sein müssen.) Sie könnten jedoch auch nach allen Klassen suchen, die mit “Mover” beginnen (“Mover*”), mit Mover enden (“*Mover”), oder deren Name “Mover” enthält (“%Mover%”). Sie können auch Platzhalter für einzelne Buchstaben verwenden. Definieren Sie z.B. “Mo?er”, erhalten Sie sowohl “Mover” als auch “Mower” und andere Kombinationen.

Anmerkung: Alle Filter, die Sie definieren, werden in die Liste aufgenommen und stehen später wieder zur Verfügung.

Die Klassenliste

Im neuen Klassenbrowser von Visual FoxPro 5.0 erscheint die Klassenliste in Form eines TreeView Controls. Im obigen Beispiel werden die Klassen hierarchisch dargestellt. Sie sehen z.B., daß 1 Klassenbibliothek geöffnet wurde (der erste Eintrag ganz oben). Weiters sehen Sie Klassen- bzw. Vererbungsstruktur. So ist z.B. BoxForm eine Subklasse von BaseForm und erbt daher dessen Methoden und Eigenschaften. Sie können das TreeView jederzeit expandieren oder komprimieren. Klicken Sie beispielsweise auf das Minus-Symbol neben dem Eintrag BaseForm, werden dessen Subklassen nicht mehr angezeigt.

Anmerkung: Klassennamen können doppelt vergeben werden, wenn Sie in unterschiedlichen Klassenbibliotheken stehen.

Neu in Visual FoxPro 5.0: Klassen können jetzt auch OLE Public sein. Diese werden mit einen Stern (*) gekennzeichnet.

Klassen, deren Elternklasse nicht sichtbar ist

Es kann sein, daß die Elternklasse einer Klasse in einer anderen Bibliothek gespeichert ist. Wenn Sie diese Bibliothek nicht geöffnet haben, kann natürlich auch die Klassenstruktur nicht angezeigt werden. In diesem Fall zeigt der Browser die jeweilige Klasse mit einem führenden “«” an.

Im obigen Beispiel kann die Elternklasse der Klasse WizardForm nicht angezeigt werden. Um diese Klasse anzuzeigen, können Sie 2 Dinge machen:

1) Sie kennen den Namen der Klassenbibliothek und öffnen diese. Im Laufe der Zeit werden Sie jedoch so viele Klassenbibliotheken anlegen, daß Sie sich kaum an alle Namen erinnern werden.

2) Sie klicken mit der rechten Maustaste in die Klassenliste und wählen in dem nun erscheinenden Menü den Punkt Select Parent Class. Nun wird die jeweilige Klassenbibliothek automatisch geöffnet.

Das Klassenicon

Jede Klasse hat ihr eigenes Icon, das im Klassen- und Formdesignertoolbar erscheint. Im Klassenbrowser können Sie es (in der neuesten Version des Browsers) sowohl in der Klassenliste, als auch obherhalb letzerer sehen.

Die Anzeige dieses Icons im Klassenbrowser ist jedoch nicht zur Verschönerung des Fensters gedacht, sondern es enthält eine unvermutete Menge an Funktionalität.

Verändern des Icons

Sie können das Klassenicon verändern, indem Sie mit der rechten Maustaste auf dasselbe klicken. Sie erhalten dann einen Dialog, in dem Sie das neue Icon auswählen können.

Klicken Sie im Dialog auf Cancel bzw. Abbruch, erhalten Sie einen weiteren Dialog, in dem Sie gefragt werden, ob das Icon auf das Standardicon der Basisklasse der aktuellen Klasse zurückgesetzt werden soll. Beantworten Sie dies mit nein, um das aktuelle Icon beizubehalten.

Drag&Drop

Da das TreeView-Control kein drag&drop unterstützt, hat man sich entschlossen, drag&drop-Funktionalität in das Icon zu integrieren.

Haben Sie z.B. den Klassenbrowser zweimal geöffnet, können Sie das Icon per drag&drop im anderen Fenster fallenlassen und haben somit die Klasse in die Klassenbibliothek im zweiten Fenster verschoben.

Neu in Visual FoxPro 5.0: In den bisherigen Versionen des Klassenbrowsers wurden Klassen mit drag&drop von einer Bibliothek zur anderen kopiert. Nun werden sie verschoben. Um die Klasse zu kopieren, müssen Sie während des drag&drop Vorganges die Shift-Taste gedrückt halten.

Neu in Visual FoxPro 5.0: Wenn eine Klasse verschoben oder kopiert wird, werden alle Referenzen auf diese Klasse automatisch umdefiniert. Dies gilt natürlich nur für Klassen die momentan im Browser geöffnet sind.

Sie können das Icon aber nicht nur im Klassenbrowser fallenlassen, sondern auch direkt auf dem Visual FoxPro - Desktop (Hauptfenster). In diesem Falle wird die Klasse instanziiert. Ist die Klasse z.B. ein Button, erscheint der Button tatsächlich auf dem Bildschirm.

Neu in Visual FoxPro 5.0: Wenn Sie während des drag&drop die Shift-Taste gedrückt halten, wird die Klasse zwar instanziiert, jedoch nicht angezeigt (Visible = .F.).

Neu in Visual FoxPro 5.0: Normalerweise werden Fehler bei der Instanziierung einer Klasse einfach ignoriert. Wenn Sie während des drag&drop die Ctrl-Taste gedrückt halten, werden Fehler nicht ignoriert.

Neu in Visual FoxPro 5.0: Drag&drop funktioniert nun auch direkt in das Befehlsfenster. In diesem Fall wird der Code, der zur Erstellung der Klasse notwendig ist, eingefügt und ausgeführt.

Neu in Visual FoxPro 5.0: Sie können direkt in ein existierendes Fenster oder einen existierenden Container droppen, um diesem Fenster/ Container eine Instanz der Klasse zuzufügen. Sie können die Klasse aber nicht nur einer existierenden Form zufügen sondern auch einer gerade editierten. In diesem Fall funktioniert der Klassenbrowser wie der Controls-Toolbar.

Das Editieren von Klassen

Sie können Klassen direkt aus dem Klassenbrowser heraus editieren. Doppelklicken Sie einfach die gewünschte Klasse, und der Klassenbrowser startet den Klassendesigner für Sie.

Das Shortcut Menü

In der neuesten Version der Klassenbrowsers gibt es nun auch ein sogenanntes Shortcut Menü. Das ist ein Menü, das mit einem rechten Mausklick aufgerufen wird. Je nachdem, über welchem Objekt der Klick ausgeführt wird, erscheint das Menü mit unterschiedlichen Menüpunkten. Shortcut Menüs können auch mit Shift+F10 geöffnet werden.

Hier sehen Sie einige Möglichkeiten für Shortcut Menüs:

Descriptions: Dieser Menüpunkt definert, ob die Beschreibungen der Klasse angezeigt werden sollen oder nicht.

Always On Top: Dieser Menüpunkt definert, ob das Klassenbrowser-Fenster immer zu oberst angezeigt werden soll, auch wenn es inaktiv ist.

Restore Defaults: Über diesen Menüpunkt können Sie den Klassenbrowser wieder auf dessen Standardeinstellungen zurücksetzen. Dies betrifft die Einstellungen Descriptions, Always On Top, Auto Expand, Hierarchical, Protected, Hidden und Empty.

Auto Expand: Definiert, ob die beiden TreeViews automatisch expandiert werden sollen.

Hierarchical: Über diesen Menüpunkt kann festgelegt werden, ob die Klassenliste eine hierarchische oder eine alphabetische Ansicht zeigen soll.

Protected, Hidden und Empty: Diese 3 Menüpunkte bestimmen, ob geschützte-, versteckte und leere Eigenschaften/ Methoden angezeigt werden sollen.

Font: Hier können Sie den Font des Klassenbrowsers definieren.

Neu in Visual FoxPro 5.0: Der Klassenbrowser merkt sich die jeweiligen Font-Einstellungen für jede Klassenbibliothek.

Export: Dieser Menüpunkt entspricht dem Export-Button.

Add-ins...: Über diesen Menüpunkt können Sie AddIns starten (siehe unten).

View: Zeigt den Inhalt von Properties/ Eigenschaften in einer Messagebox an.

Rename: Ändert den Namen einer Klasse, einer Eigenschaft oder einer Methode. Alle Referenzen auf den alten Namen werden in allen aktuell geöffneten Bibliotheken umdefiniert.

Redefine: Entspricht dem Redefine-Button.

Modify: Öffnet den Klassendesigner.

Container Icon: Entspricht einem Rightklick auf das Klassenicon.

Remove: Schließt eine geöffnete Klassenbibliothek.

Anmerkung: Achtung! Hier lautert eine böse Falle. Wenn man eine Klassenbibliothek aus dem Klassenbrowser entfernt, erscheint ein Dialog, in dem man gefragt wird, ob die Klasse auch von der Festplatte gelöscht werden soll. Da dieser Dialog etwas verwirrend ist, kann es leicht passieren, daß man eine Klassenbibliothek versehentlich löscht.

Select ParentClass: Setzt den Cursor auf der Superklasse der aktuellen Klasse. Ist diese Klasse in einer Klassenbibliothek, die gerade nicht geöffnet ist, so wird diese geladen.

OLE Public: Definiert ob eine Klasse OLE Public ist, oder nicht.

Help: Ruft die Online-Hilfe auf.

Tip: Nirgends ist der Klassenbrowser so umfangreich beschrieben wie in der Online-Hilfe.

Klassen-Details Liste

Dieses TreeView zeigt zusätzliche Informationen über die aktuelle Klasse. Dabei gibt es eine Unterteilung in vier Kategorien

Objects

Dieser Ast zeigt, welche Kindobjekte die aktuelle Klasse hat. Dabei wird sowohl der Name des Kindobjektes als auch dessen Basisklasse angezeigt. Es werden nur jene Kindobjekte angezeigt, die in dieser Klasse definiert wurden, und nicht die einer möglichen Elternklasse.

Anmerkung: Wenn eine Klasse Kindobjekte enthält, so sind diese Kindobjekte keine Subklassen, sondern nur Instanzen einer bereits existierenden Klasse.

Methoden

Dieser Ast zeigt eine Liste aller Methoden und Ereignisse (Events), die in der Klasse definiert wurden. Die Methoden einer möglichen Elternklasse werden hier nicht angezeigt, sofern sie nicht überschrieben wurden. In der aktuellen Klassen neu definierte Methoden, denen noch kein Code zugewiesen wurde, werden nur angezeigt, wenn Show Empty gewählt ist (siehe oben). Diese Methoden werden dann mit einer Tilde (~) gekennzeichnet.

Properties (Eigenschaften)

Der dritte Ast zeigt alle neu definierten Eigenschaften (Properties). Abgekapselte Eigenschaften (protected properties) und versteckte Eigenschaften (hidden properties) werden nur dann gezeigt, wenn Show Protected bzw. Show Hidden gewählt ist. Abgekapselte Eigenschaften werden durch einen Stern (*) gekennzeichnet, versteckte durch ^.

Instanzen

Der vierte und letzte Ast zeigt alle Instanzen der gerade angezeigten Klasse. Sollten Sie z.B. eine Form-Klasse browsen, die sich zum selben Zeitpunkt auch auf dem Bildschirm und somit im Speicher befindet, wird diese Form auf der fünften Seite aufgelistet.

Anmerkung: Als Instanz im Sinne des Klassenbrowsers werden nur eigenständige Objekte bezeichnet. Sollten Sie z.B. per Drag&Drop ein Objekt aus dem Klassenbrowser heraus instanziieren, so wird dieses Objekt ein Kindobjekt des FoxPro-Hauptfensters (_Screen) und nicht ein eigenständiges Objekt. Daher scheint es auch nicht in der Liste der Instanzen auf.

Kommentare und Beschreibungen

Im untersten Bereich des Klassenbrowsers sehen Sie 2 Editboxen. Die linke Editbox enthält Kommentare und Beschreibungen zu der gerade gezeigten Klasse, während die rechte Editbox Kommentare und Beschreibungen zur gewählten Methode/ Eigenschaft/ Kindobjekt enthält. Methoden, Eigenschaften und Kindobjekte können in den jeweiligen Seiten des PageFrames gewählt werden. Teilweise (dies ist abhängig von der Art der gewählten Klasse bzw. der gewählten Methode/ Eigenschaft/ Kindobjekt) können Sie diese Kommentare auch editieren. In diesem Fall erscheint die Editbox weiß. Kann nichts editiert werden, erscheint die Editbox grau und akzeptiert keine Eingaben.

Der ParentClass Toolbar

 

Mit Hilfe dieses Toolbars können Sie direkt auf Methoden in Elternklassen zugreifen, wenn eine Klasse oder ein Formular editiert wird und ein Code-Fenster geöffnet wurde.

Die Browser.dbf

Im Visual FoxPro - Hauptverzeichnis befindet sich eine Datei namens Browser.dbf. In dieser Datei werden Informationen über den Klassenbrowser abgespeichert, z.B. die Position des Browserfensters auf dem Bildschirm, die Größe des Fensters, usw... Dabei wird für jede Klasse und jede Instanz des Browsers ein eigener Datensatz angelegt. Der Klassenbrowser merkt sich also, wo und wie groß Sie das Fenster haben möchten. Wenn Sie den Browser das zweitemal öffnen, weiß er, wo die zweite Instanz erscheinen soll, usw... Der Klassenbrowser kann sich auch individuelle Dinge für unterschiedliche Klassenbibliotheken merken.

Die nächste wichtige Information, die der Klassenbrowser in dieser Datei speichert, ist, welche AddIns Sie installiert haben und wann sie aufgerufen werden sollen (siehe unten).

Die Browser.dbf für eigene Zwecke verwenden

Die Browser.dbf enthält ein Feld namens Type. Der Klassenbrowser such nach Datensätzen, in denen Type entweder “PREFW”, oder “ADDIN” ist. Alle anderen Datensätze werden ignoriert. Sie können in dieser Datei also eigene Daten abspeichern, solange der Type nicht “PREFW” oder “ADDIN” ist.

Sie können die Browser.dbf jederzeit und aus jedem Directory mit USE Home()+”Browser” öffnen.

Trickreiche Wege, den Browser zu starten

Wenn Sie den Klassenbrowser aus dem Menü aufrufen, werden Sie nach dem Namen der Klassenbibliothek, die Sie browsen möchten, gefragt. Es geht jedoch auch anders. Wie bereits erwähnt, gibt es eine Systemvariable namens _Browser, die den Namen der aktuellen Browserapplikation enthält. Sie können den Klassenbrowser also mit DO (_BROWSER) starten. Dies entspricht im wesentlichen einem Aufruf aus dem Menü. Sie können jedoch auch Parameter übergeben.

Sie können den Klassenbrowser mit einem Parameter starten. Dieser Parameter ist der Name einer Klassenbibliothek, die automatisch geöffnet wird. Mit DO (_BROWSER) WITH “Test.vcx” wird nach dem Start automatisch die Klassenbibliothek Test.vcx geöffnet. Als zweiten Parameter können Sie den Namen einer Klasse übergeben. Wenn Sie den Browser mit DO (_BROWSER) WITH “Test.vcx”, “MyClass” aufrufen, wird die Klassenbibliothek Test.vcx geöffnet, und der Cursor steht auf der Klasse MyClass.

Neu in Visual FoxPro 5.0: Sie können auch eine Methode angeben, auf die der Cursor automatisch gesetzt wird, wenn eine Bibliothek geöffnet wird. Beispiel: DO (_browser) WITH “mylib", "myclass.cMessage"

Neu in Visual FoxPro 5.0: Es gibt nun die Möglichkeit mit Hilfe der _oBrowser.SetDefaultFile()-Methode eine Standardbibliothek zu definieren, die beim Start des Browsers automatisch geöffnet wird, ohne daß der GetFile()-Dialog aufgerufen wird. Mit der Methode _oBrowser.ResetDefaultFile() kann diese Vorgabe wieder zurückgesetzt werden.

Automatisches Öffnen von Bibliotheken und Klassen

Wenn Sie gerade ein Formular oder eine Klasse editieren, können Sie jederzeit die Klassendefinition von verwendeten Klassen ansehen. Erstellen Sie z.B. ein Formular mit einem Button, können Sie den Button markieren und den Klassenbrowser aus dem Menü aufrufen. Er startet dann automatisch mit der Klasse des Buttons.

Dasselbe funktioniert auch mit existierenden Fenstern/ Objekten. Steht der Cursor z.B. ein der Textbox einer Maske, können Sie den Browser aus dem Menü aufrufen und sehen automatisch die Klasse der Textbox.

Updaten des Browserfensters

Der Klassenbrowser hat eine etwas gewöhnungsbedürftige Eigenschaft. Er führt nämlich jedesmal, wenn das Browserfenster aktiviert wird, eine komplette Neuanzeige des Fensters durch. Dies kann bei großen Klassenbibliotheken zu einer Reaktionsverzögerung führen. Dieses ständige Neuanzeigen ist jedoch von großer Wichtigkeit. Es könnte nämlich sein, daß Sie eine gerade angezeigte Klasse im Hintergrund verändert haben. Oder vielleicht haben Sie sogar eine neue Klasse zur gerade gezeigeten Bibliothek hinzugefügt. Oder Sie haben eine Klasse instanziiert, usw... In all diesen Fällen wird dies sofort im Browserfenster sichtbar, sobald es das nächste Mal aktiviert wird.

Die Interna des Klassenbrowsers

Wie bereits erwähnt, ist der Klassenbrowser ein in Visual FoxPro geschriebenes Programm. Dieses Programm ist ein typisches Visual FoxPro Programm, das nach den objektorientierten Richtlinien geschrieben wurde. Demzufolge ist das Klassenbrowserfenster ein Objekt im Speicher von FoxPro, das für jedermann zugänglich ist. Das Objekt hat den Namen “_oBrowser”.

Anmerkung: Der eigentlich Objektname des Browsers wird intern festgelegt und ist mir nicht bekannt. Es wird jedoch ein Zeiger auf den Browser erstellt, und dieser Zeiger heißt “_oBrowser”. Für den Anwender macht das jedoch keinen Unterschied. Der Vorteil dieser Methode liegt darin, daß “_oBrowser” immer auf das aktive Browserfenster zeigt, wenn mehrere Instanzen des Browsers geöffnet wurden.

Dadurch, daß wir den Objektnamen des Browsers kennen, können wir auch auf die meisten Methoden und Eigenschaften des Browsers zugreifen. Wir können z.B. den Fenstertitel des Browsers ändern, indem wir _oBrowser.Caption = “Test” im Befehlsfenster eingeben. Ein Großteil der Methoden und Eigenschaften ist sogar dokumentiert.

Anmerkung: Die nachfolgend beschriebenen Methoden und Properties erheben keinen Anspruch auf Vollständigkeit. Diese Liste stellt nur die wichtigsten von ihnen vor und soll für Sie lediglich einen Wegweiser darstellen. Eine vollständige Liste können Sie Ihrem Handbuch oder der Online-Hilfe entnehmen.

Methoden

AddFile() Diese Methode öffnet eine weitere Klassenbibliothek (VCX) oder ein weiteres Formular (SCX). Als Parameter kann der Name des Files übergeben werden. Wird kein Parameter übergeben, wird ein Dateiöffnen-Dialog gezeigt.

AddIn() Installiert oder deinstalliert ein Browser-AddIn. Mehr Informationen siehe unten.

AddInMenu() Diese Methode zeigt das Menü der registrierten AddIns.

AddInMethod() Mit Hilfe dieser Methode können Sie ein AddIn für ein bestimmtes Objekt und eine bestimmte Methode abfeuern. Mehr Informationen siehe unten. Beispiel: _oBrowser.AddInMethod(“cmdHelp.Click”)

CleanUpFile() Entfernt gelöschte Klassen physikalisch aus der aktuellen Klassenbibliothek.

NewClass() Erstellt eine neue Subklasse der in der Klassenliste gewählten Klasse.

ExportClass() Erstellt den Sourcecode der aktuellen Klasse und gibt diesen zurück. Es kann ein Parameter übergeben werden. Dieser Parameter definiert, ob der Sourcecode auch angezeigt .T.) oder nur zurückgegeben (.F.) werden soll.

ModifyClass() Öffnet den Klassendesigner mit der aktuellen Klasse.

NewFile() Kreiert eine neue Klassenbibliothek. Als Parameter kann der Name der neuen Bibliothek übergeben werden. Wenn kein Parameter übergeben wird, erscheint ein Dateierstellen-Dialog.

OpenFile() Öffnet eine neue Klassenbibliothek und schließt alle bisher geöffneten.

ProperBaseClass() Gibt den Namen einer Basisklasse in schönem Format zurück. Z.B. =ProperBaseClass(“commandbutton”) gibt “CommandButton” zurück.

RedefineClass() Ändert die Elternklasse der aktuellen Klasse. Als Parameter wird der Name der neuen Elternklasse und der Name der Klassenbibliothek der Elternklasse übergeben.

RefreshClassList() Zeigt die Liste der Klassen erneut an. Optional können Sie auch den Namen der Klasse übergeben, auf der der Cursor nach der Anzeige stehen soll.

RemoveClass() Löscht die aktuelle Klasse aus der Klassenbibliothek.

RenameClass() Ändert den Namen der aktuellen Klasse. Als Parameter muß der neue Klassenname übergeben werden.

SeekClass() Sucht eine Klasse (1. Parameter = Klassenname) in einer Klassenbibliothek (2. Parameter = Klassenbibliothek) und stellt den Cursor auf diese Klasse in der Klassenliste.

SeekParentClass() Sucht nach der Elternklasse der selektierten Klasse in der Klassenliste und stellt den Cursor auf dieselbe.

Properties

cAlias Enthält den Alias der Klassenbibliothek der selektierten Klasse. Alle Bibliotheken befinden sich natürlich in einer separaten Tabelle (VCX), die geöffnet bleibt, so lange die Bibliothek am Bildschirm ist. Ist nur eine Klassenbibliothek geöffnet, hat diese den Alias-Namen METADATA. Sind mehrere Bibliotheken geöffnet, gibt es mehrere unterschiedliche Namen. cAlias enthält den der selektierten.

cAddInMethod Enthält den Namen der Methode, die ein AddIn abgefeuert hat. Dieses Property wird nach Beenden des AddIns wieder auf leer gesetzt.

lAddInMode Wenn dieses Property .T. ist, wird gerade ein AddIn abgearbeitet.

cBaseClass Enthält die Basisklasse der selektierten Klasse.

cclass Enthält den Klassennamen der selektierten Klasse.

nClassCount Enthält die Anzahl der in der Klassenliste gezeigten Klassen.

cClassLibrary Enthält den Namen der Klassenbibliothek der selektierten Klasse.

nDisplayMode Definiert den Anzeigemodus des Klassenbrowsers. 1 = hierarchisch, 2 = alphabetisch.

nFileCount Speichert die Anzahl der aktuell geöffneten Bibliotheken.

cFilter Hier wird die aktuelle Filterbedingung gespeichert.

cGetFileExt Dies definiert, welche Dateierweiterungen im GetFile-Dialog angezeigt werden. Standard ist “VCX;SCX”.

aInstanzes Dies ist ein Array aller existierenden Instanzen der selektierten Klasse.

nInstanzes Dies ist die Anzahl der Instanzen der selektierten Klasse.

cParentClass Enthält den Namen der Elternklasse der selektierten Klasse.

AddIns

Eine der von mir meistgeschätzten Eigenschaften des Klassenbrowsers ist, daß man ihn jederzeit durch eigene Programme und Funktionen erweitern kann. Grundsätzlich gibt es nur eine Regel, der ein AddIn gehorchen muß: Das jeweilige Programm muß einen Parameter aufnehmen können. Dieser Parameter ist ein Objekt, um das wir uns nicht weiter kümmern müssen. Vergessen wir jedoch auf das Parameter-Statement in unserem AddIn, ergibt das einen Fehler.

Ein “Hallo Welt!” - Beispiel

Das wohl einfachste Beispiel für ein AddIn ist ein “Hallo Welt!” - Programm. Dieses AddIn könnte folgendermaßen aussehen:

LPARAMETERS oObject
WAIT WINDOW “Hallo Welt!”
RETURN

Nehmen wir an, dieses Programm hat den Namen “HALLO.PRG”. Wir können dieses Programm mit der AddIn()-Methode des Browsers installieren: (Dazu muß das Browserfenster auf dem Bildschirm sein)

_oBrowser.AddIn( “Hallo Welt!”, “HALLO.PRG” )

Wenn Sie nun auf den AddIn-Menüpunkt klicken erscheint ein Menü, in dem Sie “Hallo Welt!” auswählen können und daraufhin unser WAIT-WINDOW erhalten. Wie Sie sehen, ist der erste Parameter der angezeigte Text im Menü und der zweite ist der Name des Programmes. Beim zweiten Parameter wird als Standard angenommen, daß es sich um ein PRG handelt. Hier hätte also “HALLO” genügt. Sie können aber auch Formulare (SCX), Applikationen (APP), EXE-Files (EXE) und kompilierte Programme (FXP) aufrufen.

Nun, unser Hallo-Welt!-Programm wird wahrscheinlich niemanden “vom Hocker reißen”. Aber versuchen Sie, unser hallo.prg in folgende Version zu verwandeln:

LPARAMETERS oObject
WAIT WINDOW _oBrowser.cClass NOWAIT
_oBrowser.ModifyClass()
RETURN

Na, beeindruckt? Nicht? Naja, deshalb habe ich ja auch alle Methoden und Properties beschrieben. Den Möglichkeiten der AddIns sind (fast) nur durch Ihre Fantasie Grenzen gesetzt.

Die AddIn() - Methode im Detail

Wie Sie bereits gesehen haben, kann man mit der AddIn-Methode Einträge in das AddIn-Menü einfügen.

Diese Einträge werden übrigens in der Browser.dbf gespeichert und stehen Ihnen beim nächsten Aufruf wieder zur Verfügung. Das führt uns natürlich zur Frage: “Wie wird man unser Hallo-Welt Programm wieder los?”.

AddIns entfernen

Die AddIn()-Methode kann auch dazu verwendet werden, existierende Einträge wieder zu entfernen. Rufen Sie die Methode einfach mit dem Namen des AddIns auf und übergeben als zweiten Parameter .NULL.. In unserem obigen Beispiel würde das folgendermaßen funktionieren:

_oBrowser.AddIn( “Hallo Welt!”, .NULL. )

Anmerkung: In der Visual FoxPro Dokumentation hat sich ein Fehler eingeschlichen. Wenn als 2. Parameter ein leerer String übergeben wird, wird das AddIn nicht entfernt.

AddIns mit Methoden und Events verknüpfen

AddIns können nicht nur über das AddIn-Menü aufgerufen werden, sie können auch mit Methoden und Events verknüpft werden. Möchten wir unser Hallo-Welt Programm bei jedem Start des Klassenbrowsers aufrufen, können wir es mit dem Init-Event des Browsers verknüpfen:

_oBrowser.AddIn( “Hallo Welt!”, “HALLO.PRG”, “INIT” )

Sie können beliebig viele AddIns mit ein und derselben Methode verknüpfen. Sie werden dann der Reihe nach abgearbeitet.

Anmerkung: Sie können auch Methoden in Kindobjekten des Browsers verwenden. Wenn wir unser Hallo-Welt Programm nach klick auf den Help-Button aufrufen möchten, können wir das mit oBrowser.AddIn( “Hallo Welt!”, “HALLO.PRG”, “cmdHelp.Click” ) machen.

AddIns mit Bedingungen verknüpfen

Sollte Ihr AddIn nur mit bestimmten Klassen oder bestimmten Plattformen arbeiten, können Sie das über Parameter 4 (Klassenbezeichnung) und Parameter 5 (Plattform) bestimmen.

Kommentare zum AddIn speichern

Als 6. Parameter können Sie einen Kommentar zum AddIn definieren. Dieser wird in der Browser.dbf gespeichert.

PowerBrowser - Visual FoxPro Class Browser AddIn

Installation

Um den PowerBrowser zu installieren, entpacken Sie das ZIP File, starten Visual FoxPro, wechseln in das Verzeichnis, in das Sie die Dateien entkomprimiert haben und rufen PBInst.PRG auf.

Entfernen des PowerBrowser AddIns

Um den PowerBrowser zu deinstallieren, rufen Sie PBUnInst.PRG auf.

Der PowerBrowser im Überblick

Der PowerBrowser erweitert den originalen Klassenbrowser von Visual FoxPro 5.0. Um dies zu tun, wurde der Klassenbrowser komplett umorganisiert und eine Menge neue Objekte hinzugefügt. Einige der originalen Bestandteile des Klassenbrowsers wurden komplett ersetzt.

Der neue Toolbar

Die meisten Icons im Toolbar gab es bereits im originalen Klassenbrowser. Sie wurden lediglich anders angeordnet um keinen Platz im Browserfenster zu verschwenden. Die neu hinzugefügten Buttons sehen Sie im obigen Bild speziell gekenntzeichnet.

Sets

Der PowerBrowser verwaltet Klassensets. Ein Set besteht aus mehreren Klassenbibliotheken, die logisch zusammengehören. Ein typisches Set wären z.B. alle Klassenbibliotheken der TazTrade Demoapplikation.

Sets werden vom PowerBrowser selbst verwaltet. Eine Klassenbibliothek weiß nicht, zu welchem Set sie gehört. Jede Bibliothek kann zu beliebig vielen Sets gehören. Man kann sich ein Set als “Shortcut” zu mehreren Klassenbibliotheken vorstellen.

Sets speichern

Um ein Set zu definieren, öffnen Sie mehrere Klassenbibliotheken, aktivieren den Sets-Manager und wählen die Save-Seite. Definieren Sie nun einen Namen und klicken auf den Save-Button.

Anmerkung: Die Sets werden in der Browser.dbf gespeichert.

Sets öffnen

Um ein Set zu öffnen, aktivieren Sie den Set-Manager und wählen die Open-Seite. Hier sehen Sie eine Liste aller definierten Sets. Wählen Sie eines aus und klicken auf Open.

In dieser Seite können Sie Sets auch löschen. Sie verbleiben jedoch noch in der Browser.dbf bis diese gepackt wird. Bis zu diesem Zeitpunkt können Sie jederzeit wieder recycled werden. Um dies zu tun wählen Sie Show Deleted. Die gelöschten Sets sind mit einem roten X markiert. Wenn Sie ein gelöschtes Set markieren, können Sie dies wie ein normales Set öffnen. Das Set würde aber weiterhin als gelöscht gelten und bei einem eventuellen pack endgültig verschwinden. Bevor dies geschieht, können Sie es jedoch mit dem Recall-Button wieder herstellen.

Auto Open

Die dritte Seite des Set-Managers hat eigentlich gar nichts mit Sets zu tun, sondern sie ist eher ein Wizard. Mit seiner Hilfe kann man alle Files eines bestimmten Types automatisch öffnen.

Power Redefine

Der PowerBrowser verändert auch die Funktionalität des Redefine-Buttons. Genaugenommen erweitert er diese. Wenn Sie auf den PowerRedefine-Button drücken erscheint folgendes Menü:

Original Redefine

Dieser Menüpunkt ruft die originale Redefine-Option des Klassenbrowsers auf.

Power Redefine

Dieser Menüpunkt führt Sie zur neuen Redefine-Funktionalität. Einer der Unterschiede zwischen dem originalen Redefine und dem PowerRedefine ist, daß eine Liste aller gerade geöffneten Klassen in der aktuellen Ansicht des Browsers (hierarchis oder alphabetisch) gezeigt wird. Das bedeutet jedoch auch, daß Sie PowerRedefine nur dann verwenden können wenn die neue Eltnernklasse auch gerade im Browser angezeigt wird. Aus der gezeigten Liste können Sie per doppelklick eine neue Elternklasse auswählen. Dieser Dialog sieht folgendermaßen aus:

Wie Sie sehen, werden alle Klassen angezeigt und nicht nur diejenigen mit der selben Basisklasse. Mit PowerRedefine kann man nämlich auch die Basisklasse verändern. Die macht z.B. dann Sinn, wenn Sie eine Custom-Klasse auf einen Container umdefinieren möchten. Weniger sinnvoll wäre es z.B. ein Grid in einen Button zu verwandeln. Gründsätzlich würde der PowerBrowser eine derartige Aktion (nach Ausgabe einer Warnung) jedoch zulassen.

Reset to BaseClass

Setzt die Klasse zurück auf die jeweilige Basisklasse.

Die Standard Ansicht

Die Standard Ansicht ist dem originalen Klassenbrowser sehr ähnlich. Die meisten Objekte wurden jedoch verschoben, um eine bessere Ausnutzung des Platzes zu erreichen. Es gibt jedoch auch neue Funktionalität in dieser Ansicht.

Da die originalen Icons in der Klassenliste nicht sehr schön anzusehen waren, wurden sie durch neue (dem Visual FoxPro Standard entsprechende) Icons ersetzt.

Klassen-Details Liste

Hier fällt natürlich sofort auf, daß auch dieses TreeView nun Icons hat. Diese Icons dienen jedoch nicht nur der optischen Verschönerung, sondern sie halten wertvolle Informationen für uns bereit.

Alle Objekte in einer Klasse werden mit dem Icon ihrer Basisklassen dargestellt. Eigenschaften und Methoden werden in Microsoft Developer Studio kompatibler Art und Weise angezeigt. Methoden werden durch ein rosarotes-, Eigenschaften durch ein blaues Rechteck gekenntzeichnet. Geschützte Methoden/ Eigenschaften haben ein zusätzliches Schlüssel-Symbol, versteckte ein Schloß. Leere Methoden werden durch den Zusatz {empty} markiert.

In diesem TreeView gibt es auch zwei komplett neue Äste: Non-Default Methods/ Events und Non-Default Properties. Diese zeigen Ihnen alle Methoden und Properties an, die nicht dem Standard entsprechen. Sie werden auch dann angezeigt, wenn sie in einer Elternklasse definiert wurden. Bei Eigenschaften wird auch der aktuelle Wert angezeigt.

Die Größe der Browser Bereiche verändern

Der PowerBrowser erlaubt es Ihnen, die Größen der einzelnen PowerBrowser-Bereiche zu verändern. Sie können dies bequem mit der Maus erledigen.

Der PowerBrowser merkt sich die Größe der Bereiche und zeigt diese immer so an, wie sie zuletzt waren.

Anmerkung: Manchmal kann es vorkommen, daß durch die OLE-Objekte (TreeViews) das Bewegen der Moverbars nicht richtig angezeigt wird, oder daß der PowerBrowser es nicht bemerkt wenn Sie die Maustaste loslassen. Das kann jedoch leicht behoben werden, indem Sie nochmals ausserhalb der TreeViews klicken.

Die Tabellen-Ansicht

In dieser Ansicht können Sie die VCX Dateien direkt editieren. Seien Sie jedoch vorsichtig mit diesem Feature, da es sehr gefährlich sein kann, wenn man sich mit der VCX-Struktur nicht auskennt.

Anmerkung: Die VCX Struktur wird am Ende dieser Sessionunterlagen dokumentiert und erklärt.

Die Methoden- und Events-Ansicht

In dieser Ansicht können Sie direkt Methoden und Events editieren, ohne den Klassendesigner zu starten.

Anmerkung: Manchmal kann es passieren, daß die Veränderungen nicht in die Klassenbibliothek zurückcompiliert werden können. Die Änderungen wurden jedoch geschrieben. Das kann zu Problemen führen. In diesem Fall können Sie mit einem COMPILE CLASSLIB alles wieder ins Lot bringen.

Print Class Information - Ansicht

Der PowerBrowser bietet Ihnen die Möglichkeit, Informationen über die aktuelle Klasse/ Klassenbibliothek auszudrucken.

Wizards und Tools Ansicht

Diese Ansicht stellt Ihnen verschiedene Wizards und Tools zur Verfügung. Weitere Informationen können Sie dem folgenden Abschnitt entnehmen.

Wizards and other Tools

Change Class Location Wizard

Da alle Pfade und Referenzen in einer Klassenbibliothek absolut (und nicht relativ) gespeichert werden, kommt es immer wieder zu Problemen, wenn eine Klassenbibliothek (oder ganze Sets) in andere Verzeichnisse verschoben werden. Dieser Wizard definiert all diese Referenzen neu.

In Schritt 1 definieren Sie alle Klassenbibliotheken die verschoben wurden. Sie können Klassenbibliotheken wählen, die sie gerade im Klassenbrowser geöffnet haben, sie können aber auch VCX Files von der Platte wählen. Alle Referenzen die sich auf eine dieser Bibliotheken beziehen werden neu definiert.

In Schritt 2 definieren Sie alle Bibliotheken die Referenzen auf die verschobenen Klassen haben könnten. Mit Anderen Worten: Hier definieren Sie Klassenbibliotheken, die entweder Subklassen oder Instanzen von verschobenen Bibliotheken enthalten.

Fertig! Drücken Sie auf Finish und alle Ihre Klassen sind wieder auf den neuesten Stand der Dinge.

Tip: Definieren Sie ein Set aller Klassen, die zu Ihrer Applikation gehören. Diese können Sie dann bequem mit einem Mausklick in Schritt 1 und Schritt 2 übernehmen. Sie brauchen dann nur noch den Wizard zu starten und Ihre Bibliotheken haben automatisch die richtigen Referenzen.

Anmerkung: Alle Veränderungen die auf diese Art und Weise vorgenommen werden können mit dem Disaster Recovery Wizard wieder rückgängig gemacht werden.

Enforce Foundation Class Wizard

Dieser Wizard durchsucht Ihre Klassenbibliotheken nach direkten Instanzen oder Subklassen von Visual FoxPro Basisklassen, um diese dann so umzudefinieren, daß sie Ihre “Foundation Classes” (eigenes Set an Basisklassen) verwenden.

Anmerkung: Dieser Wizard kann nicht nur Subklassen sondern auch deren Kindobjekte umdefinieren.

In Schritt 1 definieren Sie allen Klassenbibliotheken, die umdefiniert werden sollen.

In Schritt 2 definieren Sie, welche Foundation Classes anstelle der Basisklassen verwendet werden sollen. Sie können hier auch definieren, welche Klassentypen überhaupt ausgetauscht/ umdefiniert werden müssen. Sie könnten z.B. definieren, daß nur Forms umdefiniert werden sollen.

Nehmen wir an, sie wollen (wie im obigen Bild) alle CheckBoxen umdefinieren. Sie markieren daher diesen Klassentyp und der Wizard fragt nach einer FoundationClass, die Sie verwenden möchten. Sie müssen nun lediglich eine Klassenbibliothek angeben. Normalerweise beinhalten Foundation Class Libraries nur jeweils ein Vorkommen eines bestimmten Klassentypes. Daher müssen Sie die Klasse auch nicht explizit angeben sondern nur die Bibliothek. Der Wizard weiß dann selbständig welche Klasse er verwenden muß. Sollten jedoch mehrere Klassen mit derselben Basisklasse in der angegebenen Bibliothek vorkommen, fragt der Wizard, welche er verwenden soll.

In Schritt 3 können Sie noch definieren, ob alle Klassen automatisch umdefiniert werden sollen oder ob Sie vorher gefragt werden möchten. Drücken Sie nun noch den Finish Knopf und Sie sind fertig.

Anmerkung: Alle Veränderungen die auf diese Art und Weise vorgenommen werden können mit dem Disaster Recovery Wizard wieder rückgängig gemacht werden.

Reset Base Class Wizard

Dieser Wizard stellt das Gegenstück zum vorherigen Wizard dar. Er setzt alle Subklassen und Instanzen zurück auf dessen Basisklasse. Das kann oft sehr nützlich sein, wenn Sie eine Klassenbibliothek von einem Freund bekommen, dessen Foundation Classes jedoch nicht besitzen. In den meisten Fällen funktionieren die Klassen jedoch immer noch, wenn sie zurückgesetzt werden. Dieses Feature ist auch sehr hilfreich, wenn Sie Klassen aus einem anderen Projekt übernehmen möchten, oder wenn deren Elternklassen ganz einfach nicht mehr existieren/ verlorengegangen sind.

In Schritt 1 wählen Sie alle Klassenbibliotheken, die zurückgesetzt werden sollen.

In Schritt 2 können Sie definieren, ob alle Klassen/ Instanzen automatisch zurückgesetzt werden sollen oder ob Sie immer zuerst gefragt werden wollen.

Anmerkung: Alle Veränderungen die auf diese Art und Weise vorgenommen werden können mit dem Disaster Recovery Wizard wieder rückgängig gemacht werden.

Disaster Recovery Wizard

Dieser Wizard ist in der Lage, Änderungen die durch einen der beschriebenen Wizards, oder durch PowerRedefine gemacht wurden rückgängig zu machen. Ausserdem hält er noch zusätzliche Funktionalität zum Reparieren von defekten Klassenbibliotheken bereit.

Dieser Wizard ist nicht Bestandteil des PowerBrowsers, sondern ein eigenständiges Produkt. Er setzt jedoch voraus, daß der PowerBrowser installiert ist. Der PowerBrowser wiederum erkennt diesen Wizard und verwendet ihn. Sollten Sie den Disaster Recovery Wizard nicht besitzen, so können Sie diesen jederzeit von EPS Software beziehen.

PowerBrowser Optionen

Wenn Sie das AddIn-Menü des Klassenbrowsers aufrufen, finden Sie den Punkt PowerBrowser Options. Er führ Sie zu folgendem Dialog:

In der ersten Seite können Sie definieren, ob der PowerBrowser aktiv ist, oder nicht. Dadurch können Sie den PowerBrowser abschalten, ohne ihn deinstallieren zu müssen.

Anmerkung: Bei manchen Optionen muß der Klassenbrowser erneut gestartet werden, um eine Wirkung zu zeigen. Sie sollten dies daher immer machen, wenn Sie Optionen ändern.

Mit Hilfe des ersten Buttons können Sie Standard Bibliotheken definieren. Um dies zu machen, öffnen Sie eine Bibliothek im Klassenbrowser, rufen den Optionen Dialog auf und drücken Set Default Libraries. Von nun an wir diese Bibliothek immer automatisch geöffnet wenn Sie den Klassenbrowser starten und Sie müssen nicht jedesmal eine Bibliothek aus dem GetFile-Dialog auswählen. Mit dem ReSet Default Libraries-Button können Sie diese Definition wieder rückgängig machen.

In der zweiten Seite können Sie Optionen für die TreeViews (Klassenliste/ Klasseninformationen) definieren.

Grundsätzlich können Sie hier definieren, ob alle Äste der TreeViews automatisch expandiert werden sollen. Ist diese Option aktiviert, können Sie etliche der weiteren Optionen nicht mehr wählen. Steht diese Einstellung auf Special Expand, können Sie definieren, welche der Zweige expandiert werden sollen.

Ausserdem können Sie in diesem Dialog definieren, ob geschützte, versteckte und leere Methoden und Eigenschaften gezeigt werden sollen oder nicht.

Speichern der Optionen

Wenn Sie auf OK klicken, gelten die Optionen für die aktuelle Instanz des PowerBrowsers. Um die Optionen abzuspeichern, müssen Sie Set As Default verwenden.

Die Struktur der VCX- und SCX-Dateien

Feldname Typ Definition Beispiel
Platform C (8)

VCX/SCX - Dieses Feld enthält die Plattform für ein Objekt. In Single-Plattform Tabellen gibt es für jedes Objekt einen Datensatz. Cross-Plattform Tabellen speichern für jede Plattform einen eigenen Datensatz pro Objekt. In diesem Fall haben alle Datensätze eines Objektes die selbe UniqueID.

Datensätze, die nicht für eine bestimmte Plattform bestimmt sind, werden als “COMMENT” geführt. Der Header-Datensatz (Datensatz 1) wird ebenfalls als “COMMENT” geführt.

WINDOWS
UniqueID C (10)

VCX/SCX - Eindeutiger Code für individuelle Klassen und Objekte. Sätze für dasselbe Objekt in anderen Plattformen erhalten dieselbe UniqueID. Datensätze, die kein spezifisches Objekt/ keine spezifische Klasse darstellen, enthalten individuelle Beschreibungen über den Typ des Datensatzes. Der Header-Datensatz (Datensatz 1) enthält “Class”.

SCX - Hier wird anstelle von “Class” der String “Screen” im ersten Datensatz gespeichert.

_QVW1055YU
TimeStamp N (10) VCX/SCX - Enthält das Datum und die Zeit des Erstellens in kodierter Form. Dieses Feld wird jedesmal verändert, sobald Änderungen in der Klasse/ dem Objekt gespeichert werden. Datensätze, die kein Objekt/ keine Klasse darstellen, erhalten TIMESTAMP=0. 498761340
Class Memo VCX/SCX - Definiert die Klasse, die verwendet wird, um die Subklasse bzw. das Kindobjekt zu erstellen. mycommandbutton
ClassLoc Memo VCX/SCX - Dieses Feld enthält den relativen Pfad der Klassenbibliothek, in der die Klasse, die in “Class” definiert wurde, gespeichert ist. Wenn “Class” eine Visual FoxPro Basisklasse ist oder die Klasse im aktuellen VCX-File gespeichert ist, bleibt dieses Feld leer. ..\libs\test.vcx
BaseClass Memo VCX/SCX - Hier wird der Name der Visual FoxPro Basisklasse gespeichert, auf der die aktuelle Klasse basiert. Dies stellt die Ausgangsklasse der aktuellen Klassenstruktur dar. commandbutton
ObjName Memo VCX/SCX - Definiert den Namen der aktuellen Klasse/ des aktuellen Objektes. cmdOkButton
Parent Memo VCX/SCX - Definiert das Elternobjekt des aktuellen Objektes. Ist das Objekt kein Unterobjekt eines Containers, ist dieses Feld leer. form1
Properties Memo VCX/SCX - Dieses Memofeld enthält eine Liste aller Properties/ Eigenschaften des Objektes, die nicht dem Default-Wert entsprechen bzw. die in dieser Subklasse überschrieben wurden.

Height = 22
Width = 69
FontSize = 8
Caption = “OK”
Name = “cmdok”

Protected Memo VCX/SCX - Dieses Feld enthält eine Liste aller Properties und Methoden, die protected/ abgekapselt sind.

scAlias
slUpdated
scCodeWord

Methods Memo VCX/SCX - Hier wird der Sourcecode aller Methoden eines Objekts/ einer Klasse gespeichert.

PROCEDURE Click
this.Save()
thisform.Release()
ENDPROC
PROCEDURE Save
wait window “Save”
ENDPROC

ObjCode Memo VCX/SCX - Hier wird die kompilierte Version des Sourcecodes, der in “Methods” definiert wurde, gespeichert.  
Ole Memo VCX/SCX - Dieses Feld enthält binäre Information über OLE-Klassen und -Objekte.  
Ole2 Memo VCX/SCX - Dieses Feld enthält binäre Information über OLE-Klassen und -Objekte.  
Reserved1  

Memo VCX - Dieses Feld wird verwendet, um den Beginn einer neuen Klasse zu definieren. In diesem Fall enthält das Feld das Wort “Class”. Ansonsten ist dieses Feld leer.

SCX - Nicht verwendet.

Class
Reserved2 Memo VCX/SCX - Hier wird die Anzahl der Datensätze gespeichert, die zu dieser Klasse gehören. Dabei wird auch der aktuelle Datensatz mitgezählt. Dieses Feld wird nur verwendet, wenn eine neue Klasse definiert wird, ansonsten ist es leer. Hat eine Klasse/ ein Objekt keine Kindobjekte, ist der Wert dieses Feldes “1”. 2
Reserved3 Memo

VCX - Dies ist eine Liste aller User-definierten Properties und Methoden sowie deren Beschreibung. Die Beschreibung ist vom Property-/ Methodennamen durch ein Leerzeichen getrennt. Array-Properties werden durch ein führendes “^” gekennzeichnet. Methoden beginnen mit einem “*”.

SCX - Nicht verwendet. ScAlias

snResult
slUpdated
^saMyArray
*MyMethod

Reserved4 Memo

VCX - Hier wird der relative Pfad und Dateiname eines Bitmaps (BMP) für das Icon der aktuellen Klasse gespeichert.

SCX - Nicht verwendet.

..\bmps\ok.bmp
Reserved5 Memo

VCX - Hier wird der relative Pfad und Dateiname eines Bitmaps (BMP) für das Klassenbrowser- und Projekt-Manager-Icon der aktuellen Klasse gespeichert.

SCX - Nicht verwendet.

..\bmps\ok.bmp
Reserved6 Memo VCX/SCX - Hier wird der ScaleMode (Pixels/ Foxels) der aktuellen Klasse/ des aktuellen Objektes gespeichert. Pixels
Reserved7 Memo VCX/SCX - In diesem Feld wird die Klassenbeschreibung, die im Klassen-Info Dialog definiert werden kann, gespeichert. Diese Klasse speichert das aktuelle Formular.
Reserved8 Memo VCX/SCX - Ist der aktuelle Datensatz eine Klasse, wird der relative Pfad und Name einer #INCLUDE - Datei gespeichert. Für Kindobjekte wird hier der String “NOINIT” gespeichert, wenn NoInit im Klassen-Info Dialog angekreuzt wurde.

..\vfp\foxpro.h

NOINIT

User Memo VCX/SCX - Dieses Feld wird von Visual FoxPro nicht verwendet und kann vom Anwender nach Belieben verwendet werden. *:GenX