Session D-OEXP

ObjectExplorer
und andere PublicDomain- und Shareware-Tools

Markus Egger
EPS-Software/ MTI-Software/ ProLib Software


EINLEITUNG


Überblick

Diese Session gibt einen Überblick über verfügbare PublicDomain- und Sharewaretools für FoxPro und Visual FoxPro.

Dabei wird auch auf die Funktionsweise und Handhabung dieser Tools eingegangen. Das Hauptaugenmerk liegt auf dem ObjectExplorer.

Die meisten dieser Utilities sind auch auf der Begleitdiskette enthalten.

Anmerkung: Da ich natürlich bemüht bin, Ihnen eine Sammlung der neuesten Tools zur Verfügung zu stellen, kann es passieren, daß die auf der Diskette enthaltenen Programme bzw. deren Versionen nicht 100%ig mit den hier beschriebenen übereinstimmen.

 


Ein paar allgemeine Anmerkungen zum PublicDomain- und Sharewarekonzept

PublicDomain-Software und Shareware sind prinzipiell verschiedene Dinge, auch wenn sie ähnlich behandelt und oft fälschlicherweise in eine Topf geworfen werden (siehe unten).

Die Gründe, weshalb Autoren ihre Produkte als Share- oder Freeware weitergeben, sind verschieden. Einige erhoffen sich, durch PublicDomain-Produkte bekannt zu werden, oder über Umwege Geld zu verdienen (Umwegrentabilität). Shareware sind meist ganz normale Programme, die durchaus auch als kommerzielles Produkt vertrieben werden könnten, (teilweise wird das auch zusätzlich gemacht). Dadurch, daß für das Produkt meist keine oder nur geringe Werbe- und Vermarktungskosten anfallen, ist der Preis im Normalfall sehr günstig.

Ich versuche bei jedem Produkt das ich Ihnen hier vorstelle genau zu eruieren, ob es sich um Share- oder Freeware handelt. Ich kann für diese Aussagen jedoch naturgemäß keine Gewähr übernehmen.

PublicDomain-Software (auch genannt Freeware) wird vom Autor an die Öffentlichkeit weitergegeben, ohne dafür eine Gegenleistung zu verlangen. Das bedeutet, daß Sie im Normalfall die Software nach belieben kopieren und weitergeben dürfen, ohne dafür bezahlen zu müssen.

Das bedeutet jedoch nicht, daß der Autor alle Rechte an Sie abgibt. Ganz im Gegenteil! Er besitzt nach wie vor alle Rechte an seinem Produkt.

Shareware darf ebenso wie Freeware nach belieben kopiert und weitergegeben werden. Der Unterschied besteht jedoch darin, daß Sie dem Autor eine meist geringe Gebühr bezahlen müssen, wenn Sie das Produkt auch verwenden.

Das Sharewarekonzept kommt ursprünglich aus den USA, wo es auch nach wie vor viel populärer ist als in Europa. Das liegt vor allem auch daran, daß in den USA die Registrierungsrate bei weitem höher ist. Das schreckt europäische Autoren natürlich ab. Ich möchte daher die Gelegenheit nutzen, Sie aufzufordern, Shareware auch wirklich zu registrieren.

Die Grenze zwischen Shareware und Freeware ist oft gar nicht so einfach zu bestimmen. Viele Produkte (wie z.B. PKZIP) sind für den privaten Gebrauch Freeware. Sobald man sie jedoch geschäftlich nutzt, werden sie zur Shareware, und man muß die Gebühr an den Autor entrichten.

Es gibt auch einige witzige Abarten von Shareware. Diese könnte man eigentlich als PublicDomain bezeichnen, die Autoren verlangen jedoch eine Gegenleistung vom Anwender.

Die erste dieser Abarten war SmileWare. Das bedeutet: Verwenden Sie das Produkt, so oft Sie möchten, und seien Sie als Gegenleistung ein fröhlicher Mensch und lächeln (smile) Sie.

Etwas später gab es dann die CardWare. In diesem Modell erwarten die Autoren im Falle der Nutzung eine möglichst witzige Postkarte von Ihnen.

