ObjectGEM-Einfhrung & Dokumentation Version 1.03 vom 25.07.1993 Copyright (c)1993 by Softdesign Computer Software written by Thomas Much ACHTUNG: Diese Dokumentation ist z.Z. noch nicht vollst„ndig! Trotzdem drfte ObjectGEM bereits jetzt fr etwas erfahrenere Programmierer eine grože Hilfe darstellen. Die komplette Anleitung wird demn„chst als Update erscheinen. Inhaltsverzeichnis ------------------ I Einleitung Willkommen bei ObjectGEM Shareware und Registrierung Installation: Unit und Online-Hilfe Hotline und Updates II Schritt fr Schritt durch GEM - Eine Einfhrung in ObjectGEM Schritt 1: Eine Minimalanwendung Schritt 2: Text im Fenster ausgeben Schritt 3: Linien im Fenster zeichnen Schritt 4: Die Menleiste Schritt 5: (Fenster-)Dialoge Schritt 6: Grafik anzeigen (Kollektionen) Schritt 7: Laden & Speichern Schritt 8: Eingaben berprfen (Validator-Objekte) Schritt 9: Ein paar kleine Verbesserungen Schritt 10: Fenster rollen (TScroller) Schritt 11: Zeichnen optimieren Schritt 12: Profiles (INF-Dateien) III ObjectGEM-šbersicht Allgemeine Programmierrichtlinien Wichtige Unterschiede zu ObjectWindows IV Anhang Geplante Erweiterungen Anwenderprofil ----------------------------------------------------------------------- TEIL I - Einleitung WILLKOMMEN BEI OBJECTGEM Auf dem Atari ST/STE/TT/Falcon bricht ein neues Zeitalter des Software-Engineering an! Aber sehen Sie selbst... ObjectGEM ist eine Unit fr PurePascal, mit der recht einfach komplexe GEM-Programme erstellt werden k”nnen. Durch die Žhnlichkeit zu ObjectWindows unter Borland Pascal 7.0 k”nnen die dort erstellten Programme leichter portiert werden, und wer ObjectWindows programmieren kann, wird es auch mit ObjectGEM nicht schwer haben. Aber auch alle anderen werden in ObjectGEM eine professionelle und schnelle Hilfe finden. Mit ObjectGEM wird es also m”glich, daž alle Programme, die z.Z. auf GEM verzichten, weil sie z.B. nur irgendwelche Statusausgaben machen, korrekt und mit nur geringem Mehr- aufwand unter GEM implementiert werden (z.B. auf der Grundlage von HELLO.PAS). Aužerdem k”nnen Dialoge mit allen State-of-the-Art-Buttons etc. versehen werden, der Rest (Verwaltung, Redraw, Auswertung etc.) geschieht dann automatisch! Wem die Gr”že von ObjectGEM nicht pažt, der m”ge die Tatsache bedenken, daž objektorientierte Programmierung eigentlich noch nie auf den Speicherbedarf geachtet hat (das scheint in der Natur der Sache zu liegen...). Dafr ist der Funktionsumfang aber betr„chtlich, denn selbst das kleinste ObjectGEM-Programm MINIMAL.PAS weiž bereits, wie ein komplettes GEM-Fenster zu funktionieren hat (incl. +,+,+ etc.). Aužerdem kommt es in der heutigen Zeit mehr darauf an, in m”glichst kurzer Zeit Programme zu schreiben, die leicht zu bedienen sind, sicher laufen und gut erweitert bzw. gewartet werden k”nnen; der Speicherbedarf tritt dabei zunehmend in den Hintergrund. Trotzdem belegt ObjectGEM immer nur soviel Speicher wie gerade n”tig, da so ziemlich alles dynamisch verwaltet wird. UND AUSSERDEM: Wer einmal mit ObjectGEM angefangen hat, wird bestimmt nicht so schnell wieder damit aufh”ren! ObjectGEM ist an neuere AES-Versionen (4.0x) und an MultiTOS an- gepažt, d.h. unter MultiTOS ist es z.B. m”glich, Dialoge im Hinter- grund zu _bedienen_ (Buttons anklicken, Edit-Cursor mit der Maus verschieben etc., siehe "cs_WorkBackground")! Die z.Z. beiliegende Online-Help und die Anleitung sind noch l„ngst nicht komplett, zeigen aber schon recht gut den zu er- wartenden Umfang (schauen Sie doch mal unter "ObjectGEM" und dann bei "Konstanten", "Objekt-Hierarchie" nach oder suchen Sie doch einfach mal nach "Search"). Im Moment sei deshalb noch auf das "ObjectWindows-Programmierhandbuch" von Borland Pascal 7.0 ver- wiesen, in dem man die Ideen, die auch hinter ObjectGEM stecken, nachlesen kann. Teilweise kann das dort beschriebene sogar direkt bernommen werden. Und wen es interessiert: Ein Test von ObjectGEM 1.00 findet sich im ST Magazin 7/93, S.22 ff.! Nun aber genug der Vorrede, viel Spaž und Erfolg mit ObjectGEM! Thomas Much, Karlsruhe im Juli 1993 SHAREWARE UND REGISTRIERUNG ObjectGEM ist ein Shareware-Produkt, d.h. die Shareware-Version (erkennbar an der Alertbox beim Programmstart und -ende) darf beliebig weitergegeben werden, sofern die Unit mit den dazuge- h”rigen Dateien (Beispielprogramme, Dokumentation etc.) _zusammen_ weitergegeben wird. Jeder kann dann in Ruhe ein bižchen mit ObjectGEM herumprobieren. Wer allerdings l„nger mit ObjectGEM programmiert (egal, ob die Programme ver”ffentlicht werden oder nicht), muž sich registrieren lassen. Die Registrierung kostet *** DM 50,-- ***. Das ist - im Vergleich zu kommerziell angebotenen Bibliotheken - nicht sehr viel. Trotzdem drfen Programme, die mit einer registrierten ObjectGEM-Version erstellt wurden, ohne etwaige Lizenzgebhren weitergegeben, ver- kauft etc. werden (die auf Ihren Namen registrierte Unit darf natrlich _nicht_ weitergegeben werden). šberweisen Sie dazu DM 50,-- auf das Konto Thomas Much, Sparkasse Karlsruhe, Kto. 935 30 95, BLZ 660 501 01 (Ihre ADRESSE nicht vergessen!!!) oder schicken Sie einen Verrechnungsscheck ber diesen Betrag an Softdesign Computer Software c/o Thomas Much, Gerwigstraže 46, 76131 Karlsruhe Sie erhalten dann umgehend die neueste ObjectGEM-Version, die speziell auf Ihren Namen registriert ist. Natrlich erscheinen dann beim Programmstart und -ende auch keine Alertboxen mehr. Aužerdem haben Sie dann die M”glichkeit, jederzeit mit einer formatierten 3,5" 720KB-Diskette und einem frankierten und adressierten Rckumschlag ein evtl. vorhandenes ObjectGEM- Update zu bekommen. Kosten wird dies nur dann etwas, wenn der Registrierpreis steigen sollte (das wird der Fall sein, falls es einmal ein gedrucktes Handbuch gibt...). Der Vertrieb ber PD-Versender, Mailboxen, Diskettenzeit- schriften etc. ist erlaubt und ausdrcklich _erwnscht_! Die Shareware-Version hat keinerlei Einschr„nkungen, der einzige Unterschied zu einer registrierten Version besteht aus den Alert- boxen beim Programmstart und -ende, die darauf hinweisen, daž diese Version noch nicht registriert ist... INSTALLATION: UNIT UND ONLINE-HILFE Die Installation sollte keine grožen Probleme bereiten. Kopieren Sie einfach GOBJECTS.PPU in Ihr Unit-Verzeichnis (dort, wo auch TOS.PPU, GEM.PPU etc. stehen) und GOBJECTS.HLP in das Help- Verzeichnis (dort sollten auch PP.HLP etc. zu finden sein). Fertig! Die Unit wird nun wie gewohnt mit der uses-Klausel eingebunden. Um in die šbersicht der Online-Hilfe zu gelangen, suchen Sie unter "Help - Help..." am besten nach "ObjectGEM" oder "GObjects". Ansonsten bringen Sie den Cursor auf eine fragliche Konstante oder Methode und drcken , woraufhin eine Erkl„rung dazu erscheinen sollte (im Moment sind allerdings noch nicht alle Methoden erl„utert...). HOTLINE UND UPDATES Falls Probleme mit oder Fragen zu ObjectGEM auftauchen sollten, k”nnen Sie dies dem Autor direkt mitteilen. Bitte benutzen Sie den telefonischen Weg nur in dringenden F„llen oder bei kurzen Fragen. Wenn Sie ausfhrlichere Antworten wnschen, schicken Sie bitte einen Brief mit folgenden zus„tzlichen Angaben: - ObjectGEM-Version - PurePascal-Version bzw. -Datum - Rechner, Speicherausbau, Grafikkarte - TOS-Version (šbrigens: Da ObjectGEM Shareware ist, ist bei solchen Anfragen gegen beiliegendes Rckporto nichts einzuwenden...) Softdesign Computer Software c/o Thomas Much, Gerwigstraže 46, 76131 Karlsruhe Tel. (0721) 61 61 28 (am besten Mo-So zwischen 19 und 22 Uhr, sonst Anrufbeantworter) Am liebsten werden natrlich Anfragen von registrierten ObjectGEM- Anwendern beantwortet, aber falls grunds„tzliche Fragen bestehen, haben auch potentielle K„ufer eine Chance... Als registrierter Anwender haben Sie aužerdem die M”glichkeit, Updates (die alle paar Wochen erscheinen) durch Einsenden einer formatierten 3,5" 720KB-Diskette und eines frankierten und adressierten Rckumschlags zu erhalten. Wenn Sie dies "pr„ventiv" machen (d.h. am besten sofort wieder nach Erhalt eines Updates), bekommen Sie das n„chste Update zugeschickt, sobald es verfgbar ist. Und wenn Sie sowieso schon dabei sind, eine Update-Diskette einzuschicken, w„re es nett, wenn Sie dann auch das Anwender- profil im Anhang ausdrucken, ausfllen und mitschicken k”nnten (besten Dank im voraus!). Wer ein Modem besitzt, kann sich natrlich die neuesten Versionen selbst saugen (und kann damit auf die Disketten verzichten). Neue Versionen sind zuerst in der Maus KA verfgbar. Das Anwenderprofil kann dann auch an folgende Internet-Adresse geschickt werden: UK48@ibm3090.rz.uni-karlsruhe.de ----------------------------------------------------------------------- TEIL III - ObjectGEM-šbersicht ALLGEMEINE PROGRAMMIERRICHTLINIEN Beim Einbinden der GObjects-Unit muž darauf geachtet werden, daž die Unit immer als _letzte_ eingebunden wird, allerdings noch vor auf ObjectGEM zugreifenden Units. Das h”herwertige Byte von ob_type (AESOBJECT) darf unter ObjectGEM weder verwendet noch ver„ndert werden! Abgesehen davon, daž es eine Zeit lang unter MultiTOS Probleme mit solchen Programmen gegeben hat, ben”tigt ObjectGEM dieses Byte fr interne Zwecke. Durch den objektorientierten Ansatz und die Schnittstellenobjekte sollte die Verwendung dieses Bytes allerdings auch nicht n”tig sein. In den Dialogen sollte so oft wie m”glich die Bubble-Help unter- sttzt werden (siehe TControl). Ein Hilfesystem bringt nur dann etwas, wenn es konsequent eingesetzt wird. Wichtig: Zur Zeit muž man als Programmierer darauf achten, daž der Text innerhalb einer Zeile 37 Zeichen nicht berschreitet (das kann sonst in den ganz niedrigen Aufl”sungen "unsch”n" aussehen). Fr viele Fenster-Routinen etc. stellt ObjectGEM "neue" Methoden zur Verfgung, die statt der alten verwendet werden sollten (bzw. _mssen_); z.B. muž statt wind_calc nun die TWindow- Methode WindCalc aufgerufen werden. Dadurch ist es sauber geschriebenen Programmen dann egal, ob z.B. noch eine ToolBar oder eine Menleiste im Fenster installiert wird, da ObjectGEM nun fr die Verwaltung des Work-Bereichs etc. zust„ndig ist. alte Funktion "neue" Methode ------------- -------------- wind_calc TWindow.WindCalc { ... } fsel_input bzw. FileSelect fsel_exinput ObjectGEM untersttzt neue, zu BP 7.0 kompatible Runtime-Errors: Fehler-Nr Bedeutung --------- --------- 211 Aufruf einer abstrakten Methode ("Call to abstract method") Dieser Fehler wird normalerweise von der Prozedur Abstract ausgel”st und zeigt an, daž sie einen abstrakten Objekttyp nicht abgeleitet und die entsprechenden Methoden berschrieben haben; TSortedCollection ist ein Beispiel dafr 213 Kollektion-Index aužerhalb des gltigen Bereichs ("Index range error") Einer TCollection-Methode wurde ein ungltiger Index bergeben (d.h. zu klein/grož). 214 Kollektion-šberlauf ("Collection overflow") Die Kollektion kann kein neues Element mehr aufnehmen, d.h. der Speicher ist voll. Alle mit ObjectGEM verwendeten Resourcen sollten wie folgt sortiert sein (eine entsprechende Option sollte in jedem RCS zu finden sein): "1 2 3 4 5 6" Im globalen Record GP stehen die aktuellen, fr ObjectGEM gltigen VDI-Attribute, die auch von Programmen genutzt werden k”nnen. Es ist allerdings nicht sicher, daž dieser Record "bis in alle Ewigkeit" untersttzt wird. Damit Programme, die sich auf die Werte verlassen, keine b”se šberraschung erleben, sollten sie _vor_ Verwendung der Attribute die Prozedur UpdateGPValues aufrufen. Im Moment ist dies nur eine Dummy- Routine, d.h. sie macht gar nichts. Sollte GP aber einmal nicht mehr untersttzt werden, k”nnen von dieser Routine dann die aktuellen Werte explizit eingetragen werden. WICHTIGE UNTERSCHIEDE ZU OBJECTWINDOWS ObjectGEM setzt die Ideen von ObjectWindows fr BorlandPascal (beides von Borland) unter Windows (von Microsoft) fr das Atari-GEM um. Ab- gesehen von offensichtlichen Unterschieden (z.B. beim Event-Handling) gibt es aber auch noch andere, die hier besprochen werden sollen. Zun„chst liegt ObjectGEM als _eine_ Unit vor, ObjectWindows dagegen ist nach bestimmten Kriterien aufgeteilt (evtl. wird dies auch noch mit ObjectGEM geschehen). Aužerdem sind in ObjectGEM die meisten Methoden virtuell, wodurch es besser m”glich sein sollte, in den Programmablauf - wenn n”tig - einzugreifen (s. hierzu auch die Deklarationen in GOBJECTS.INT). Schliežlich wird in ObjectGEM recht wenig vom Typ PChar Gebrauch gemacht. Dies dient zu einen zur einfacheren Programmierung (normale Strings reichen meistens aus), zum anderen gab (und gibt) es offensichtlich Probleme mit den nullterminierten Strings und der zugeh”rigen Unit. Evtl. wird deshalb in einer sp„teren ObjectGEM-Version ganz auf PChar verzichtet. Das TPXPictureValidator-Objekt wird in einer sp„teren ObjectGEM- Version verfgbar sein. ----------------------------------------------------------------------- TEIL IV - Anhang GEPLANTE ERWEITERUNGEN - bel. lange Resourcen (evtl. im Interface-Format) - automatische Erzeugung einer šberschrift in modalen Dialogen - ws_ex_AppModal (siehe Online-Hilfe) - Objekte TListBox, TComboBox (wie sie unter Windows bzw. ObjectWindows existieren) - Pull-Down-Mens in Fenstern - Icon-Toolbars in Fenstern - Objekte TTextWindow, TEditWindow, THelpWindow (in einer separaten Unit "StdWnds") - nicht-modale Datei-,Font- und Farbauswahl-Dialoge (in einer separaten Unit "StdDlgs") - Objekte TIcon, TScrap, TDesktop, TBitmapButton - Erweiterung der Profile-Funktionen, um kompatibler zu Windows zu werden; aužerdem sollten diese Routinen ein klein wenig schneller werden... - vereinfachte Prozežkommunikation auf der Basis existierender Protokolle (XAcc!) - TurboPascal-kompatible Streams - Popup-Mens, die zur Laufzeit ge„ndert werden k”nnen (wie die Popup-Mens unter AES 4.0) - Bildlaufleisten mit Realtime-Update - Timer-Events fr Fenster - darauf aufbauend Timeout-Dialogboxen - erweiterte Alertboxen (nicht-modal, Timeout, UserDef-Bitmaps) - automatischer Zeilenumbruch (wenn n”tig) bei Alertboxen und der BubbleHelp - durch neue Methoden wird TEdit kompatibler zum ObjectWindows- Vorbild werden; aužerdem wird es Cut, Copy & Paste auf und vom Klemmbrett geben (optional) - Accessories werden auch eine Menleiste und einen eigenen Desktop verwenden k”nnen (innerhalb eines Fensters) - neues Objekt TPrinter (o.„.), mit dem z.B. ein GDOS-Drucker einfacher angesteuert werden kann - Objekt TPXPictureValidator - evtl. wird ObjectGEM (wie ObjectWindows) in mehrere Units aufgeteilt ANWENDERPROFIL Wenn Sie registrierter Anwender sind, w„re es sch”n, wenn Sie den folgenden Fragebogen ausdrucken, ausfllen und zurckschicken k”nn- ten, damit ObjectGEM weiter verbessert und angepažt werden kann! ------schnipp----------------------------------------------------- Name: Anschrift: ObjectGEM-Version: Reg.Nr.: 1. Mit welchem Rechner arbeiten Sie? [ ] 1040ST oder kleiner [ ] Mega ST [ ] 1040 STE [ ] Mega STE [ ] Falcon030 [ ] TT [ ] STacy 2. Welches TOS benutzen Sie? [ ] 1.00 [ ] 1.02 [ ] 1.04 [ ] 1.06 [ ] 1.62 [ ] 2.05 [ ] 2.06 [ ] 3.00 [ ] 3.01 [ ] 3.05 [ ] 3.06 [ ] 4.00 [ ] 4.01 [ ] 4.04 [ ] MultiTOS (Version: ) [ ] MultiGEM [ ] Mag!X [ ] MiNT ohne MultiTOS (Version: ) [ ] Andere TOS-Version bzw. anderes TOS (z.B. KAOS): 3. Betriebssystemerweiterungen [ ] NVDI [ ] SpeedoGDOS [ ] "normales" GDOS [ ] anderes GDOS: [ ] Netzwerk: [ ] Sonstiges: 4. Arbeitsspeicher [ ] bis 1MB [ ] 1,5 bis 2MB [ ] 2,5 bis 4MB [ ] mehr: MB (davon ST-RAM: TT-RAM: ) 5. Monitor [ ] SM124, SM144 o.„. [ ] Farbmonitor [ ] Multiscan-Monitor [ ] Grožbildschirm Sonstiges (z.B. OverScan): Grafikarte: 6. Massenspeicher [ ] Festplatte [ ] Wechselplatte [ ] HD-Floppy [ ] sonstiges: Typenbezeichnung: Kapazit„t (MB): 7. Drucker [ ] 9-Nadler [ ] 24-Nadler [ ] Tintenkleckser [ ] Laserdrucker Typenbezeichnung: 8. Sonstige Zusatzger„te (Scanner, Grafiktabletts etc.) 9. Andere Systeme (PC's Macs...) 10. Einsatzbereiche 11. Wodurch wurden Sie auf ObjectGEM aufmerksam? 12. Fehler, Verbesserungsvorschl„ge etc. ------schnapp----------------------------------------------------- Danke fr's mitmachen! Unter allen Teilnehmern wird am Ende eines jeden Monats leider nichts verlost... ;-)