Session D-CODE

Codebook 3.0
Erste Stolperübungen

Hartmut "Teddy" Billewicz
Wizards & Builders GmbH


EINFÜHRUNG

Da viele Leute mit der Step-by-Step Anleitung von Paul Biennick Probleme haben hier einige Vorübungen, die ein bißchen Geschmack für die Codebook Praxis geben sollen und durch die man einen langsameren Einstieg in die CB3-Praxis bekommen kann. Folgendes soll erreicht werden:


Schritt: Dateistruktur erweitern:


Schritt: View erstellen für neue DBF

 

Einstellung duplizieren

Die abgebildeten Einstellungen duplizieren


Schritt: Erweitern der CB3 Datenumgebung:

Im CD Projekt unter CODE das Programm CDATAENV.PRG modifizieren:

Die folgende Klasse wird für Reindizier- und Pack-Funktionen benuzt und muß erweitert werden.

 

*************************************************************

Verändern auf:

*************************************************************

 

************************************************************

Für die Klasse BuchEnvironment läßt sich CustomerEnvironment

als Quelle benutzen, da ähnlich in Struktur (eine Datei, keine Relationen)

************************************************************

 

*********************************************************

In der folgenden Section eine Klasse für Buch einstellen

*********************************************************

Nach diesem Schritt kann man das Programm laufen lassen mit DO MAIN (ohne das Projekt zu erstellen). Falls es nicht geht, dann erst DO STARTCB laufen lassen und dann DO MAIN (normalerweise ist das aber schon aktiv).

Unter FILE und Database Utilities kann man jetzt reindizieren und packen (einschließlich der Tabelle BUCH.DBF).


Schritt: Business Object für unser Formular erstellen

Sicherstellen, daß CCONTROLS.VCX und CCUSTCTL.VCX in den VFP OPTIONS registriert sind (VFP unter TOOLS, OPTIONS, Visual Class Libraries) - \cdbk30\common30\libs\...

Ein Business Object erstellen, damit wir was zum aufrufen haben.

(vorher vielleicht CUSTOMEROBJ in Klassenbibliothek ABIZNESS anschauen)

Im Project unter Klassen und Bibliothek ABIZNESS eine neue Klasse BuchObj erstellen (sie auch Step-by-Step Nr. 4)

basieren auf Klasse CBIZOBJ in CBIZNESS.VCX (unter \common30\libs)

Das Ding hat automatisch (vererbt) CsessionEnvironment und CDELoader Objekte.

Das cDataEnvironment property im CDELoader dieser neuen Klasse auf BuchEnvironment stellen

Unter Toolbar Button "View Classes" die anderen registrierten ansteuern, insbesondere cContrls.

Damit ein paar Felder auf die BuchObj Klasse droppen und mit dem control source v_buch.cid, v_buch.cTitle, v_buch.cAuthorId, usw. versehen. Aus dem Feld für v_buch.CID ein nur-lese Feld machen (im property sheet data tab read-only auf .t. setzen). In der Praxis sollte dieses Feld dem Anwender wahrscheinlich gar nicht gezeigt werden.

Klasse abspeichern


Schritt: Formular(klasse) erstellen

Eine neue Klasse (soll unser eigentliches Formular werden) erstellen, basierend auf cBizObjMaintForm in CFORMS.VCX (unter \cdbk30\common\libs\). Diese dann im Klassendesigner vervollständigen. Mit rechter Maustaste auf "Edit", dann 2. Seite (Data Entry) anklicken. Mit Drag'n Drop unsere Business Object Klasse "BuchObj" (in der ABIZNESS.VCX) auf diese 2. Seite der Formularklasse fallen lassen.

Mit Drag 'n Drop unsere Klasse v_buch in die Formularklasse reinziehen.

Auf die erste Seite (die Suchmaske) aus CCONTRLS.VCX die Klasse cTextBox zweimal droppen, damit wir Suchfelder für Author-ID und Titel bekommen können.