Ich persönlich bin ein Fan von BierWare. Das bedeutet: Verwenden Sie das Programm so oft Sie möchten. Sollten Sie jedoch das Pech haben, mir irgendwo zu begegnen... bezahlen Sie mir ein Bier. <s>

 


ObjectExplorer

 

Autor:

Markus Egger

Art der Software:

PublicDomain (BierWare <s>)

Aktuelle Version:

1.0

FoxPro-Version:

Visual FoxPro 3.0

 

Der ObjectExplorer ist ein Tool, das Ihnen das Untersuchen von Objekten im Speicher erleichtert. Sie können existierende Objekte jedoch nicht nur untersuchen, Sie können Objekte auch verändern oder deren Methoden und Events abfeueren.

Um den ObjectExplorer erfolgreich einzusetzen, sollte man grundsätzliche Kenntnisse über das Visual FoxPro - Objektmodell haben. Haben Sie diese nicht, sollten Sie zuerst Objekt-Sessions besuchen, oder die dazugehörenden Unterlagen in dieser Mappe lesen.

Grundsätzlich dient der ObjectExplorer zum Untersuchen von Objekten, deren Properties/ Methoden und deren Unterobjekten mit all ihren Properties/ Methoden und Unterobjekten, usw...

Nahezu jedes Objekt in Visual FoxPro ist ein sogenannter Container. Ein einfaches Beispiel dafür wäre ein Fenster, das Buttons und Textfelder, usw... enthält.

In unserem Beispiel-Bildschirmfoto sehen wir als Hauptcontainer das Visual FoxPro - Hauptfenster, das automatisch den Objektnamen _Screen hat. Daß es sich bei diesem Eintrag um ein Objekt handelt, sehen Sie an dem Buch-Symbol. Dieses _Screen-Objekt hat diverse Eigenschaften und Methoden, und natürlich Unterobjekte.

Das erste Unterobjekt, das wir im obigen Beispiel sehen, ist das Objekt ActiveForm. Dabei handelt es sich um das jeweils aktive Fenster innerhalb FoxPro’s. (In unserem obigen Beispiel ist es das ObjectExplorer-Fenster, das muß jedoch nicht so sein.). Dieses Fenster hat weitere Unterobjekte, nämlich Buttons, Textfelder, OLE-Controls, usw...

All die Objekte, die wir bisher gesehen haben (gekennzeichnet durch das Buch-Symbol), haben - wie bereits erwähnt - auch Eigenschaften und Methoden (gekennzeichnet durch einen roten Ball).

Methoden erkennen Sie durch den String [Method] im Anschluß an den Methodennamen.

Eigenschaften (Properties) zeigen nicht nur deren Namen, sondern auch den aktuellen Wert der Eigenschaft. So können Sie z.B. die Eigenschaft Caption des Objektes _Screen ansehen, und werden bemerken, daß der aktuelle Wert mit dem tatsächlichen Fenstertitel von Visual FoxPro übereinstimmt.

Das ist ein sehr leistungsstarkes Tool beim debuggen Ihrer Applikationen.

Als default wird immer das Objekt _Screen untersucht. Sie können jedoch jederzeit auf ein anderes Objekt wechseln, wenn Sie möchten. Um das zu tun, geben Sie einfach einen neuen Namen in das Textfeld ein, oder wählen ein Objekt aus der Liste aus.

In den meisten Fällen wird Ihnen jedoch _Screen genügen, da dieses Objekt das Unterobjekt ActiveForm hat. Dieses Unterobjekt ist immer das gerade aktive Fenster. Der einfachste Weg ist also, ein Fenster auf den Bildschirm zu bringen und danach Anzeigen im Explorer-Toolbar zu drücken. Somit brauchen Sie den wirklichen Objektnamen nicht zu wissen, was die Arbeit ungemein erleichtert.

