ObjectGEM-Einfhrung & Dokumentation Version 1.11 vom 26.03.1994 Copyright (c)1992-94 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. WICHTIG: Die Online-Hilfe ist mittlerweile komplett. Eine šbersicht erh„lt man, wenn man nach "GObjects" oder "ObjectGEM" sucht. 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 Sammlung von Units 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.x) 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")! Diese Anleitung ist noch nicht komplett... Im Moment sei deshalb noch auf das "ObjectWindows-Programmierhandbuch" von Borland Pascal verwiesen, 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 M„rz 1994 "M”ge die OOP mit Euch sein!" SHAREWARE UND REGISTRIERUNG ObjectGEM ist ein Shareware-Produkt. Das Programmpaket darf beliebig weitergegeben werden, sofern die Units (d.h. die Quell- texte) mit den dazugeh”rigen Dateien (Beispielprogramme, Dokumen- tation 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. š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 k”nnen den Betrag auch auf folgendes Konto berweisen: Thomas Much, Postgiroamt Karlsruhe, Kto. 314881-753, BLZ 660 100 75 Dann muž allerdings mit z.Z. bis zu vier Wochen Wartezeit ge- rechnet werden (die Post...). WICHTIG: Wenn Sie einen Scheck aus dem Ausland schicken und diesen nicht in DM ausstellen, berechnen Sie bitte DM 8,-- extra! Wenn Sie aus dem Ausland berweisen, machen Sie dies bitte so, daž der Empf„nger keine zus„tzlichen Gebhren zahlen muž. Danke! Sie erhalten dann umgehend die aktuelle Version - es sei denn, Sie geben bei Ihrer Registrierung die Versionsnummer der Ihnen vorliegenden ObjectGEM-Unit an; ist diese Version noch aktuell, erhalten Sie erst dann eine Disk zugeschickt, wenn eine neue Version ver”ffentlicht wird (wer also auf jeden Fall und sofort eine Disk bekommen m”chte, sollte bei seiner Registrierung keine Versionsnummer angeben...). Aužerdem haben Sie dann die M”glich- keit, jederzeit mit einer formatierten 3,5" Diskette und einem frankierten und adressierten Rckumschlag ein evtl. vorhandenes ObjectGEM-Update direkt beim Autor (Adresse s.u.) 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... keine Angst, mehr als DM 10,-- Unkostenbeitrag - wenn berhaupt - werden es sicher nicht). Die neueste Version ist auch per Modem ber die Maus KA zu beziehen (und vermutlich auch in einigen anderen Mailboxen erh„ltlich). Der Vertrieb ber PD-Versender, Mailboxen, Diskettenzeit- schriften etc. ist erlaubt und ausdrcklich _erwnscht_! Dann m”ge man sich aber bitte um die aktuelle Version bemhen. ACHTUNG: Zusammen mit ObjectGEM darf der VDI-Enhancer weiter- gegeben werden. PD-Versender mssen vor der Weitergabe aber erst prfen, ob sie die entsprechenden Bedingungen erfllen. Ist dies nicht der Fall, mssen sie den Enhancer aus dem ObjectGEM-Paket entfernen! Da ObjectGEM nun mit dem _vollst„ndigen_ Quelltext ausgeliefert wird, hat die Shareware-Version keinerlei Einschr„nkungen mehr. Ich hoffe aber trotzdem, daž sich dies nicht negativ auf die Registrierungsmoral auswirkt - ich wrde mich wirklich freuen, wenn alle diejenigen, die sich bisher wegen PP-Kompatibilit„ts- problemen oder dem fehlenden Quelltext nicht registrieren lassen wollten (dies wurde mir von _sehr_ vielen Leuten mitgeteilt...), nun die Weiterentwicklung finanziell untersttzen wrden. WICHTIG: Wer ObjectGEM mehr als nur zu Testzwecken einsetzt und sich nicht registrieren l„žt, verwendet eine RAUBKOPIE!!! INSTALLATION: UNIT UND ONLINE-HILFE Die Installation sollte keine grožen Probleme bereiten. Kopieren Sie einfach alle Pascal-Dateien (*.PAS) in Ihr Unit-Verzeichnis (dort, wo auch TOS.PPU, GEM.PPU etc. stehen) bzw. in das Verzeich- nis, in dem Sie sonst die Quelltexte Ihrer Units ablegen und GOBJECTS.HLP in das Help-Verzeichnis (dort sollten auch PP.HLP etc. zu finden sein). Fertig! Die Units werden nun wie gewohnt mit der uses-Klausel eingebunden. Wenn Sie Ihr erstes ObjectGEM-Programm compilieren, werden dann zun„chst alle ObjectGEM-Units erzeugt (das dauert etwas). 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. Dabei ist es egal, ob Sie z.B. nach "Style", "Attr.Style" etc. suchen - wenn es mehrere M”glichkeiten gibt, erhalten Sie ein Auswahlmen. Wenn Sie meinen, einen Fehler in der Online-Hilfe gefunden zu haben (falscher oder fehlender Verweis, falsche oder nicht aus- reichende Beschreibung), setzen Sie sich bitte mit mir (dem Autor) in Verbindung. Danke. 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) 62 28 41 (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"-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 Anwenderprofil 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, MTK und HL verfgbar. Das Anwenderprofil kann dann auch an die folgende EMail-Adresse geschickt werden: Internet: Thomas_Much@KA2.MAUS.DE MausNet: Thomas Much @ KA2 ----------------------------------------------------------------------- TEIL III - ObjectGEM-šbersicht ALLGEMEINE PROGRAMMIERRICHTLINIEN Beim Einbinden der ObjectGEM-Units muž darauf geachtet werden, daž diese immer als _letzte_ eingebunden werden, allerdings noch vor auf ObjectGEM zugreifenden Units. Die Reihenfolge sollte dabei immer lauten (abgesehen von evtl. nicht ben”tigten Units): Objects, OTypes, OProcs, OWindows, OValidat, ODialogs, OStdDlgs, OStdWnds. 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. 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 ------------- -------------- evnt_timer(1,0) appl_yield form_alert TApplication.Alert form_dial(FMD_FINISH,... bzw. TWindow.ForceRedraw bzw. Neuzeichnen des Fensters TWindow.WMRedraw bzw. TApplication.InvalidateRect Neuzeichnen des Desktops TApplication.DeskRedraw form_do TApplication.ExecDialog bzw. besser TDialog verwenden! bzw. Popup-Mens TApplication.Popup fsel_input bzw. FileSelect fsel_exinput GetFreeString TApplication.GetFString graf_mouse TWindow.SetCursor graf_mouse(ARROW,... ArrowMouse graf_mouse(BUSYBEE,... BusyMouse bzw. SliceMouse, SliceMouseNext graf_mouse(M_OFF,... HideMouse graf_mouse(M_ON,... ShowMouse menu_bar TApplication.LoadMenu bzw. TApplication.DrawMenu bzw. TApplication.FreeMenu objc_change bzw. SetSate,GetState, bzw. Žndern des Objektstatus Enable, Disable bzw. SetText,GetText bzw. SetCheck,GetCheck bzw. Check, Uncheck bzw. Toggle, Gray rsrc_free TApplication.FreeResource rsrc_gaddr TApplication.GetAddr bzw. TApplication.GetFImagePtr bzw. TApplication.GetFStringPtr rsrc_load TApplication.LoadResource bzw. TApplication.InitResource wind_calc TWindow.WindCalc wind_close TWindow.CloseWindow wind_create TWindow.Create wind_delete TWindow.Destroy wind_get(x,WF_CURRXYWH,... TWindow.GetCurr wind_get(x,WF_FIRSTXYWH,... TWindow.FirstWorkRect wind_get(x,WF_FULLXYWH,... TWindow.GetFull wind_get(x,WF_NEXTXYWH,... TWindow.NextWorkRect wind_get(x,WF_WORKXYWH,... TWindow.GetWork wind_get(0,WF_WORKXYWH,... GetDesk wind_open TWindow.OpenWindow wind_set(x,WF_CURRXYWH,... TWindow.SetCurr bzw. TWindow.SetWork bzw. TWindow.FullSize wind_set(x,WF_INFO,... bzw. TWindow.SetSubTitle WindSetInfo wind_set(x,WF_NAME,... bzw. TWindow.SetTitle WindSetTitle wind_set(0,WF_NEWDESK,... TApplication.InstallDesktop bzw. TApplication.RemoveDesktop wind_set(x,WF_TOOLBAR,... TWindow.LoadToolbar wind_set(x,WF_TOP,... TWindow.Top Programm verlassen TApplication.Quit (geschieht, wenn nicht anders angegeben, beim Schliežen eines Fensters automatisch, siehe Beispielprogramme) 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. Es existiert deshalb zwar die Routine UpdateGPValues; Programme sollten nach M”glichkeit aber den Zugriff auf GP vermeiden (im Gegensatz zum bisher Dokumentierten)!!! 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. In ObjectGEM sind die meisten Methoden virtuell, wodurch es besser m”glich sein sollte, in den Programmablauf - wenn n”tig - einzugreifen. Aužerdem wird in ObjectGEM recht wenig vom Typ PChar Gebrauch gemacht. Dies dient zum 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. Im folgenden sind Routinen aufgelistet, die zwar nicht 100%ig kompatibel, aber zumindest recht „hnlich sind: ObjectWindows/Windows ObjectGEM --------------------- --------- BringWindowToTop TWindow.Top CheckDlgButton SetCheck GetActiveWindow TApplication.GetPTopWindow GetClientRect TWindow.GetWork GetDesktopWindow DESK GetVersion GEMVersion bzw. MiNTVersion bzw. TOSVersion GetWindowRect TWindow.GetCurr IntersectRect rc_intersect MapVirtualKey MapKey MessageBox TApplication.Alert PostQuitMessage TApplication.Quit Yield appl_yield ----------------------------------------------------------------------- TEIL IV - Anhang GEPLANTE ERWEITERUNGEN - ws_ex_AppModal (siehe Online-Hilfe) - ICFS-Iconification mit - Objekte TListBox, TComboBox (wie sie unter Windows bzw. ObjectWindows existieren) - Pull-Down-Mens in Fenstern - Objekte TTextWindow, TEditWindow, THelpWindow - nicht-modale Datei-, Font- und Farbauswahl-Dialoge - Objekte TIcon, TScrap, TDesktop, TBitmapButton - Beschleunigung der Profile-Funktionen - Routinen zum Versenden von Daten per XAcc - Implementierung von mind. AVSendKey - Routinen fr Drag&Drop-Initiierung bzw. -'ARGS'-Auswertung - BorlandPascal-kompatible Streams - Popup-Mens, die zur Laufzeit ge„ndert werden k”nnen - Bildlaufleisten mit Realtime-Update - Timer-Events fr Fenster - erweiterte Alertboxen (nicht-modal) - 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 - neue Resource-Verwaltung: jedes Fenster kann eine eigene RSC-Datei laden, aužerdem gibt es eine globale Resource - zweite virtuelle VDI-Workstation _nur_ fr interne Zwecke - das Anlegen eines Cookies wird verschwinden - UpdateGPValues und der Record GP werden verschwinden (!) - es wird ein Zusatzprogramm geben ("GEMWizard"), mit dem das Grundgerst eines ObjectGEM-Programms sehr bequem mit ein paar Mausklicks erzeugt werden kann 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: __________ PurePascal-Datum: __________ 1. Mit welchem Rechner arbeiten Sie? [ ] 1040ST oder kleiner [ ] Mega ST [ ] 1040 STE [ ] Mega STE [ ] Falcon030 [ ] TT [ ] STacy [ ] ST Book 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.02 [ ] 4.04 [ ] 4.92 [ ] 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: [ ] Gemini (Version: ) [ ] Ease [ ] MetaDOS [ ] 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: [ ] CD-ROM Typenbezeichnung: Kapazit„t (MB): 7. Drucker [ ] 9-Nadler [ ] 24-Nadler [ ] Tintenkleckser [ ] Laserdrucker Typenbezeichnung: 8. Sonstige Zusatzger„te (Scanner, Grafiktabletts etc.) 9. Andere Systeme (PC, Mac...) 10. Einsatzbereiche 11. Wodurch wurden Sie auf ObjectGEM aufmerksam? 12. Fehler, Verbesserungsvorschl„ge etc. ------schnapp----------------------------------------------------- Danke fr's mitmachen! Die Daten werden selbstverst„ndlich ver- traulich behandelt. Unter allen Teilnehmern wird am Ende eines jeden Monats leider nichts verlost... ;-)