Das Formular kann folgenderweise ausprobiert werden (auch ohne vorher die Toolbar oder das Hauptmenu: zu erweitern:

Das CD Programm ablaufen lassen mit "DO MAIN". Ohne sonst irgenwas aufzurufen vom Menüpad Utilities Suspend auswählen (Hinweis: Das Utilities Menüpad erscheint nur, wenn die Datei DEBUG.TXT im aktiven Verzeichnis existiert). In diesem suspendierten Zustand im Befehlsfenster eintippen =DoForm("BuchForm"). Wenn dies aus irgendeinem Grunde schiefläuft, das gleiche einfach mit =DoForm("CustomerForm") versuchen. Damit müßte es laufen.


Schritt: Toolbarerweiterung:

Im Projekt CD unter Klassen in der Klassenbibiliothek ATOOLBAR (Application Toolbar) die Klasse MAINTOOLBAR modifizieren:

Mit Cut & Paste einfach einen der Buttons kopieren (damit automatisch genauso subgeclassed wie notwendig).

Im Property Sheet unter Layout dem PICTURE property eine neue Bitmap zuordnen (z.B. in \vfp\graphics\bmps\fox\library.bmp)

Tooltiptext auf BÜCHER umstellen. NAME unter OTHER auf cmdBuch stellen

cForm custom property auf BuchForm (damit wird der Aufruf des entsprechenden Formulars gesteuert).

Methoden werden keine gebraucht (nur die Parent Methoden werden ausgeführt)

An dieser Stelle das Programm nur ausführen, wenn das Business Object, d.h. unsere Formularklasse schon existiert. Die Benutzung der Toolbar ohne die ensprechende Klasse führt zu Crash wenn Bücher angeklickt wird (oder werden - je nachdem wie Sie es mit der deutschen Sprache halten).


Schritt: Menüerweiterung:

Im Projektmanager unter dem KLASSEN Tab in der Bibliothek AMENUS.VCX die Klassee MAINMENU modifizieren

Mit der rechten Maustaste das Mainmenu Objekt anklicken und Builder auswählen (Steuerelementassisten).

Jetzt mit Hilfe des Menu builders das Menü erweitern:

Mit der rechten Maustaste auf dem Administration Pad "Add Bar..." auswählen (Hinweis: je nachem worüber man die rechte Maustaste aktiviert reagiert der Menu Builder mit anderen Menüdialogen - bitte anschauen).

Dann auf der "Item"-Seite des Dialoges auf den Command Button "New Class" (den rechten - siehe ToolTip). Als Namen "AdminBuchBar" eingeben und zum speichern per Dialog die AMENUS.VCX Klassenbibliothek (unter \cdbk30\cd\libs\) auswählen (Basierend auf CBAR is OK). Mit dem "Schließen" Commandbutton (den linkesten) diesen Dialog schließen. Mit der linken Taste in das leere neue Feld klicken und "\<Bücher" eintippen.

Zum Spaß bitte noch mit der rechten Mautaste auf die neue Bücher bar gehen und nach ober verschieben (Drag'n Drop) um alphabethisch in die richtige Position zu kommen

Damit kann jeder Menüeintrag beliebig verschoben werden (Cool!).

Die dickpfeiligen Commandbuttons des Menübuilders beziehen sich auf die Darstellung des Menüs. Bei einer komplizierten Menüstruktur läßt sich alles in allen Richtungen scrollen, bzw. wieder in die HOME-Position zurückbringen.

Mit dem "Schließen" Command Button des Menü Builders diesen selber schließen (Achtung: da tut sich einiges im Hintergrund - nicht nervös werden). Dann nacheinander jede der nun noch im Classdesigner offenen Klassen abspeichern (am einfachsten mit Ctrl-W).

Vom Befehlsfenster (auch wenn der Projektmanager offen ist) mit DO MAIN das Programm ablaufen lassen.

Beispiel von Fehlern die Auftauchen können und wo man sich an ganz neue Debugging Methoden gewöhnen muß:

 


Durch den (relativ komplizierten) Überbau des CB3 Frameworks passieren viele Fehler "auf höherer Ebene". Die Fehlermeldungen beziehen sich auf das lokale Problem (nicht z.B. auf die falschen Metadaten) und sind oft recht unbrauchbar. Dies ist aber ein Problem, welches sich in jeder Programmierumgebung ergibt, in der mit vielen sehr generischen Elementen gearbeitet wird. Als persönliches Beispiel kann ich da TRO 2.6 (Tom Rettig's Office) erwähnen.


Schritt: Formularbau

[Dieser Teil war zur Drucklegung leider noch nicht verfügbar und kann per Compuserve vom Referenten angefordert werden]

 


Codebook-Menüs