Sie können sich Eigenschaften jedoch nicht nur ansehen, sondern auch verändern. Sie könnten z.B. den Fenstertitel von Visual FoxPro ändern, indem Sie die Eigenschaft Caption des Objektes _Screen suchen, einen Doppelklick darauf machen, und im nun erscheinenden Dialog den neuen Text eingeben. Nachdem Sie auf OK klicken, ändert sich sofort der Fenstertitel von Visual FoxPro.

Sie bekommen für die meisten Eingenschaftstypen einen Dialog. Die einzige Ausnahme sind logische Eigenschaften. Diese ändern nach dem Doppelklick den Wert in das Gegenteil (.T. wird .F. und umgekehrt).

Sie können alle Methoden und Events eines Objektes mit einem simplen Doppelklick abfeuern. So könnten Sie z.B. die Refresh-Methode des _Screen-Objektes doppelklicken, um einen Screen-Refresh durchzuführen. Auch für Methoden bekommen Sie eine Dialogbox, da es ja sein könnte, daß eine Methode Parameter erwartet. Diese können in diesem Dialog eingegeben werden.

Anmerkung: Beachten Sie, daß Sie zwar Events abfeueren können, (wie z.B. Click) dies bedeutet jedoch nicht, daß der Event auch wirklich ausgelöst wird, sondern nur der zum Event gehörende Code. Das kann in seltenen Fällen zu unterschiedlichen Ergebnissen führen. Es könnte z.B. sein, daß ein Programmierer davon ausgeht, daß der Mauszeiger über einem Objekt sein muß, damit der MouseMove-Event ausgelöst wird. Wenn Sie diesen Event nun mit Hilfe des ObjectExplorers auslösen, könnte es sein, daß Berechnungen, die den Mauszeiger betreffen, plötzlich falsch sind.

Eine sehr günstige Eigenschaft vonVisual FoxPro ist, daß jedes Objekt eine SaveAsClass-Methode hat. Dies bedeutet, daß Sie nach Belieben Eigenschaften eines gerade existierenden Objektes verändern können und danach durch Doppelklick auf die SaveAsClass-Methode in einer Klassenbibliothek abspeichern.

Tip: Versuchen Sie, die SaveAsClass-Methode des Objektes _Screen abzufeuern, und Sie erhalten eine Klasse des kompletten FoxPro-Schirmes.

Der ObjectExplorer kann nicht nur fertige Objekte im Speicher untersuchen, sonder er funktioniert bereits während der Erstellung eines Objektes. Sie können z.B. ein Formular (modi form ...) editieren und mit dem ObjectExplorer die Struktur des selben erkunden.

Wenn Sie den ObjectExplorer als Builder verwenden, werden die Methoden und Events nach einem Doppelklick nicht abgefeuert, sondern Sie können den Sourcecode editieren.

Sie haben zwar die Möglichkeit, einen direkten Objektnamen einzugeben, um ein Objekt im Speicher zu erkunden, diesen werden Sie in der Praxis jedoch oft nicht wissen. Daher bevorzuge ich es, die meisten Objekte durch das _Screen-Objekt zu untersuchen. Versuchen Sie folgendes Beispiel nachzuvollziehen:

Starten Sie den ObjectExplorer und danach z.B. den Klassenbrowser. Machen Sie das Klassenbrowser-Fenster zum aktuellen Fenster (klicken Sie einfach darauf). Klicken Sie nun auf Anzeigen (oder Refresh, je nach eingestellter Sprache, da der ObjectExplorer 5 verschiedene Sprachen unterstützt), und der gesamte Fensterinhalt des ObjectExplorers wird neu aufgebaut. Untersuchen Sie nun das Unterobjekt ActiveForm des Objektes _Screen. Sie werden feststellen, daß es sich dabei tatsächlich um die komplette Struktur des Klassenbrowsers (mit allen Eigenschaften und Methoden) handelt. Bedenken Sie, daß wir keinerlei Sourcecode des Klassenbrowsers zur Verfügung haben. Verändern Sie nun einige Eigenschaften des Browsers, wie z.B. den Fenstertitel, die Hintergrundfarbe, ToolTip-Texte, Bitmaps in den Buttons, usw... Nun können Sie den gesamten Browser mit Hilfe des SaveAsClass-Dialoges als Klasse abspeichern.


AddProperty

Autor:

Paul Bienick

Art der Software:

PublicDomain

Aktuelle Version:

1.0

FoxPro-Version:

Visual FoxPro 3.0

 

Dieses Tool ermöglicht Ihnen das Zufügen von Properties zu einem existierenden Objekt.

Dieses Produkt wurde in C geschrieben und liegt als FLL vor. Die FLL enthält im Wesentlichen eine Funktion genannt AddProp.Diese Funktion erwartet 3 Parameter: 1) Den Namen des Objektes, dem Sie ein Property zufügen möchten. 2) Den Namen des neuen Properties und 3) den Wert des neuen Properties. Der 3. Parameter legt auch Gleichzeitig den Typ des neuen Properties fest.

 

Beispiel:


CEE - COB Editor Extensions

Autor:

Ryan Katri

Randy Wallin

Art der Software:

Shareware

Aktuelle Version:

3.0

FoxPro-Version:

Visual FoxPro 3.0

 

 

 

Dieses Shareware-Tool erweitert die Möglichkeiten, die Ihnen der FoxPro-interne Editor bietet. Das Hauptaugenmerk liegt dabei auf den Makros. CEE kommt mit mehr als 80 vordefinierten Makros. Sie können diese Makros jedoch jederzeit verändern und löschen, oder neue Makros hinzufügen. Makros werden über einen von Ihnen definierten Code angesprochen. Tippen Sie in ihrem Sourcecode z.B. FUN, wird ein kompletter Funktions-Header mit Kommentaren, usw... eingefügt, und der Cursor steht genau auf der Position, auf der Sie weiterschreiben werden, um z.B. ein Parameter-Statement zu definieren. Tippen Sie DOC, wird eine komplette DO CASE...ENDCASE - Struktur eingefügt, usw...

CEE bietet jedoch auch weitere Möglichkeiten wie komprimierte Ansichten des Sourcecodes, eine erweiterte Suchfunktion, ein Sourcecode-Formatier-Feature (in FoxPro 2.x bekannt als "Beautyfier"), uvam...


GAPP -- Griebel's Aggregate Property Pusher

Autor:

Andy Griebel

Art der Software:

Shareware

Aktuelle Version:

1.0

FoxPro-Version:

Visual FoxPro 3.0

 

 

Dieses Tool von Andy Griebel ist nichts anderes als ein Builder (Steuerelementassistent) in Form eines Toolbars, der ständig zur Verfügung steht. Dieses Utility ist vor allem hilfreich, wenn man mehrere Objekte auf einmal verändern möchte. Dies ist nämlich in Visual FoxPro ziemlich umständlich geworden, da man über das Eigenschaftenfenster (Property-Window) jeweils nur ein Objekt verändern kann.

GAPP spielt all seine Stärken aus, wenn es um das Verändern von Schriftattributen geht. Es gibt jedoch auch Funktionen zum Verändern von Enabled-/ Disabled-Eigenschaften, 3D-Effekten und Durchsichtig/Undurchsichtig Properties.

 


GenMenuX

Autor:

Andrew Ross MacNeill

Art der Software:

PublicDomain

Aktuelle Version:

3.0

FoxPro-Version:

FoxPro 2.x und Visual FoxPro 3.0

Auch für dieses Produkt gibt es eine eigene Session und ausführliche Unterlagen in dieser Mappe.


GenRepoX

Autor:

Markus Egger

Art der Software:

PublicDomain (BierWare <s>)

Achtung! Das Hauptprodukt ist PublicDomain. Es gibt jedoch einige Treiber, die als kommerzielles Produkt bzw. als Shareware erschienen sind.

Aktuelle Version:

2.0

FoxPro-Version:

FoxPro 2.x und Visual FoxPro 3.0

Da ich eine eigene Session über GenRepoX halte, beschreibe ich dieses Produkt hier nicht erneut, sondern verweise Sie an die zusätzlichen (und sehr ausführlichen Unterlagen) in dieser Mappe...

MultiPrp - A multi-object Property Changer

Autor:

Rick Strahl

Art der Software:

PublicDomain

Aktuelle Version:

1.0

FoxPro-Version:

Visual FoxPro 3.0

 

 

MultiPrp folgt einem ähnlichen Prinzip wie GAPP. MultiPrp ist jedoch kein Toolbar, sondern ein Builder im üblichen Sinne. Das bedeutet, daß Sie MultiPro entweder direkt mit DO MultiPro starten, oder durch einen rechten Mausklick. Der Unterschied zu GAPP besteht im Wesentlichen darin, daß GAPP eine sehr einfache Benutzerführung hat, jedoch auf einige vordefinierte Properties beschränkt ist. MultiPrp seinerseits hat eine eher spartanische Ausstattung, kann aber mit allen existierenden Properties umgehen, (sogar anwenderdefinierte).

SuperClass Utility

Autor:

Ken Levy

Art der Software:

PublicDomain

Aktuelle Version:

1.0

FoxPro-Version:

Visual FoxPro 3.0

 

Dies ist wohl eines der kleinsten, und gleichzeitig eines der nützlichsten Utilities, das ich jemals verwendet habe. Es ist im Wesentlichen ein Toolbar mit 3 Buttons. Dieser Toolbar lauert unbemerkt vom Programmierer darauf, daß dieser den Code einer Methode oder eines Events editiert. Ist dies der Fall, wird der Toolbar sichtbar und stellt uns zwei ungeheuer nützliche Funktionen zur Verfügung:

Ken Levy ist so nett, uns die Klassen und den Sourcecode dieses Tools zur Verfügung zu stellen. Das bedeutet, daß man bequem Subklassen dieses Tools mit zusätzlicher Funktionalität erstellen kann. Sie könnten theoretisch auch direkt im SourceCode Änderungen durchführen. Das sollten Sie jedoch nicht machen, da Sie sonst nicht mehr auf neuere Versionen updaten können.


XiLights

Autor:

Justin Nye/ XiTech

Art der Software:

Shareware

Aktuelle Version:

1.03

FoxPro-Version:

FoxPro 2.x und Visual FoxPro 3.0

 

 

XiLights ist ein sogenanntes Syntax-Coloring-Tool. Das bedeutet, daß Ihr Quelltext eingefärbt wird, sobald Sie ihn schreiben. Dabei bekommt jedes Wort eine eigene Farbe, abhängig von dessen Bedeutung. Normale FoxPro - Schlüsselwörter bekommen eine eigene Farbe, Konstruktoren bekommen eine eigene Farbe, Kommentare werden umgefärbt, usw...

Visual C - Programmierer wissen diesen Komfort schon lange zu schätzen, da diese Funktionalität in Visual C automatisch zur Verfügung steht. Für Visual FoxPro war Syntax-Coloring anfangs auch geplant, wurde dann jedoch aus Zeitgründen gestrichen.

Syntax-Coloring hört sich Anfangs nach einer unnötigen Spielerei an. Das ist es aber nicht, ganz im Gegenteil. Dieses Tool hilft Ihnen dabei, Ihren Sourcecode schneller zu schreiben als bisher, und zwar ganz einfach dadurch, daß Sie nicht ständig kontrollieren müssen, ob Sie sich vertippt haben oder nicht. Schlimmstenfalls tippen Sie einen Fehler, bemerken ihn nicht und kompilieren das Programm. Zur Laufzeit bemerken Sie den Fehler, brechen das Programm ab, korrigieren den Vertipper und müssen erneut kompilieren. Dieses Szenario gehört mit XiLights der Vergangenheit an. Sollte ein Schlüsselwort die Farbe nicht ändern, wissen Sie sofort, daß Sie einen Fehler gemacht haben. Weiters hilft Ihnen XiLights Code zu lesen, da Sie mit einem Blick die Bedeutung des Sourcecodes erfassen können. Sie können die Farben für die unterschiedlichen Codeteile selbst definieren.