Home Inhaltsverzeichnis Konstanten Objekthierarchie

4 Objekte

Diese Übersicht ist eine alphabetische Auflistung aller ObjectGEM-Objekte. Die Abhängigkeiten der Objekte werden in der Objekthierarchie deutlich.


4.1 TApplication

TApplication ist ein komplettes GEM-Applikations-Objekt, d.h. das Objekt beachtet automatisch alle GEM-Konventionen bzgl. Initialisierung etc. Außerdem werden alle Meldungen und Ereignisse verarbeitet. Da TApplication standardmäßig nur ein leeres Fenster vom Typ TWindow erzeugt, leitet man normalerweise ein eigenes Applikationsobjekt ab.

Pointer

     PApplication = ^TApplication;

Felder

Methoden

Vorfahre

Nachfahren

-

4.1.1 TApplication.aesHandle

Deklaration

     aesHandle: integer;  (nur lesen)

Beschreibung

Enthält das Handle der vom AES benutzten VDI-Workstation. Wird von TApplication.InitGEM per graf_handle() ermittelt. Normalerweise braucht man diesen Wert nicht verwenden, da er hauptsächlich für die (automatisch durchgeführte) VDI-Initialisierung benötigt wird.

4.1.2 TApplication.apDTA

Deklaration

     apDTA: DTA;

Beschreibung

Wenn das Programm nicht als Accessory gestartet wurde, wird der Datei-Übertragungs-Puffer von TApplication.Init auf apDTA gesetzt, damit z.B. auch zu einem späteren Zeitpunkt noch auf die Kommandozeile zugegriffen werden kann (diese würde sonst bei Dateioperationen zerstört werden).

4.1.3 TApplication.apID

Deklaration

     apID: integer;  (nur lesen)

Beschreibung

Wird von TApplication.InitGEM auf die mit appl_init() ermittelte Identifikationsnummer der Applikation gesetzt. Ein Wert<0 signalisiert einen Fehler (dann wird das Programm allerdings automatisch abgebrochen).

4.1.4 TApplication.apName

Deklaration

     apName: PString;  (nur lesen)

Beschreibung

Wird von TApplication.Init auf den eigenen Namen des Programms gesetzt, evtl. mit Leerzeichen auf eine Länge von 8 Zeichen gebracht und mit einem Nullbyte abgeschlossen.

Unter alten TOS-Versionen und bei Accessories kann der Name u.U. nicht korrekt ausgewertet werden.

4.1.5 TApplication.apPath

Deklaration

     apPath: PString;  (nur lesen)

Beschreibung

Wird von TApplication.Init auf das Arbeitsverzeichnis des Programms (incl. Laufwerksangabe und abschließendem '\') gesetzt.

Unter alten TOS-Versionen und bei Accessories kann der Name u.U. nicht korrekt ausgewertet werden.

4.1.6 TApplication.Attr

Deklaration

     Attr: TGEMAttr;

Beschreibung

Diverse Attribute und Werte der Applikation sind in diesem Record zusammengefaßt. Wird von TApplication.Init initialisiert.

     PGEMAttr = ^TGEMAttr;
     TGEMAttr = record
          EventMask,
          Instance   : integer;  (nur lesen)
          Style      : longint;
          Country    : word;
          rpTail,                (nur lesen)
          rpCmd      : PString;  (nur lesen)
          sysFonts,              (nur lesen)
          addFonts,              (nur lesen)
          charSWidth,            (nur lesen)
          charSHeight,           (nur lesen)
          boxSWidth,             (nur lesen)
          boxSHeight,            (nur lesen)
          charWidth,
          charHeight,
          boxWidth,
          boxHeight,
          MaxPX,                 (nur lesen)
          MaxPY,                 (nur lesen)
          PixW,                  (nur lesen)
          PixH,                  (nur lesen)
          Colors,                (nur lesen)
          MaxColors,             (nur lesen)
          Planes     : integer;  (nur lesen)
          PopChar    : char
     end;

EventMask gibt an, auf welche GEM-Ereignisse das Programm mit TApplication.GetEvent warten soll. Wird mit MU_MESAG or MU_KEYBD or MU_BUTTON besetzt; wenn MultiTOS aktiv ist, wird auch noch MU_TIMER eingefügt (wird intern benötigt). Dieses Feld kann für eigene Zwecke verändert werden, allerdings sollte man sich genau überlegen, ob dies wirklich sein muß, da fast alle Ereignisse schon von ObjectGEM behandelt werden (z.B. werden auch MU_M1 und MU_M2 intern temporär verwendet).

Instance zeigt an, wie oft sich das Programm im Speicher befindet (z.B. gleichzeitig als Accessory und als Programm, 1=nur einmal). Null bedeutet, daß kein korrekter Wert ermittelt werden konnte. Siehe hierzu auch TApplication.GetCurrInstance und TApplication.FirstInstance.

In Style werden diverse globale Eigenschaften des Programms zusammengefaßt. Standardmäßig wird hier as_GrowShrink or as_MenuSeparator or as_MoveDials or as_HandleShutdown or as_DesktopWindow or as_3DFlags or as_UseHomeDir eingetragen. Veränderungen dieser Bitmap sollten in der Methode TApplication.InitInstance vorgenommen werden.

Country gibt die Landessprache des Betriebssystems an, die dann auch von ObjectGEM verwendet wird. Z.Z. werden nur FRG und SWG gesondert behandelt, ansonsten werden englische Texte verwendet.

rpTail enthält eine dem Programm evtl. übergebene Kommandozeile, rpCmd den Namen des Programms incl. Pfad- und Laufwerksangabe. nil bedeutet, daß der jeweilige Wert nicht ermittelt werden konnte. sysFonts gibt die Anzahl der fest im System eingebundenen GEM-Fonts an (wird von TApplication.Init gesetzt). In addFonts trägt TApplication.SetupVDI die Anzahl der nachgeladenen Zeichensätze ein. Das Programm kann also auf sysFonts+addFonts Zeichensätze zurückgreifen.

charSWidth, charSHeight, boxSWidth und boxSHeight werden von TApplication.InitGEM auf die Rückgabewerte von graf_handle() gesetzt. Die folgenden vier Felder geben die Größen des aktuell verwendeten Fonts an und sollten bei Fontänderungen auf die neuen Werte gesetzt werden.

MaxPX und MaxPY geben die aktuelle Auflösung an. Nach Möglichkeit sollte man allerdings andere Werte (z.B. GetDesk) verwenden.

PixW und PixH werden (wie die beiden vorhergehenden Werte) von TApplication.Init besetzt; sie geben die Größe einen Pixels in mm/1000 an. Colors gibt die Anzahl der vordefinierten Farben an; diese ist auch unter TrueColor nicht höher als 256! MaxColors gibt die Anzahl aller verfügbaren Farben an (0=mehr als 32767, kontinuierliche Verteilung; 2=monochrom); hiermit sind alle vorhandenen Farbabstufungen gemeint, also Vorsicht! Wenn man beim Erkennen einer bestimmten Farbtiefe absolut sicher gehen will, muß man Planes auswerten (1=monochrom etc.). Die Anzahl der gleichzeitig darstellbaren Farben berechnet sich aus 2^Planes.

PopChar wird von TComboBox für das Zeichen benutzt, mit dem das Popup-Menü geöffnet werden kann. Atari hat dafür #240 vorgeschlagen; durchgesetzt hat sich aber #2 (Pfeil nach unten), was deshalb auch default ist.

4.1.7 TApplication.FirstInstance

Deklaration

     FirstInstance: boolean;  (nur lesen)

Beschreibung

Zeigt mit true an, daß diese Instanz des Programms die erste im Speicher war; wenn also MYTEST.ACC im Bootlaufwerk installiert ist und auf dem Desktop noch MYTEST.PRG gestartet wird, ist nur bei dem Accessory FirstInstance auf true gesetzt.

Nur bei der ersten Instanz eines Programms wird TApplication.InitApplication aufgerufen, wo dann grundlegende Initialisierungen durchgeführt werden können. Alle anderen Einstellungen, die jede Instanz für sich benötigt, müssen daher in der immer aufgerufenen TApplication.InitInstance-Methode vorgenommen werden.

4.1.8 TApplication.GDOSActive

Deklaration

     GDOSActive: boolean;  (nur lesen)

Beschreibung

Wird von TApplication.Init auf true gesetzt, wenn irgendeine GDOS-Erweiterung (NVDI, AMCGDOS etc.) installiert ist, d.h. wenn u.a. die erweiterten Routinen für Bitmap-Fonts vorhanden sind.

4.1.9 TApplication.FPUAvailable

Deklaration

     FPUAvailable: boolean;  (nur lesen)

Beschreibung

Wird von TApplication.Init auf true gesetzt, wenn ein mathematischer Coprozessor vorhanden ist. Dafür werden ein evtl. vorhandener _FPU-Cookie und die Variable Test68881 aus der System-Unit ausgewertet. Die Art der FPU (68881/68882) ist nicht festgelegt.

4.1.10 TApplication.OSBAvailable

Deklaration

     OSBAvailable: boolean;  (nur lesen)

Beschreibung

Wird von TApplication.Init auf true gesetzt, wenn das VDI Offscreen-Bitmaps unterstützt. Das ist z.B. bei NVDI ab Version 2.5 der Fall (sowie beim VDI-Enhancer-Patch).

4.1.11 TApplication.Icon

Deklaration

     Icon: PIcon;  (nur lesen)

Beschreibung

Enthält einen Zeiger auf ein TIcon-Objekt, wenn der Applikation ein Icon mit TApplication.LoadIcon zugewiesen wurde und die Applikation gerade ikonifiziert ist.

Wird von TApplication.Init auf nil gesetzt.

4.1.12 TApplication.IsQSBUsed

Deklaration

     IsQSBUsed: boolean;

Beschreibung

Ist dieses Feld true, wird der AES-"Quarter Screen Buffer" zur Zeit intern von ObjectGEM belegt, d.h. die Applikation darf ihn unter gar keinen Umständen anderweitig verwenden. Zur Verwendung des Puffers muß man folgendermaßen vorgehen:

     wind_update(BEG_UPDATE);
     if Application^.IsQSBUsed then
       { Speicher anders anfordern, z.B. mit getmem }
     else
       begin
          GetQSB(p,len);
          if (p<>nil) and (len>=benoetigte_groesse) then
            begin
              Application^.IsQSBUsed:=true;
              { hier kann der Puffer nun benutzt werden;
                es können auch ObjectGEM-Routinen aufge-
                rufen werden, da diese die Belegung des
                Puffers beachten }
              Application^.IsQSBUsed:=false
            end
          else
            { Speicher anders anfordern }
       end;
     wind_update(END_UPDATE);

4.1.13 TApplication.MainWindow

Deklaration

     MainWindow: PWindow;  (nur lesen)

Beschreibung

MainWindow ist die Liste der dem Applikationsobjekt untergeordneten Fenster. Das Feld wird mit nil initialisiert, und jedes Fenster klinkt sich bei dessen Initialisierung hier ein; das "Hauptfenster" der Application sollte dies normalerweise in TApplication.InitMainWindow tun. Mit den Routinen TApplication.FirstWndThat und TApplication.ForEachWnd kann man diese Liste recht einfach durchlaufen.

4.1.14 TApplication.menuID

Deklaration

     menuID: integer;  (nur lesen)

Beschreibung

Wird das Programm als Accessory oder unter MultiTOS gestartet, trägt es sich mit menu_register() im "Desk"-Menü ein. Die dort zurückgelieferte Kennung wird in menuID eingetragen. -1 bedeutet, daß ein Fehler aufgetreten ist, was bei einem Accessory zum automatischen Programmabbruch führt. menuID wird normalerweise nur intern verwendet (z.B. von TApplication.ACOpen).

4.1.15 TApplication.MenuTree

Deklaration

     MenuTree: PTree;  (nur lesen)

Beschreibung

Zeigt auf den Objektbaum des Dropdown-Menüs, wenn der Applikation ein solches mittels TApplication.LoadMenu zugewiesen wurde.

4.1.16 TApplication.MessageBLen

Deklaration

     MessageBLen: integer;  (nur lesen)

Beschreibung

Gibt die Länge in Bytes einer erweiterten GEM-Message an. Null bedeutet, daß die aktuelle Nachricht eine "normale" Länge von 16 Bytes hat (bzw. daß gar keine Nachricht vorliegt). Der Wert wird zusammen mit MessageBuffer von TApplication.MUMesag gesetzt.

4.1.17 TApplication.MessageBuffer

Deklaration

     MessageBuffer: pointer;  (nur lesen)

Beschreibung

Zeigt auf einen Puffer, in dem eine erweiterte GEM-Nachricht mit der Länge MessageBLen steht. nil bedeutet, daß keine erweiterte Message vorliegt. Der Puffer wird automatisch am Anfang von TApplication.MUMesag angelegt und mit appl_read() gefüllt, wenn eine erweiterte Nachricht erkannt wird. Ein evtl. schon vorhandener Puffer wird in diesem Fall wieder freigegeben.

Alle Standard-Nachrichten haben eine normale Länge von 16 Bytes, sind also nicht erweitert. Die Auswertung einer erweiterten Nachricht sollte in TApplication.HandleMesag oder in der Methode TEvent.TestMessage eines abgeleiteten TEvent-Objektes erfolgen.

4.1.18 TApplication.MetaDOS

Deklaration

     MetaDOS: PMetaInfo;  (nur lesen)

Beschreibung

Wenn MetaDOS nil ist, ist kein Meta-DOS installiert. Ansonsten zeigt das Feld auf folgende Struktur:

     PMetaInfo = ^TMetaInfo;
     TMetaInfo = record
          Version: string;
          Drives : longint
     end;

Version bezeichnet den Namen und die Versionsnummer des verwendeten Meta-DOS. Drives enthält eine Bitmap der Meta-DOS-Laufwerke (A=0, B=1 etc.). Wird von TApplication.Init gesetzt.

4.1.19 TApplication.MiNTActive

Deklaration

     MiNTActive: boolean;  (nur lesen)

Beschreibung

Wird von TApplication.Init auf true gesetzt, wenn MiNTVersion einen Wert größer Null zurückgibt, d.h. wenn die Multitasking-Erweiterung MiNT installiert ist.

GEM-Programme sind allerdings normalerweise darauf angewiesen, daß auch MultiTOS vorhanden ist.

4.1.20 TApplication.MultiTOS

Deklaration

     MultiTOS: boolean;  (nur lesen)

Beschreibung

Wird von TApplication.InitGEM auf true gesetzt, wenn das Multitasking-Betriebssystem MultiTOS installiert ist.

Wenn das Programm allerdings nur die Dateifunktionen einer Multitasking-Umgebung benötigt, kann auch MiNTActive ausgewertet werden.

4.1.21 TApplication.Multitasking

Deklaration

     Multitasking: boolean;  (nur lesen)

Beschreibung

Gibt an, ob das AES mehrere Applikationen gleichzeitig (und vor allem gleichberechtigt) ausführen kann.

Die Anzahl dieser Applikationen beträgt mind. 2, über Besonderheiten des Multitasking-Betriebssystems ist hiermit nichts gesagt!

4.1.22 TApplication.MemoryProtection

Deklaration

     MemoryProtection: boolean;  (nur lesen)

Beschreibung

Wir von TApplication.Init auf true gesetzt, wenn Mxalloc() vorhanden ist und auch mit den Memory-Protection-Flags aufgerufen werden darf.

Dieses Flag sagt nichts über das Vorhandensein von Memory Protection aus, man kann sich lediglich sicher sein, daß dann ein Aufruf von Mxalloc() keine Bomben produziert!

Im Moment wird dafür nur die Anwesenheit von MiNT getestet, da z.Z. keine weiteren Testmöglichkeiten bestehen. Später wird auch Mag!C berücksichtigt.

4.1.23 TApplication.RscPtr

Deklaration

     RscPtr: PRsFile;  (nur lesen)

Beschreibung

Zeigt auf die sich im Speicher befindliche Resource-Datei des Programms, wenn eine solche mittels TApplication.LoadResource geladen bzw. mit TApplication.InitResource zugewiesen wurde. Normalerweise benötigt man diesen Pointer nicht.

4.1.24 TApplication.SpeedoActive

Deklaration

     SpeedoActive: boolean;  (nur lesen)

Beschreibung

Wird von TApplication.Init auf true gesetzt, wenn SpeedoGDOS installiert ist, d.h. wenn das Programm auf Vektorfonts zurückgreifen kann.

Falls das (nie ausgelieferte) FSM-GDOS installiert ist, wird false zurückgegeben.

4.1.25 TApplication.Status

Deklaration

     Status: integer;

Beschreibung

Enthält den Fehler-Status der Applikation. em_OK (bzw. irgendein nichtnegativer Wert) bedeutet, daß kein Fehler aufgetreten ist.

TApplication.MessageLoop wird nur betreten, wenn Status größer gleich em_OK ist, und wieder verlassen, sobald Status einen Wert kleiner em_OK enthält. Damit das Programm nicht auch bei evtl. behebbaren Fehlern abbricht, kann die Methode TApplication.HandleError überschrieben werden.

4.1.26 TApplication.vdiHandle

Deklaration

     vdiHandle: integer;  (nur lesen)

Beschreibung

Enthält das VDI-Handle der Applikation, das von TApplication.InitGEM mit v_opnvwk() ermittelt wird. Mit diesem Handle kann das Programm korrekte Grafik-Ausgaben machen.

Ein Wert kleiner Null signalisiert einen Fehler, das Programm wird in diesem Fall automatisch beendet.

TWindow-Objekte besitzen normalerweise eine eigene VDI-Workstation im Feld TWindow.vdiHandle!

4.1.27 TApplication.workIn

Deklaration

     workIn: workin_ARRAY;

Beschreibung

Dieses Array wird von TApplication.InitGEM zum Öffnen der VDI-Workstation benötigt. Danach kann es für eigene Zwecke verwendet werden.

4.1.28 TApplication.workOut

Deklaration

     workOut: workout_ARRAY;

Beschreibung

Dieses Array wird von TApplication.InitGEM für die Rückgabewerte von v_opnvwk() benötigt. Danach kann es für eigene Zwecke verwendet werden, da alle wichtigen Werte von TApplication.Init anderweitig gespeichert werden.

4.1.29 TApplication.Name

Deklaration

     Name: PString;  (nur lesen)

Beschreibung

Enthält den an TApplication.Init übergebenen Namen der Applikation, der u.a. zur genauen Identifikation verwendet wird.

Außerdem verwenden Accessories und Programme unter MultiTOS max. 17 Zeichen dieses Namens als Menüeintrag (die benötigten Leerzeichen werden automatisch eingefügt!).

4.1.30 TApplication.XAcc

Deklaration

     XAcc: TXAccAttr;  (nur lesen)

Beschreibung

XAcc beschreibt die XAcc-Parameter der eigenen Applikation, die zum Versenden an andere Applikationen benötigt werden.

Der Record wird in TApplication.Init mittels TApplication.GetXAccAttr eingelesen.

4.1.31 TApplication.AVServer

Deklaration

     AVServer: integer;  (nur lesen)

Beschreibung

Enthält die AES-ID des AV-Servers, wenn ein solcher existiert, ansonsten id_No. Unter "normalem" TOS kann nur das Hauptprogramm AV-Server sein.

TApplication.VAProtoStatus ermittelt AVServer, unter MultiTOS wird dies von TApplication.Init erledigt: Zunächst wird nach dem Prozeß "GEMINI" gesucht, dann nach dem Prozeß "AVSERVER". Wenn dies nicht zum Erfolg geführt hat, wird schließlich noch die Environment-Variable AVSERVER ausgewertet.

4.1.32 TApplication.Clipboard

Deklaration

     Clipboard: PClipboard;  (nur lesen)

Beschreibung

Zeigt auf das mit der Applikation verknüpfte TClipboard-Objekt (oder ist nil, wenn ein solches nicht existiert).

Wird mit TApplication.GetClipboard gesetzt.

4.1.33 TApplication.XAccList

Deklaration

     XAccList: PCollection;  (nur lesen)

Beschreibung

XAccList enthält alle angemeldeten XAcc-Applikationen in Form von TXAccAttr-Records. Das Feld wird von TApplication.Init zunächst auf nil gesetzt und dann von TApplication.XAccInsert verwaltet. Beim Verlassen des Programms wird an alle in dieser Liste eingetragenen Applikationen eine ACC_EXIT-Message geschickt.

Wichtig: Auch während des Programmablaufs kann XAccList nil sein, falls z.B. alle anderen XAcc-Programme terminiert haben!

4.1.34 TApplication.Init

Deklaration

     constructor Init(AName: string);

Beschreibung

Ruft den Vorfahren TEventObject.Init auf. Danach wird Application auf @self gesetzt und - wenn das Programm nicht als Accessory gestartet wurde - der Datei-Übertragungs-Puffer auf apDTA. TApplication.Name wird auf AName gesetzt.

Dann werden die Felder Attr.Country, FPUAvailable, OSBAvailable, SpeedoActive sowie MiNTActive ermittelt, MetaDOS wird ausgefüllt und InitGEM aufgerufen.

Ist Status an dieser Stelle größer gleich em_OK, wird die Initialisierung fortgesetzt, und für alle weiteren Aktionen in dieser Methode wird eine wind_update()-Schachtelung vorgenommen (wichtig für Accessories).

Dann wird XAcc mittels GetXAccAttr eingelesen. TApplication.Attr wird komplett ausgefüllt, apPath, apName und GDOSActive werden ermittelt und TApplication.GetClipboard sowie TApplication.SetupVDI aufgerufen. Ist Status immer noch größer gleich em_OK, wird schließlich InitInstance aufgerufen. Handelt es sich allerdings um die erste Instanz des Programms im Speicher, wird vorher noch InitApplication aufgerufen.

Unter MultiTOS wird schließlich mit Broadcast die ACC_ID-Message an alle AES-Prozesse geschickt, außerdem wird AVServer ermittelt.

4.1.35 TApplication.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Alle Fenster der MainWindow-Liste werden freigegeben. Wenn die MessageLoop-Schleife mind. einmal durchlaufen wurde, wird dann dem Programm mit der Methode TApplication.Terminate eine Möglichkeit geboten, evtl. Deinstallationen vorzunehmen. Dann wird ClosePrivateProfile aufgerufen, damit evtl. vorgenommene Änderungen noch gespeichert werden. Danach wird an alle in der XAccList eingetragenen Programme eine ACC_EXIT-Message geschickt. Wenn das Programm als Accessory gestartet wurde und MultiTOS nicht installiert ist, verfällt das Programm an dieser Stelle in einer Endlosschleife mittels evnt_timer(), ansonsten werden TApplication.ExitGEM und TEventObject.Done aufgerufen.

4.1.36 TApplication.ACClose

Deklaration

     function ACClose(mID,Why: integer): integer;
                                            virtual;

Beschreibung

Wird aufgerufen, wenn das Accessory vom Betriebssystem geschlossen wird.

Wenn mID mit TApplication.menuID übereinstimmt (sollte immer der Fall sein, da ObjectGEM-Programme normalerweise nur max. einen Menüeintrag belegen), werden alle Fenster aus der MainWindow-Liste mittels TWindow.RawDestroy freigegeben.

Mit dem Rückgabewert kann die Methode melden, ob beim Schließen des Accessories irgend etwas schiefgelaufen ist (Wert<>0), standardmäßig wird aber em_OK zurückgegeben.

In Why wird unter MultiTOS der Grund für das Schließen des Accessories angegeben; unter alten TOS-Versionen übergibt TApplication.MUMesag hier einfach AC_CLOSE.

Zum Schluß wird (unter einem Singletasking-TOS) die XAccList freigegeben, AVServer auf id_No gesetzt und an das Hauptprogramm eine ACC_ID- und eine AV_PROTOKOLL-Message geschickt.

4.1.37 TApplication.ACOpen

Deklaration

     procedure ACOpen(mID: integer); virtual;

Beschreibung

Wird von TApplication.MUMesag aufgerufen, wenn der Benutzer den Accessory-Eintrag im Desk-Menü anwählt und das Accessory damit öffnet.

Wenn mID mit TApplication.menuID übereinstimmt (sollte immer der Fall sein), werden alle bereits erzeugten Fenster geöffnet; Fenster, die noch nicht erzeugt sind, bei denen aber das Flag cs_CreateOnAccOpen gesetzt ist, werden erzeugt und geöffnet. Anschließend werden alle modalen Dialoge nacheinander mittels TDialog.Execute abgearbeitet.

4.1.38 TApplication.Alert

Deklaration

     function Alert(AParent: PWindow; DefBtn: integer;
       Sign: longint; Txt,Btn: string): integer; virtual;

Beschreibung

Ersetzt den AES-Aufruf form_alert() durch eine mächtigere Routine. ObjectGEM-Alertboxen sind Tastatur-bedienbar, mit der Maus verschiebbar, und sie verwenden nach Möglichkeit (ein-)farbige Icons. In AParent kann der Pointer auf das Fenster übergeben werden, zu dem die Alertbox gehört (sonst nil). Die Box wird dann automatisch relativ zu diesem Fenster zentriert.

DefBtn gibt die Nummer (1,2,...) des Buttons an, der mit <Return> angewählt werden kann. Null bedeutet, daß es keinen solchen Default-Button gibt. Sign bestimmt das Icon, das in der Box verwendet wird (NO_ICON=0, NOTE=1, WAIT=2, STOP=3). Wird hier ein Wert größer $7fff übergeben, wird er als Pointer auf eine BITBLK-Struktur aufgefaßt, d.h. hiermit können eigene Icons benutzt werden. Wichtig: Selbstdefinierte Icons müssen im gerätespezifischen Format (FF_DEVSPEC) vorliegen! Wenn sich diese in der Resourcedatei des Programms befinden, nimmt ObjectGEM diese Anpassung allerdings automatisch in InitResource bzw. LoadResource vor. Txt gibt den Text der Alertbox an. Die einzelnen Zeilen werden durch '|' getrennt. Theoretisch können bis zu 18 Zeilen mit bis zu 255 Zeichen angezeigt werden, allerdings wird ein automatischer Zeilenumbruch durchgeführt, wenn die Alertbox für die aktuelle Auflösung sonst zu breit würde (aus "ästhetischen" Gründen ist außerdem die max. Länge einer Zeile auf 50 Zeichen beschränkt). In Btn schließlich werden die durch '|' getrennten Buttons übergeben (max. 12, wesentlich besser ist aber eine Zahl<=4). Die Hotkeys werden - wie bei den Dialogelementen - mit einem vorangestellten '&' markiert.

Die Rückgabe ist id_No, wenn die Alertbox aus irgendeinem Grund nicht ausgeführt werden konnte. Ein Wert größer Null gibt die Nummer des angewählten Buttons an.

4.1.39 TApplication.APDragDrop

Deklaration

     procedure APDragDrop(PipeID,OrgID,WindID,mX,
                           mY,KStat: integer); virtual;

Beschreibung

Verteilt eine Drag&Drop-Anfrage an das zuständige Fenster bzw. die Applikation.

Wenn dem GEM-Handle WindID ein ObjectGEM-Fenster zugeordnet werden kann (das sollte immer der Fall sein), wird die entsprechende TWindow.WMDragDrop-Methode aufgerufen; ansonsten wird die Anfrage an TApplication.HandleDragDrop weitergeleitet. PipeID gibt die Nummer der Pipe an; aus dieser Nummer kann der zugehörige Dateiname errechnet werden. OrgID ist die AES-Applikations-Kennung des anfragenden Programms, WindID ist die GEM-Kennung des Fensters, auf das gedroppt wurde. ObjectGEM wertet die Daten in dieser Methode allerdings bereits aus, so daß die aufgerufenen Methoden ein Handle der geöffneten Pipe erhalten.

mX, mY und KStat geben die Position der Maus und den Zustand der Umschalttasten beim Aufruf an. APDragDrop sorgt dafür, daß während der in ihr stattfindenden Aktionen das MiNT-Signal SIGPIPE ignoriert wird, damit das Programm nicht fälschlicherweise vom Betriebssystem beendet wird. Wichtig: Innerhalb dieser Methode ist die von TApplication.MUMesag mit wind_update() gesetzte Bildschirm-Sperre ausgeschaltet, um einen sonst möglichen Deadlock zu verhindern.

Wenn DDReadData oder DDReadArgs aufgerufen wurde und true zurückgegeben hat, wird - nachdem die Pipe geschlossen und der Bildschirm wieder blockiert wurde - DDFinished aufgerufen, wo man nun auf die gelesenenen Daten reagieren kann.

4.1.40 TApplication.APTerm

Deklaration

     function APTerm(Why: integer): integer; virtual;

Beschreibung

Diese Methode wird von TApplication.MUMesag aufgerufen, um festzustellen, ob die Applikation (unter MultiTOS) für einen Shutdown beendet werden kann. Wenn em_OK zurückgegeben wird, setzt MUMesag das Feld TApplication.Status auf em_Terminate, d.h. das Programm wird abgebrochen (ohne den Anwender zu fragen). Ansonsten wird dem Betriebssystem das Scheitern des Shutdowns gemeldet.

Standardmäßig macht APTerm nichts anderes, als em_OK zurückzugeben.

4.1.41 TApplication.At

Deklaration

     function At(Index: integer): PWindow;

Beschreibung

Liefert einen Zeiger auf das Fenster mit der fortlaufenden Nummer Index in der MainWindow-Liste (begonnen wird bei Null).

Wenn Index negativ oder MainWindow leer ist, wird nil zurückgegeben. Bei zu großen Werten wird die Liste zyklisch durchlaufen.

4.1.42 TApplication.IndexOf

Deklaration

     function IndexOf(Item: PWindow): integer;

Beschreibung

Liefert die fortlaufende Nummer des Fensterobjekts, auf das Item zeigt, wenn dieses in der MainWindow-Liste vorkommt. Ansonsten wird -1 zurückgegeben.

4.1.43 TApplication.AutoFolder

Deklaration

     function AutoFolder: boolean; virtual;

Beschreibung

Wird von TApplication.InitGEM aufgerufen, wenn das Programm aus dem AUTO-Ordner heraus aufgerufen wurde; hier können dann also evtl. Systeminitialisierungen vorgenommen werden. Ist die Rückgabe false, wird eine entsprechende Fehlermeldung ausgegeben. Anschließend wird das Programm auf jeden Fall beendet.

Standardmäßig wird false zurückgegeben.

4.1.44 TApplication.Cut

Deklaration

     procedure Cut; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<X> drückt. Standardmäßig passiert hier nichts.

4.1.45 TApplication.Delete

Deklaration

     procedure Delete; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Delete> drückt. Standardmäßig passiert hier nichts.

4.1.46 TApplication.Copy

Deklaration

     procedure Copy; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<C> drückt. Standardmäßig passiert hier nichts.

4.1.47 TApplication.Paste

Deklaration

     procedure Paste; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<V> drückt. Standardmäßig passiert hier nichts.

4.1.48 TApplication.SelectAll

Deklaration

     procedure SelectAll; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<A> drückt. Im Moment werden dann alle Icons des Desktops mit TApplication.IconSelect(true,id_No) angewählt.

Hinweis: Da z.Z. noch kein TDesktop-Objekt existiert, kann diese Methode auch noch nicht sinnvoll eingesetzt werden.

4.1.49 TApplication.SendWndMessage

Deklaration

     function SendWndMessage(gHnd: integer;
                Msg: pointer; sID,Icn: boolean): boolean;
                                                virtual;

Beschreibung

Schickt die 16 Bytes lange GEM-Message Msg an die Applikation, die das Fenster mit dem AES-Handle gHnd besitzt. Wird in gHnd ein Wert kleiner gleich Null übergeben, wird die Nachricht an die Applikation des Top-Fensters verschickt.

Msg^[2] wird immer auf Null gesetzt, Msg^[3] auf gHnd (bzw. das Handle des Top-Fensters). Ist sID true, wird Msg^[1] auf TApplication.apID gesetzt. In Icn kann übergeben werden, ob die Message auch an ein ikonifiziertes Fenster geschickt werden soll (true). Anhand der Rückgabe kann man feststellen, ob die Message verschickt wurde (true) oder nicht (false).

Wird vor allem für das Menü-Protokoll benötigt.

4.1.50 TApplication.Broadcast

Deklaration

     procedure Broadcast(Msg: pointer; sID: boolean);
                                                virtual;

Beschreibung

Verschickt eine 16 Bytes lange GEM-Message an alle erreichbaren AES-Prozesse. Nach Möglichkeit wird dazu ein AES-Broadcast per shel_write(7,...) verwendet, alternativ wird auf appl_search() zurückgegriffen. Ist beides nicht vorhanden, wird die XAccList benutzt.

Msg^[2] wird immer auf Null gesetzt. Ist sID true, wird Msg^[1] auf TApplication.apID gesetzt.

4.1.51 TApplication.BubbleHelp

Deklaration

     procedure BubbleHelp(mX,mY: integer; Delay: word;
                                  Hlp: string); virtual;

Beschreibung

Zeichnet an der Position mX,mY eine "BubbleHelp"-Sprechblase, in der der Hilfstext Hlp ausgegeben wird.

Vor dem Verlassen der Hilfe wird mind. Delay Millisekunden lang gewartet (ObjectGEM verwendet als Standardwert 500), danach wird die Hilfe bei Mausklick oder Tastendruck verlassen. Der Text in Hlp kann mit '|' auf mehrere Zeilen verteilt werden, ansonsten wird aber auch ein automatischer Zeilenumbruch abhängig von der aktuellen Auflösung durchgeführt.

4.1.52 TApplication.CanClose

Deklaration

     function CanClose: boolean; virtual;

Beschreibung

Wird von TApplication.MessageLoop aufgerufen, wenn das Programm verlassen werden soll (hervorgerufen z.B. durch Quit). CanClose gibt true zurück, falls ein Beenden möglich ist.

Wurde die Applikation als Accessory unter einem "normalen" (nicht-multitasking) TOS gestartet, ist die Rückgabe immer false. Ansonsten werden alle offenen Fenster abgefragt; nur wenn alle Fenster bei ihrer CanClose-Methode true liefern, gibt auch TApplication.CanClose true zurück.

4.1.53 TApplication.SCChanged

Deklaration

     procedure SCChanged(OrgID: integer; Bits: word;
                                 Ext: string); virtual;

Beschreibung

Die Message SC_CHANGED sollte von einer Applikation an alle anderen im System erreichbaren Applikationen verschickt werden, nachdem am Klemmbrett Änderungen vorgenommen wurden.

In OrgID erhält man die AES-Kennung der verändernden Applikation, in Bits eine Bitmap der auf dem Klemmbrett gespeicherten Dateitypen und in Ext die Datei-Erweiterung der "besten" vorhandenen Datei (z.B. '.RTF'), damit beim Lesen möglichst wenig Information verloren geht.

Durch Auswertung von Bits braucht man das Klemmbrett nur auswerten, wenn die angegebenen Dateitypen überhaupt Verwendung finden können.

4.1.54 TApplication.CHExit

Deklaration

     procedure CHExit(ChID,ChRet: integer); virtual;

Beschreibung

Wird aufgerufen, wenn die Applikation einen Child-Prozess gestartet hat und dieser wieder beendet wurde (unter MultiTOS).

In ChID wird die AES-Kennung des Prozesses und in ChRet der Rückgabecode des Programms übergeben.

4.1.55 TApplication.ChkError

Deklaration

     function ChkError: integer; virtual;

Beschreibung

Liefert den ObjectGEM-Fehlerstatus zurück; eine entsprechende Fehlermeldung kann mit der Methode TApplication.Error angezeigt werden. Wichtig: Diese Methode liefert nicht den Inhalt des TApplication.Status-Feldes zurück, in dem nur die schwerwiegenden Fehler registriert werden; vielmehr kann man mit dieser Methode alle möglichen ObjectGEM-Fehler abfragen.

Nach der Abfrage wird der Zustand wieder auf em_OK zurückgesetzt.

4.1.56 TApplication.ChkSpeedoError

Deklaration

     function ChkSpeedoError: integer; virtual;

Beschreibung

Wenn SpeedoGDOS installiert ist und bei der Verwendung ein Fehler auftritt, wird dieser nicht wie üblich direkt auf den Bildschirm geschrieben. ObjectGEM fängt solche Fehlermeldungen nämlich ab und macht sie dem Programm mit dieser Methode zugänglich. Um ganz sicher zu gehen, sollte man theoretisch nach jedem Speedo-Aufruf den Fehlerstatus abfragen... Nach dem Aufruf wird der Status wieder auf Null gesetzt.

Folgende Fehler können z.Z. auftreten:

0kein Fehler aufgetreten
1Nicht ausreichend Fontdaten geladen
3Unzulässige Font-Spezifikation angefordert
4Fontformat-Fehler
7"Rules requested"
8Fehler beim Lesen der Datei
9Fehler beim Öffnen der Datei
10Font nicht angegeben
11Cache-Speicher voll
12Zeichendaten nicht verfügbar
13Track-Kerning-Daten nicht verfügbar
14Paar-Kerning-Daten nicht verfügbar
-1allgemeiner Speedo-Fehler

SpeedoGDOS ab 5.0 liefert für Type1-Fehlermeldungen Werte zwischen 4000 und 4056, für TrueType-Fehlermeldungen Werte zwischen 4096 und 5632.

4.1.57 TApplication.DDGetPath

Deklaration

     function DDGetPath(WindID: integer): string;
                                            virtual;

Beschreibung

Wird von TApplication.HandleDragDrop aufgerufen, wenn der Sender den Datentyp 'PATH' gewählt hat, d.h. wenn er den Pfad der Applikation wissen möchte.

Im Moment wird hier ein Leerstring zurückgegeben, d.h. die Anfrage wird abgewiesen. Durch Überschreiben dieser Methode kann aber ein beliebiger Pfad zurückgegeben werden.

In WindID erhält man die Kennung des Fensters, auf das gedroppt wurde (hier meist -1).

4.1.58 TApplication.DDGetPreferredTypes

Deklaration

     function DDGetPreferredTypes
                     (WindID: integer): string; virtual;

Beschreibung

Liefert die Extensions der "bevorzugten" Dateien zurück. Es dürfen maximal 8 Extensions geliefert werden, bei weniger Zeichen wird mit Nullbytes aufgefüllt.

Standardmäßig wird ein Leerstring zurückgegeben, d.h. alle Dateitypen werden ausprobiert. Eine genauere Rückgabe könnte z.B. '.RTF.TXT.DOC' lauten.

4.1.59 TApplication.DDHeaderReply

Deklaration

     function DDHeaderReply(dType,dName,fName: string;
                         dSize: longint; OrgID,WindID,
                         mX,mY,KStat: integer): byte;
                                                virtual;

Beschreibung

Wird von TApplication.HandleDragDrop aufgerufen, um dem Sender auf den vorgeschlagenen Dateityp zu antworten.

In dType erhält man die Extension des vorgeschlagenen Dateityps (z.B. '.TXT'), in fName den entsprechenden Dateinamen (ohne Pfadangabe). In dName kann noch optional ein Name für die Daten übergeben werden, der vom Empfänger z.B. zum Beschriften eines Icons benutzt werden kann. dSize gibt die Länge der zu übertragenden Datei an. WindID bezeichnet die Fenster-Kennung (meist -1), OrgID die AES-Kennung des Senders, mX und mY die Position der Maus und KStat den Zustand der Umschalttasten beim Aufruf.

Standardmäßig wird DD_NAK zurückgegeben, folgende Werte sind z.Z. definiert:

DD_OKalles OK; die Daten werden dann mit
TApplication.DDReadData eingelesen
DD_NAKFehler, Abbruch der Kommunikation
DD_EXTder Sender soll einen anderen
Dateityp vorschlagen
DD_LENder Empfänger kann nicht so viele
Daten gleichzeitig verarbeiten
DD_TRASHDatei wurde auf den Mülleimer ge-
zogen; der Sender muß entsprechend
reagieren
DD_PRINTERDatei wurde auf das Drucker-Icon
gezogen; der Sender muß entsprechend
reagieren
DD_CLIPBOARDDatei wurde auf das Klemmbrett-Icon
gezogen; der Sender muß entsprechend
reagieren

4.1.60 TApplication.DDReadData

Deklaration

     function DDReadData(dType,dName,fName: string;
                          dSize: longint; PipeHnd,
                          OrgID,WindID,mX,mY,
                          KStat: integer): boolean;
                                              virtual;

Beschreibung

Wird von TApplication.HandleDragDrop aufgerufen, wenn eine Drag&Drop-Anfrage positiv beantwortet werden konnte und nun die Daten eingelesen werden sollen.

In dType erhält man die Extension des vorgeschlagenen Dateityps (z.B. '.TXT'), in fName den entsprechenden Dateinamen (ohne Pfadangabe). In dName kann noch optional ein Name für die Daten übergeben werden, der vom Empfänger z.B. zum Beschriften eines Icons benutzt werden kann. dSize gibt die Länge der zu übertragenden Datei an. WindID bezeichnet die Fenster-Kennung (meist -1), OrgID die AES-Kennung des Senders, mX und mY die Position der Maus und KStat den Zustand der Umschalttasten beim Aufruf.

PipeHnd enthält das Dateihandle der geöffneten Pipe, auf die nun mit Fread() zugegriffen werden kann.

Wenn die Daten eingelesen werden konnten, sollte true zurückgegeben werden, damit die Methode TApplication.DDFinished aufgerufen wird.

4.1.61 TApplication.DDReadArgs

Deklaration

     function DDReadArgs(dSize: longint; PipeHnd,OrgID,
                  WindID,mX,mY,KStat: integer): boolean;
                                                virtual;

Beschreibung

Wird von TApplication.HandleDragDrop aufgerufen, wenn der Sender den 'ARGS'-Datentyp, also eine Kommandozeile verschickt hat. In dieser Methode kann diese nun (per Fread()) eingelesen werden. Abschließend muß noch die geerbte Methode mit dem um die Anzahl gelesener Zeichen verminderten dSize aufgerufen werden, damit die Pipe vollständig geleert wird.

Wenn in der Kommandozeile mehrere Parameter übergeben werden, sind die einzelnen Parameter durch ein Leerzeichen getrennt. Wenn in einem Parameter ein Leerzeichen vorkommt, wird dieser Parameter in einfache Anführungszeichen gesetzt. Anführungszeichen innerhalb des Parameters werden dann verdoppelt (z.B. "'Eric''s file'").

Wenn die Daten eingelesen werden konnten, sollte true zurückgegeben werden, damit die Methode TApplication.DDFinished aufgerufen wird.

4.1.62 TApplication.DDFinished

Deklaration

     procedure DDFinished(OrgID,WindID,mX,mY,
                            KStat: integer); virtual;

Beschreibung

Wird von TApplication.APDragDrop aufgerufen, wenn TApplication.DDReadData oder TApplication.DDReadArgs true zurückgegeben hat. Der Aufruf erfolgt nach dem Drag&Drop-Protokoll, man hat also wieder volle Kontrolle über den Bildschirm.

In dieser Methode sollten die Eingelesenen Daten ausgewertet werden (Anzeige etc.).

4.1.63 TApplication.DeskRedraw

Deklaration

     procedure DeskRedraw; virtual;

Beschreibung

Zeichnet den Desktop (d.h. das Fenster mit der Kennung 0 bzw. DESK) neu. Wird von InstallDesktop und RemoveDesktop automatisch aufgerufen.

4.1.64 TApplication.DrawMenu

Deklaration

     procedure DrawMenu; virtual;

Beschreibung

Zeichnet die Dropdown-Menüleiste neu, wobei die Besonderheiten von MultiTOS beachtet werden. Wird von TApplication.LoadMenu aufgerufen.

4.1.65 TApplication.Error

Deklaration

     procedure Error(ErrorCode: integer); virtual;

Beschreibung

Zeigt zu einer von TApplication.ChkError gelieferten Fehlernummer die passende Fehlermeldung in einer Alertbox an. Dabei wird die in Attr.Country ermittelte Landessprache beachtet. Z.Z. werden FRG und SWG gesondert behandelt, ansonsten werden englische Texte angezeigt.

TApplication.Status und der mit ChkError abzufragende Fehlercode werden gepuffert.

4.1.66 TApplication.ExecDialog

Deklaration

     function ExecDialog(ADialog: PDialog): integer;
                                               virtual;

Beschreibung

Diese Methode dient zur einfachen Behandlung von Dialogen. Aufgrund einiger Einschränkungen sollten allerdings nach Möglichkeit die entsprechenden TDialog-Methoden verwendet werden.

In ADialog wird ein Pointer auf ein bereits initialisiertes TDialog-Objekt übergeben. Der Dialog wird automatisch modal abgearbeitet und zum Parent-Objekt zentriert. Wichtig: Das Dialogobjekt wird nach der Bearbeitung freigegeben! Ein positiver Rückgabewert gibt den Index des Dialogelements an, mit dem der Dialog verlassen wurde; bei einem Fehler wird em_InvalidDialog zurückgegeben.

4.1.67 TApplication.ExitGEM

Deklaration

     procedure ExitGEM; virtual;

Beschreibung

Wird von TApplication.Done aufgerufen, um das Programm korrekt beim Betriebssystem abzumelden. Zunächst werden RemoveDesktop, TApplication.FreeIcon, TApplication.FreeMenu und FreeResource aufgerufen. Danach werden evtl. geladene GEM-Fonts freigegeben und die VDI-Workstation geschlossen. Zum Schluß wird appl_exit() aufgerufen.

4.1.68 TApplication.FindApplication

Deklaration

     function FindApplication(AName: string;
                              AnID: integer;
                       var XAccAttr: TXAccAttr): boolean;
                                                 virtual;

Beschreibung

Sucht eine Applikation in der XAccList. Bei erfolgreicher Suche wird true zurückgegeben und der in XAccAttr übergebene Record ausgefüllt, ansonsten erhält man false als Rückgabe.

Wenn AName nicht leer ist, wird der Name zur Suche verwendet (Achtung: Das ist der beim XAcc-Protokoll verwendete Name, der nicht mit dem Namen der Programmdatei übereinstimmen muß!), ansonsten wird die AES-Kennung AnID verwendet.

4.1.69 TApplication.FirstWndThat

Deklaration

     function FirstWndThat
                (Test: PIterationFunc): PWindow;

Beschreibung

FirstWndThat ruft für jedes in der MainWindow-Liste eingetragene Fenster die durch Test bestimmte boolesche Funktion auf, bis Test true zurückgibt. FirstWndThat gibt dann den Zeiger auf das Fensterobjekt zurück, für den Test true zurückgegeben hat, oder nil, falls Test immer false geliefert hat. Der Pointer Test sollte eine globale (Unterschied zu ObjectWindows!) Funktion sein, der ein pointer-Parameter übergeben wird und die boolean zurückgibt. Achtung: Im Gegensatz zu ObjectWindows kann bei einer lokalen Test-Funktion nicht auf die Variablen der übergeordneten Routine zugegriffen werden!

Beispiel

     function IstOffen(p: pointer): boolean;
       { ... }

IstOffen sollte eine globale Funktion sein.

     p:=Application^.FirstWndThat(@IstOffen);

4.1.70 TApplication.ForEachWnd

Deklaration

     procedure ForEachWnd(Action: PIterationProc);

Beschreibung

ForEachWnd ruft für jedes in der MainWindow-Liste eingetragene Fenster die durch Action bestimmte Prozedur auf. Der Pointer Action sollte eine globale (Unterschied zu ObjectWindows!) Prozedur sein, der ein pointer-Parameter übergeben wird. Achtung: Im Gegensatz zu ObjectWindows kann bei einer lokalen Prozedur nicht auf die Variablen der übergeordneten Routine zugegriffen werden!

Beispiel

     procedure MacheGross(p: pointer);
       { ... }

MacheGross sollte eine globale Prozedur sein.

     Application^.ForEachWnd(@MacheGross);

4.1.71 TApplication.FreeMenu

Deklaration

     procedure FreeMenu; virtual;

Beschreibung

Entfernt ein mit TApplication.LoadMenu installiertes Dropdown-Menü. Wird von TApplication.ExitGEM automatisch aufgerufen.

4.1.72 TApplication.FreeResource

Deklaration

     procedure FreeResource; virtual;

Beschreibung

Gibt eine mit TApplication.LoadResource geladene bzw. mit TApplication.InitResource eingebundene Resource wieder frei. Wird von TApplication.ExitGEM aufgerufen.

4.1.73 TApplication.GetAddr

Deklaration

     function GetAddr(Indx: integer): PTree; virtual;

Beschreibung

Ermittelt die Adresse des Objektbaumes mit dem Index Indx. Man sollte immer diese Methode und nicht rsrc_gaddr() verwenden, da GetAddr automatisch beachtet, ob die Resource mit InitResource oder mit LoadResource eingebunden wurde.

4.1.74 TApplication.GetClipboard

Deklaration

     function GetClipboard: PClipboard; virtual;

Beschreibung

Liefert das TClipboard-Objekt, das mit der Applikation verknüpft wird. In dieser Methode wird ein TClipboard-Objekt neu instantiiert und ein Zeiger darauf zurückgegeben.

Wird von TApplication.Init aufgerufen.

4.1.75 TApplication.GetCrsRect

Deklaration

     procedure GetCrsRect(var crect: GRECT); virtual;

Beschreibung

Liefert den Bereich zurück, in dem der Mauszeiger von ObjectGEM verändert werden soll. Dies ist normalerweise der Arbeitsbereich des obersten Fensters, wenn bei diesem TWindow.Class.hCursor entsprechend gesetzt ist.

Diese Methode wird intern von TApplication.GetEvent aufgerufen und sollte nicht überschrieben werden.

4.1.76 TApplication.GetCurrInstance

Deklaration

     function GetCurrInstance: integer; virtual;

Beschreibung

Gibt zurück, wie oft die Applikation im Speicher vorhanden ist. Während TApplication.Attr.Instance angibt, als welche Instanz das Programm gestartet wurde, liefert GetCurrInstance den aktuellen Wert. Dieser kann vom Startwert durchaus verschieden sein, da ja zwischenzeitlich dasselbe Programm erneut gestartet worden sein könnte (z.B. unter MultiTOS).

4.1.77 TApplication.GetEvent

Deklaration

     function GetEvent(var data: TEventData): integer;
                                                 virtual;

Beschreibung

Wird von TApplication.MessageLoop aufgerufen, um auf GEM-Messages zu warten. Wenn ein Ereignis aufgetreten ist, muß die übergebene TEventData-Struktur entsprechend ausgefüllt werden.

Normalerweise wird in dieser Methode ein evnt_multi()-Aufruf durchgeführt (siehe Beispiel). Man sollte daran nur etwas ändern, wenn man genau weiß, was man tut, und wenn sich dies nicht anders bewerkstelligen läßt, da sonst die etwas "trickreiche" (aber dennoch saubere) ObjectGEM-Verwaltung sehr leicht durcheinanderkommen kann.

Beispiel

     function TApplication.GetEvent(var data: TEventData): integer;
       var crect: GRECT;

       begin
         GetCrsRect(crect);
         GetEvent:=evnt_multi(Attr.EventMask,258,3,0,0,
                     crect.X,crect.Y,crect.W,crect.H,
                     1,crect.X,crect.Y,crect.W,crect.H,
                     data.Pipe,
                     GetMsTimer mod 65536,GetMsTimer div 65536,
                     data.mX,data.mY,
                     data.BStat,data.KStat,data.Key,
                     data.Clicks)
       end;

4.1.78 TApplication.GetFImagePtr

Deklaration

     function GetFImagePtr(Indx: integer): pointer;
                                              virtual;

Beschreibung

Ermittelt die Adresse des BITBLK-Elements mit dem Index Indx, das sich nicht in einem Dialogbaum befindet.

Man sollte immer diese Methode und nicht rsrc_gaddr() verwenden, da GetFImagePtr automatisch beachtet, ob die Resource mit InitResource oder mit LoadResource eingebunden wurde.

4.1.79 TApplication.GetFString

Deklaration

     function GetFString(Indx: integer): string; virtual;

Beschreibung

Gibt die mit Indx bezeichnete freie Zeichenkette zurück. Sollte immer anstelle von GetFreeString verwendet werden.

4.1.80 TApplication.GetFStringPtr

Deklaration

     function GetFStringPtr(Indx: integer): PChar;
                                             virtual;

Beschreibung

Ermittelt die Adresse einer sog. "freien" Zeichenkette mit dem Index Indx; solche Strings befinden sich in einem speziellen Objektbaum und werden für Texte verwendet, die im Programm außerhalb von Dialogen verwendet werden sollen.

Man sollte immer diese Methode und nicht rsrc_gaddr() verwenden, da GetFStringPtr automatisch beachtet, ob die Resource mit InitResource oder mit LoadResource eingebunden wurde.

4.1.81 TApplication.GetGPWindow

Deklaration

     function GetGPWindow(gHnd: integer): PWindow;

Beschreibung

Gibt den Pointer auf das Fensterobjekt mit der GEM-Kenung gHnd zurück, wenn ein solches Fenster (mit dem dazugehörigen Fensterobjekt) existiert, andernfalls nil.

4.1.82 TApplication.FirstApplication

Deklaration

     function FirstApplication(AType: TAppTypeMR;
                               GenName: string;
                       var XAccAttr: TXAccAttr): boolean;

Beschreibung

Sucht auf Grundlage der XAccList nach bestimmten Programmtypen im Speicher. Diese Funktion ist hauptsächlich für Multitasking-Systeme interessant, da hiermit eine Modularisierung des Systems erreicht werden kann (eine Art rudimentäre "Component Ware"). In AType kann ein maschinenlesbarer Programmtyp übergeben werden (siehe TXAccAttr), in GenName ein sog. "generischer Name". Gesetzte Parameter werden für die Auswertung mit "und" verknüpft. Wenn AType nicht ausgewertet werden soll, muß ' ' übergeben werden; in GenName übergibt man in so einem Fall einen Leerstring.

Wenn keine passende Applikation gefunden wurde, wird false zurückgegeben, true sonst.

4.1.83 TApplication.NextApplication

Deklaration

     function NextApplication
                   (var XAccAttr: TXAccAttr): boolean;

Beschreibung

Liefert die nächste auf die bei FirstApplication angegebenen Werte passende Applikation im Speicher, wenn eine solche vorhanden ist (die Rückgabe ist dann true).

Wenn keine gewünschte Applikation mehr vorhanden ist, wird false zurückgegeben.

4.1.84 TApplication.GetMenuEntries

Deklaration

     procedure GetMenuEntries(var Entries: TMenuEntries);
                                                virtual;

Beschreibung

Diese Methode wird für das Menü-Protokoll benötigt. Sie wird von TApplication.LoadMenu aufgerufen; standardmäßig wird hier die Struktur Entries nur ausgenullt.

Man kann (und sollte) aber die passenden Indizes von Menüeintrag und -titel zuweisen, damit man sich nicht mehr um das Weiterleiten von z.B. <Control>+<V> an die passende Paste-Methode zu kümmern braucht.

In der Praxis sieht es also so aus, daß man die entsprechenden Menüeinträge ("Drucken", "Kopieren", "Schließen" etc.) in der Menüleiste der Applikation zur Verfügung stellt, in dieser Methode dann die Indizes einträgt, und ab dann braucht man sich um diese Menüpunkte nicht mehr zu kümmern!

Wichtig: Das Menü-Protokoll bezieht sich nur auf die Applikations-Menüleiste, nicht aber auf eine Fenster-Menüleiste!

Folgenden Einträgen kann z.Z. eine Funktion zugeordnet werden (die Namen sollten selbsterklärend sein):

     PMenuEntries = ^TMenuEntries;
     TMenuEntries = record
          Close,
          Print,
          Cut,
          Copy,
          Paste,
          Delete,
          SelectAll,
          Quit,
          Full,
          Cycle    : TMenuEntry
     end;

     PMenuEntry = ^TMenuEntry;
     TMenuEntry = record
          Entry,
          Title: integer
     end;

4.1.85 TApplication.GetMsTimer

Deklaration

     function GetMsTimer: longint; virtual;

Beschreibung

Gibt die Anzahl der Millisekunden zurück, auf die für ein Timer-Ereignis gewartet werden soll. Standardmäßig ist dies genau eine Sekunde. Diese Zahl ist allerdings nur dann wirksam, wenn in TApplication.Attr.EventMask das Bit MU_TIMER gesetzt ist, was unter MultiTOS der Fall ist (wird intern benötigt).

GetMsTimer wird von TApplication.GetEvent aufgerufen.

4.1.86 TApplication.GetPTopWindow

Deklaration

     function GetPTopWindow: PWindow;

Beschreibung

Gibt einen Zeiger auf das Fensterobjekt des obersten Fensters zurück, wenn dieses zu der ObjectGEM-Applikation gehört, ansonsten nil.

4.1.87 TApplication.GetPWindow

Deklaration

     function GetPWindow(Hnd: HWnd): PWindow;

Beschreibung

Gibt den Pointer auf das Fensterobjekt mit der ObjectGEM-Kennung Hnd zurück, wenn ein solches Fensterobjekt existiert, andernfalls nil.

Der Unterschied zu TApplication.GetGPWindow ist, daß ein Fensterobjekt immer eine ObjectGEM-interne Kennung besitzt, aber kein GEM-Handle belegen zu braucht (z.B. modale Dialoge). Wenn man nach Fensterobjekten sucht, sollte man also GetPWindow verwenden. Benötigt man aber unbedingt ein zugehöriges GEM-Fenster, muß man GetGPWindow verwenden.

4.1.88 TApplication.GetXAccAttr

Deklaration

     procedure GetXAccAttr(var XAccAttr: TXAccAttr);
                                               virtual;

Beschreibung

Wird von TApplication.Init dazu verwendet, das Feld XAcc auszufüllen.

Standardmäßig wird TXAccAttr.Version auf 0, MsgGroups auf 3 und AppTypeMR auf einen Leerstring gesetzt, TXAccAttr.apID, TXAccAttr.menuID und TXAccAttr.Name auf die entsprechenden Felder des Applikations-Objekts. Alle anderen Pointer werden auf nil gesetzt.

Protocol wird mit PROTO_XACC+PROTO_AV vorbelegt, AVSrvMsg mit MSG_SENDKEY or MSG_STARTPROG or MSG_EXIT und AVAccMsg mit MSG_START.

Diese Methode muß überschrieben werden, wenn dem Programm spezielle XAcc-Eigenschaften zugewiesen werden sollen.

4.1.89 TApplication.HandleAV

Deklaration

     procedure HandleAV(Pipe: Pipearray); virtual;

Beschreibung

Wird aufgerufen, wenn TApplication.MUMesag eine AV-Protokoll-Meldung erhält. ObjectGEM wertet nur die Messages AV_PROTOKOLL, VA_PROTOSTATUS und AV_EXIT aus, alle anderen Nachrichten müssen - wenn das Protokoll verstanden werden soll - in dieser Methode ausgewertet werden.

Eine Dokumentation des AV-Protokolls findet sich in der Beschreibung des Shareware-Desktops GEMINI.

4.1.90 TApplication.HandleButton

Deklaration

     procedure HandleButton(mX,mY,BStat,KStat,
                             Clicks: integer); virtual;

Beschreibung

Wird von TApplication.MUButton aufgerufen, wenn ein dort eintreffender Mausklick nicht verarbeitet werden konnte. Standardmäßig werden hier nur evtl. vorhandene Icons mit IconSelect deselektiert. In mX und mY wird die Position des Klicks, in Clicks die Anzahl, in BStat die gedrückte Maustaste (1=links, 2=rechts) und in KStat der Zustand der Umschalttasten übergeben.

4.1.91 TApplication.HandleDragDrop

Deklaration

     procedure HandleDragDrop(PipeHnd,OrgID,WindID,mX,
                            mY,KStat: integer); virtual;

Beschreibung

Wird von TApplication.APDragDrop aufgerufen, wenn die Drag&Drop-Anfrage keinem Fenster zugeordnet werden konnte.

Zunächst wird die Anfrage positiv beantwortet. Dann werden die von TApplication.DDGetPreferredTypes gelieferten Dateitypen übermittelt. Nachdem sich der Sender auf einen Dateityp festgelegt hat, wird darauf mit dem von TApplication.DDHeaderReply ermittelten Wert reagiert. Wenn sich Sender und Empfänger einigen konnten, werden dann mit TApplication.DDReadData die Daten gelesen, ansonsten wird die Drag&Drop-Anfrage abgewiesen oder ein neuer Dateityp verlangt.

Verschickt der Sender den 'ARGS'-Datentyp, wird automatisch die Methode TApplication.DDReadArgs aufgerufen. Wenn der Sender allerdings den Applikationspfad wissen möchte, wird dieser mit TApplication.DDGetPath zurückgeliefert.

PipeHnd ist das Dateihandle der geöffneten Pipe, auf die mit Fwrite(), Fread() etc. zugegriffen werden kann. OrgID ist die AES-Applikations-Kennung des Senders, WindID ist die GEM-Kennung des Fensters, auf das gedroppt wurde (in dieser Methode meist -1, d.h. die Applikation an sich ist gemeint). mX, mY und KStat geben die Position der Maus und den Zustand der Umschalttasten beim Aufruf an.

4.1.92 TApplication.HandleError

Deklaration

     procedure HandleError; virtual;

Beschreibung

Wird von TApplication.MessageLoop aufgerufen, wenn ein Fehler aufgetreten ist. Falls das Programm den Fehler beheben kann, sollte es TApplication.Status auf em_OK zurücksetzen, damit es nicht beendet wird.

Standardmäßig sorgt diese Methode dafür, daß em_OutOfMemory ignoriert wird.

4.1.93 TApplication.HandleKeybd

Deklaration

     procedure HandleKeybd(Stat,Key: integer); virtual;

Beschreibung

Wird von TApplication.MUKeybd aufgerufen, wenn das aufgetretene Tastaturereignis nicht verarbeitet werden konnte.

Normalerweise leitet diese Methode den Tastendruck an TWindow.WMKeyDown des obersten Fensters weiter (oder, wenn as_XInputMode gesetzt ist, an das Fenster unter dem Mauszeiger).

In Stat wird der Status der Umschalttasten und in Key der VDI-Tastencode übergeben.

Wurde der Tastendruck nicht ausgewertet, wird eine entsprechende AV_SENDKEY-Message an den AV-Server geschickt.

4.1.94 TApplication.HandleM1

Deklaration

     procedure HandleM1(mX,mY,BStat,KStat: integer); virtual;

Beschreibung

Wird von TApplication.MUM1 aufgerufen, wenn das Mausereignis dort nicht verarbeitet werden konnte (was normalerweise der Fall ist).

Diese Methode wird intern zum Verändern des Mauscursors über dem Fensterarbeitsbereich verwendet und sollte deshalb nicht überschrieben werden.

4.1.95 TApplication.HandleM2

Deklaration

     procedure HandleM2(mX,mY,BStat,KStat: integer); virtual;

Beschreibung

Wird von TApplication.MUM2 aufgerufen, wenn das Mausereignis dort nicht verarbeitet werden konnte (was normalerweise der Fall ist).

Diese Methode wird intern zum Verändern des Mauscursors über dem Fensterarbeitsbereich verwendet und sollte deshalb nicht überschrieben werden.

4.1.96 TApplication.HandleMenu

Deklaration

     procedure HandleMenu(meNum: integer); virtual;

Beschreibung

Wird von TApplication.MNSelected aufgerufen, wenn für den Menüeintrag mit dem Index meNum kein zugehöriges TEvent-Objekt vorhanden ist.

Innerhalb dieser Methode kann dann eine case-Abfrage durchgeführt werden. Nach Möglichkeit sollten allerdings TEvent-Objekte zum Einsatz kommen.

HandleMenu macht standardmäßig gar nichts.

4.1.97 TApplication.HandleMesag

Deklaration

     procedure HandleMesag(Pipe: Pipearray); virtual;

Beschreibung

Wird von TApplication.MUMesag aufgerufen, wenn die empfangene GEM-Message unbekannt ist und auch kein TEvent-Objekt etwas damit anfangen kann. Durch Überschreiben dieser Methode können z.B. eigene Nachrichten (mit Nummern ab $5000) verarbeitet werden.

4.1.98 TApplication.HandleTimer

Deklaration

     procedure HandleTimer; virtual;

Beschreibung

Wird von TApplication.MUTimer aufgerufen, wenn ein Timer-Ereignis auftritt. Standardmäßig passiert in dieser Methode nichts.

4.1.99 TApplication.HandleXAcc

Deklaration

     procedure HandleXAcc(Pipe: Pipearray); virtual;

Beschreibung

Wird aufgerufen, wenn TApplication.MUMesag eine XAcc-Protokoll-Meldung erhält, die nicht von einer spezialisierten Methode verarbeitet werden kann. Das sind z.Z. die Meldungen ACC_OPEN, ACC_CLOSE und ACC_ACK.

4.1.100 TApplication.GetIconTitle

Deklaration

     function GetIconTitle: string; virtual;

Beschreibung

Wird von TApplication.MUMesag aufgerufen, wenn die gesamt Applikation ikonifiziert werden soll. Die Rückgabe dient als Fenstertitel des Icon-Fensters; standardmäßig wird TApplication.Name geliefert.

Von der Rückgabe werden z.Z. allerdings nur die ersten 10 (bzw. mit ICFS nur 8) Zeichen beachtet!

4.1.101 TApplication.IconPaint

Deklaration

     procedure IconPaint(Work: GRECT;
                          var PaintInfo: TPaintStruct); virtual;

Beschreibung

Wird aufgerufen, wenn das Icon-Fenster neu gezeichnet werden soll. In Work wird der Arbeitsbereich des Fensters übergeben, da das Applikationsobjekt ja keine Angaben über das Icon-Fenster besitzt.

Standardmäßig wird der Arbeitsbereich einfach nur weiß gefüllt. Die Verfahrensweise ist analog zu TWindow.Paint.

4.1.102 TApplication.IsIconified

Deklaration

     function IsIconified: boolean;

Beschreibung

Gibt true zurück, wenn die gesamte Applikation ikonifiziert ist, d.h. wenn alle Fenster in einem einzigen Icon-Fenster zusammengefaßt sind (erst ab AES 4.10 möglich).

4.1.103 TApplication.InitApplication

Deklaration

     procedure InitApplication; virtual;

Beschreibung

Wird von TApplication.Init aufgerufen, wenn es sich um die erste Instanz des Programms im Speicher handelt.

Die Methode setzt zunächst FirstInstance auf true und versucht dann, alle ObjectGEM-Applikationen über den globalen 'GOBJ'-Cookie zu verketten.

Wenn InitApplication überschrieben wird, sollte in der neuen Methode als erstes die geerbte Methode aufgerufen werden.

4.1.104 TApplication.InitGEM

Deklaration

     procedure InitGEM; virtual;

Beschreibung

Wird von TApplication.Init aufgerufen, um das Programm beim Betriebssystem anzumelden.

Zunächst wird TApplication.apID mit appl_init() ermittelt. Wenn das AES noch nicht aktiv ist, wird TApplication.Status auf em_AESNotActive gesetzt und das Programm damit abgebrochen. Vorher wird jedoch noch AutoFolder aufgerufen.

Ansonsten werden danach unter MiNT/MultiTOS die Signale SIGTERM und SIGQUIT abgefangen. Dann werden die Kommandozeile und der Name des Programms ermittelt und Attr.rpCmd und Attr.rpTail entsprechend gesetzt.

Schließlich werden aesHandle und TApplication.vdiHandle besetzt und somit eine VDI-Workstation geöffnet. Tritt hier ein Fehler auf, wird Status auf em_GEMInitFailure gesetzt. Bei einem Accessory oder einer MultiTOS-Applikation wird noch der Desk-Menüeintrag auf TApplication.Name geändert und TApplication.menuID gesetzt. Ist kein Platz für ein Accessory mehr, wird Status auf em_AccInitFailure gesetzt.

4.1.105 TApplication.InitInstance

Deklaration

     procedure InitInstance; virtual;

Beschreibung

In dieser Methode werden normalerweise alle programmspezifischen Initialisierungen vorgenommen. Wird von TApplication.Init als letzte Aktion aufgerufen. Hier wird das TKeyMenu-Objekt zum Verlassen des Programms mit <Control>+<Q> installiert. Danach wird - wenn as_HandleShutdown gesetzt und MultiTOS aktiv ist - dem Betriebssystem die Fähigkeit zum korrekten Shutdown mitgeteilt. Als letztes wird schließlich TApplication.InitMainWindow aufgerufen. Wenn diese Methode überschrieben wird, sollte die geerbte Methode dann aufgerufen werden, wenn alle Voraussetzungen dafür geschaffen sind, daß dem Öffnen des Hauptfensters nichts mehr im Weg steht.

4.1.106 TApplication.InitMainWindow

Deklaration

     procedure InitMainWindow; virtual;

Beschreibung

Wird von TApplication.InitInstance aufgerufen, um das Hauptfenster der Applikation zu Öffnen. Standardmäßig wird ein einfaches TWindow-Objekt erzeugt, d.h. diese Methode wird eigentlich immer überschrieben.

Man kann hier eigene Fenstertypen erzeugen (auch Fensterdialoge), oder - wenn das Programm zunächst kein Fenster öffnen soll - gar nichts tun.

Beispiel

     procedure TApplication.InitMainWindow;

     begin
       new(PWindow,Init(nil,Name^));
       if (MainWindow=nil) or (ChkError<em_OK) then
         Status:=em_InvalidMainWindow
     end;

4.1.107 TApplication.InitResource

Deklaration

     procedure InitResource(AddrHiRes,AddrLoRes: pointer); virtual;

Beschreibung

Verknüpft eine im Programm mit $L eingebundene Resource (siehe Beispielprogramme) mit der GEM-Applikation. Die Objektdateien (*.O) werden mit dem Programm BINOBJ erzeugt, das dem PurePascal-Paket beiliegt.

In AddrHiRes wird der Pointer der Resource für vertikale Auflösungen >=400 Pixel angegeben, in AddrLoRes der Pointer für alle kleineren Auflösungen. Wenn das Programm nur eine Resource besitzt, setzt man den anderen Pointer einfach auf nil; ObjectGEM wählt immer die bestmögliche Resource.

InitResource paßt alle Koordinaten an die aktuelle Auflösung an und wandelt alle Bitmaps in das gerätespezifische Format.

Man sollte Resourcedateien nach Möglichkeit direkt in das Programm einbinden, damit Accessories keine Probleme mit der Speicherplatzanforderung bekommen. Achtung: Wenn zwei Resourcedateien verwendet werden, muß man darauf achten, daß die Indizes der entsprechenden Objekte gleich sind!

Beispiel

Die Resource-Datei sei MYRSC.RSC, BINOBJ.TTP wird dann mit folgender Kommandozeile aufgerufen:

     myrsc.rsc myrsc.o MyResource

Folgende Zeile wird in das Programm eingefügt:

     procedure MyResource; external; {$L myrsc.o}

Eingebunden wird die Resource dann in der Methode TApplication.InitInstance:

     InitResource(@MyResource,nil);

4.1.108 TApplication.InstallDesktop

Deklaration

     procedure InstallDesktop(tIndx,oIndx: integer); virtual;

Beschreibung

Meldet für die Applikation einen neuen Desktop an, dessen Hintergrundobjekt den Index oIndx im Objektbaum tIndx besitzt. Anschließend wird der neue Desktop mit TApplication.DeskRedraw gezeichnet. Accessories können z.Z. noch keinen eigenen Desktop anmelden, InstallDesktop wird dann einfach ignoriert.

Später wird außerdem noch eine automatische Verwaltung von Icons, Drag&Drop etc. dazukommen.

4.1.109 TApplication.InvalidateRect

Deklaration

     procedure InvalidateRect(Wnd: HWnd; Rect: PGRECT); virtual;

Beschreibung

Zeichnet den in Rect übergebenen Bereich des durch die ObjectGEM-Kennung angegebenen Fensters neu. Wird in Rect ein nil-Pointer übergeben, wird der gesamte Arbeitsbereich des Fensters aktualisiert. Das Neuzeichnen geschieht mit einer GEM-Message, wird also erst zu einem späteren Zeitpunkt durchgeführt.

4.1.110 TApplication.LoadMenu

Deklaration

     procedure LoadMenu(Indx: integer); virtual;

Beschreibung

Installiert die Dropdown-Menüleiste im Objektbaum Indx. Zunächst wird geprüft, ob das Menü auf dem Bildschirm komplett dargestellt werden kann. Ist dies der Fall, wird das Menü gezeichnet, ansonsten gibt ChkError em_InvalidMenu zurück. Diese Methode sollte - falls ein Dropdown-Menü verwendet wird - in TApplication.InitInstance aufgerufen werden.

Wenn das Menü korrekt installiert werden konnte, wird danach GetMenuEntries aufgerufen. Aus kompatibilitätsgründen (zu SetQuit) wird danach eine GOP_SETQUIT-Message verschickt.

4.1.111 TApplication.LoadResource

Deklaration

     procedure LoadResource(FileHiRes,FileLoRes: string); virtual;

Beschreibung

Lädt die Resourcedatei des Programms nach. In FileHiRes wird der Dateiname der Resource für vertikale Auflösungen >=400 Pixel angegeben, in AddrLoRes der Dateiname für alle kleineren Auflösungen. Wenn das Programm nur eine Resource besitzt, übergibt man als anderen Dateinamen einfach einen Leerstring; ObjectGEM wählt immer die bestmögliche Resource.

LoadResource paßt alle Koordinaten an die aktuelle Auflösung an und wandelt alle Bitmaps in das gerätespezifische Format.

Kann die Datei nicht gefunden werden, wird TApplication.Status auf em_RscNotFound gesetzt.

Achtung: Wenn zwei Resourcedateien verwendet werden, muß man darauf achten, daß die Indizes der entsprechenden Objekte gleich sind!

4.1.112 TApplication.LoadIcon

Deklaration

     procedure LoadIcon(icnTree,icnIndx: integer); virtual;

Beschreibung

Weist das Icon mit dem Index icnIndx im Objektbaum icnTree der Applikation zu. Dieses Icon wird, wenn die gesamte Applikation ikonifiziert wird, in dem Icon-Fenster dargestellt.

Dialogobjekte nutzen ebenfalls dieses Icon, wenn ihnen kein eigenes Icon zugewiesen wurde.

4.1.113 TApplication.FreeIcon

Deklaration

     procedure FreeIcon; virtual;

Beschreibung

Gibt das Feld TApplication.Icon frei, d.h. in dem Applikations-Icon-Fenster wird kein Icon mehr dargestellt.

4.1.114 TApplication.MessageLoop

Deklaration

     procedure MessageLoop; virtual;

Beschreibung

Wird von TApplication.Run aufgerufen. Diese Methode ist die zentrale "Nachrichtenvermittlungsstelle" von ObjectGEM.

Solange TApplication.Status größer gleich em_OK ist, wird mit TApplication.GetEvent auf eine GEM-Message gewartet. Je nach Ereignis wird dann MUKeybd, MUButton, MUM1, MUM2, MUMesag oder MUTimer aufgerufen. Wenn ein Fehler aufgetreten ist, wird zunächst TApplication.HandleError aufgerufen. Wenn der Fehler nicht behoben werden konnte, wird das Programm beendet.

Soll das Programm mit TApplication.Quit verlassen werden, wird an dieser Stelle TApplication.CanClose auf Gültigkeit überprüft.

4.1.115 TApplication.MNSelected

Deklaration

     procedure MNSelected(meNum,mtNum: integer;
                           Tree: PTree; PrIndx: integer); virtual;

Beschreibung

Wird von TApplication.MUMesag aufgerufen, wenn der Benutzer einen Menüeintrag angewählt hat. In meNum wird der Index dieses Eintrags, in mtNum der Index des entsprechenden Menütitels übergeben.

Unter neueren AES-Versionen wird in Tree der Zeiger auf den zugehörigen Objektbaum und in PrIndex der Index des dem Eintrag übergeordneten Objekts übergeben; unter alten AES-Versionen wird stattdessen nil bzw. 0 übergeben.

Die Methode versucht, den Menüeintrag mit einem TKeyMenu-Objekt zu verknüpfen; ist für den Eintrag kein derartiges Objekt vorhanden, wird die Methode TApplication.HandleMenu aufgerufen.

MNSelected kümmert sich außerdem um das Invertieren des Menütitels.

4.1.116 TApplication.MUButton

Deklaration

     procedure MUButton(data: TEventData); virtual;

Beschreibung

Wird von TApplication.MessageLoop aufgerufen, wenn ein Mausklick registriert wurde. Zuerst werden alle zum Applikationsobjekt gehörigen TEvent-Objekte benachrichtigt. Wenn keines davon reagieren will, werden anschließend die TEvent-Objekte des obersten Fensters abgefragt. Erst wenn auch hier keine positive Antwort erfolgt, wird der Klick an die Methode TWindow.WMButton weitergeleitet, wenn in den Arbeitsbereich eines Fensters geklickt wurde.

Wurde stattdessen auf den Desktop geklickt, wird - sofern as_Rubbox gesetzt ist - TApplication.Rubbox aufgerufen, und dann evtl. TApplication.MURubbox verständigt.

Trifft keiner der o.g. Fälle zu, wird der Klick an TApplication.HandleButton weitergeleitet.

4.1.117 TApplication.MUKeybd

Deklaration

     procedure MUKeybd(data: TEventData); virtual;

Beschreibung

Wird von TApplication.MessageLoop aufgerufen, wenn ein Tastaturereignis aufgetreten ist. Die Methode versucht, für die gedrückte Taste(nkombination) ein TKeyMenu-Objekt zu finden (so werden z.B. die Menü-Shortcuts erkannt).

Konnte kein solches Objekt gefunden werden (was bei "normalen" Tasten immer der Fall sein sollte, da diese nicht als Shortcuts verwendet werden sollten), wird TApplication.HandleKeybd aufgerufen. Standard-Shortcuts (^X, ^C, ^V, ^W etc.) werden allerdings abgefangen und geeignet interpretiert (d.h. an die zugehörigen Methoden weitergeleitet).

4.1.118 TApplication.MUM1

Deklaration

     procedure MUM1(data: TEventData); virtual;

Beschreibung

Wird von TApplication.MessageLoop aufgerufen, wenn ein Mausereignis für das erste Mausrechteck eingetreten ist. MUM1 versucht, für das Ereignis ein TEvent-Objekt zu finden.

Normalerweise sollte ein solches nicht existieren, da die beiden Mausrechtecke für interne Zwecke verwendet werden. In einem solchen Fall wird die Methode TApplication.HandleM1 aufgerufen.

4.1.119 TApplication.MUM2

Deklaration

     procedure MUM2(data: TEventData); virtual;

Beschreibung

Wird von TApplication.MessageLoop aufgerufen, wenn ein Mausereignis für das zweite Mausrechteck eingetreten ist. MUM2 versucht, für das Ereignis ein TEvent-Objekt zu finden.

Normalerweise sollte ein solches nicht existieren, da die beiden Mausrechtecke für interne Zwecke verwendet werden. In einem solchen Fall wird die Methode TApplication.HandleM2 aufgerufen.

4.1.120 TApplication.MUMesag

Deklaration

     procedure MUMesag(data: TEventData); virtual;

Beschreibung

Wird von TApplication.MessageLoop aufgerufen, wenn das Programm eine GEM-Nachricht erhält.

Zunächst wird mit wind_update() eine Bildschirmblockierung für die gesamte Methode durchgeführt. Wenn data.Pipe[2] einen Wert größer Null enthält, werden MessageBuffer und MessageBLen entsprechend gesetzt, ansonsten sind sie nil bzw. 0.

Danach versucht MUMesag, die in data.Pipe[0] übergebene Nachricht einer der folgenden Methoden zuzuordnen: ACClose, ACOpen, APDragDrop, APTerm, AVExit, AVProtokoll, CHExit, Copy, Cut, HandleAV, HandleXAcc, MNSelected, Paste, Print, ResChCompleted, SCChanged, SelectAll, ShutCompleted, SHWDraw, VAProtoStatus, WMArrowed, WMBottomed, WMClosed, WMFulled, WMHSlid, WMIconify, WMMoved, WMNewTop, WMOnTop, WMRedraw, WMShaded, WMSized, WMTopped, WMUniconify, WMUnshaded, WMUntopped, WMVSlid, XAccAcc, XAccExit, XAccID, XAccIMG, XAccKey, XAccMeta oder XAccText.

Klappt dies nicht, wird versucht, die Nachricht an ein TEvent-Objekt weiterzuleiten. Scheitert auch dies, wird schließlich TApplication.HandleMesag aufgerufen.

4.1.121 TApplication.MURBoxChanged

Deklaration

     procedure MURBoxChanged(r: GRECT); virtual;

Beschreibung

Wird von TApplication.Rubbox jedesmal dann aufgerufen, wenn sich die Größe der vom Benutzer im Fenster aufgezogenenen Rubbox ändert. Dies kann z.B. dazu verwendet werden, um die aktuelle Größe, die in r übergeben wird, anzuzeigen etc.

Während des Aufrufs ist die Maus unsichtbar, und es liegt eine wind_update()-Schachtelung sowohl mit BEG_UPDATE als auch mit BEG_MCTRL vor. Veränderte VDI-Attribute müssen zurückgesetzt werden.

4.1.122 TApplication.MURubbox

Deklaration

     procedure MURubbox(r: GRECT); virtual;

Beschreibung

Wird von TApplication.MUButton aufgerufen, wenn der Benutzer auf dem Desktop eine Rubbox aufgezogen hat. In r wird der ausgewählte Bereich übergeben.

4.1.123 TApplication.MUTimer

Deklaration

     procedure MUTimer(data: TEventData); virtual;

Beschreibung

Wird von TApplication.MessageLoop aufgerufen, wenn ein Timer-Ereignis aufgetreten ist. Macht im Moment nichts weiter, als TApplication.HandleTimer aufzurufen. Später werden hier allerdings die Fenster-Timer verwaltet.

4.1.124 TApplication.Popup

Deklaration

     function Popup(APopup: PPopup; x,y,
                      Flag: integer): integer; virtual;

Beschreibung

Ermöglicht die einfache Abarbeitung eines TPopup-Objekts. In APopup wird der Pointer auf ein bereits initialisiertes Objekt übergeben, in x, y und Flag die Werte für TPopup.pX, TPopup.pY und TPopup.pFlag. Letzterer ist normalerweise POP_CENTER. Nach der Bearbeitung wird das TPopup-Objekt freigegeben. Die Rückgabe entspricht der von TPopup.Execute.

4.1.125 TApplication.Quit

Deklaration

     procedure Quit; virtual;

Beschreibung

Muß aufgerufen werden, wenn das Programm beendet werden soll (was dann am Ende des aktuellen Durchlaufs von MessageLoop geschieht).

Intern wird TApplication.Status auf em_Quit gesetzt; dies sollte man allerdings nie selbst tun, sondern immer Quit verwenden!

Wird von WMClosed aufgerufen, wenn cs_QuitOnClose gesetzt ist.

4.1.126 TApplication.RemoveDesktop

Deklaration

     procedure RemoveDesktop; virtual;

Beschreibung

Entfernt einen mit TApplication.InstallDesktop angemeldeten Desktop, so daß der ursprüngliche Desktop wieder sichtbar wird.

Wird von TApplication.ExitGEM aufgerufen.

4.1.127 TApplication.ResChCompleted

Deklaration

     procedure ResChCompleted(Stat: integer); virtual;

Beschreibung

Wird von TApplication.MUMesag aufgerufen, wenn das Programm einen Auflösungswechsel initiiert hat (mit shel_write() Modus 5).

Ist Stat=1, wurde der Wechsel bis jetzt erfolgreich beendet (d.h. keine Anwendung hat sich widersetzt). Nun muß sich das Programm nur noch selbst beenden, was ResChCompleted dadurch tut, indem TApplication.Status auf em_Terminate gesetzt wird. Der Benutzer hat also keine Möglichkeit mehr, dies zu Verhindern - wenn man einen Auflösungswechsel initiiert, sollte man also bereits wissen, ob die eigene Applikation beendet werden darf!

4.1.128 TApplication.RestoreModalDialog

Deklaration

     procedure RestoreModalDialog(p: PWindow); virtual;

Beschreibung

Restauriert einen modalen Dialog, wenn aus diesem heraus ein weiterer Dialog aufgerufen und wieder beendet wurde. In p wird der Pointer auf das entsprechende Dialogobjekt übergeben. Nicht-modale Dialoge (und damit auch Fenster) werden automatisch beachtet.

RestoreModalDialog wird von TDialog beim Verlassen eines modalen Dialogs und von FileSelect aufgerufen. Normalerweise braucht man diese Methode nicht selbst aufzurufen.

4.1.129 TApplication.Rubbox

Deklaration

     function Rubbox(WHnd,x,y,xmin,ymin,xmax,
                      ymax: integer; var r: GRECT): boolean; virtual;

Beschreibung

Wird von TWindow.WMButton und TApplication.MUButton aufgerufen, wenn der Benutzer eine Rubbox ("Gummibandbox") aufziehen will. Rubbox kümmert sich um die komplette Abarbeitung eines solchen Vorgangs (incl. korrektem Zeichnen unter Beachtung der Rechteckliste und dem Selektieren evtl. vorhandener TIcon-Objekte).

In WHnd wird die GEM-Kennung des betreffenden Fensters oder DESK für das Desktop übergeben. x und y geben die Anfangs-Mausposition an, xmin, ymin, xmax und ymax die (absoluten) Koordinaten des Begrenzungsrechtecks.

Das Abbrechen des Aufziehens der Rubbox kann durch Drücken der rechten Maustaste bei gedrückter linker Maustaste erreicht werden.

Wurde das Aufziehen nicht abgebrochen und ist die Rubbox nicht nur ein Pixel groß, enthält r anschließend die Endgröße der Rubbox und die Methode gibt true zurück. Ansonsten erhält man false, und r wird nicht verändert.

Während des Aufziehens wird bei einer Änderung der Größe - abhängig von WHnd - entweder MURBoxChanged oder TWindow.WMRBoxChanged und TWindow.WMRBoxCheck des zugehörigen Fensters aufgerufen.

4.1.130 TApplication.Run

Deklaration

     procedure Run; virtual;

Beschreibung

Ist normalerweise die einzige Methode (außer den Methoden TApplication.Init und TApplication.Done), die innerhalb des Hauptprogramms aufgerufen wird.

Zuerst wird hier der Mauscursor mit ArrowMouse als Pfeil dargestellt. Wenn TApplication.Status einen nichtnegativen Wert enthält, wird danach TApplication.MessageLoop aufgerufen und damit das eigentliche Programm "gestartet".

Außerdem wird TApplication.Terminate am Ende des Programms nur dann aufgerufen, wenn die Programmausführung erfolgreich bis zu diesem Punkt gelangt ist!

Beispiel

     program Minimal;

       var MyApp: TApplication;

     begin
       MyApp.Init('Minimal');
       MyApp.Run;
       MyApp.Done
     end.

4.1.131 TApplication.SetQuit

Deklaration

     procedure SetQuit(mNum,tNum: integer); virtual;

Beschreibung

Ermöglicht es, dem TKeyMenu-Objekt, das in der Methode TApplication.InitInstance zum Beenden des Programms durch <Control>+<Q> angelegt wird, den Menüeintrag und den entsprechenden Titel zuzuweisen, mit dem das Programm alternativ verlassen werden kann. Als Programmierer braucht man sich dann nicht weiter darum zu kümmern. mNum und tNum sind die Indizes von Menüeintrag und -titel. SetQuit muß - sofern es verwendet wird - in InitInstance nach dem Aufruf der geerbten Methode und TApplication.LoadMenu aufgerufen werden.

Hinweis: Mittlerweile gibt es im Rahmen des Menü-Protokolls mit GetMenuEntries eine elegantere Lösung, zu deren Gunsten SetQuit nicht mehr verwendet werden sollte!

4.1.132 TApplication.SetupVDI

Deklaration

     procedure SetupVDI; virtual;

Beschreibung

Wird von TApplication.Init aufgerufen, um die VDI-Workstation mit festen Werten zu initialisieren. Zunächst werden jedoch - wenn GDOSActive true und as_LoadFonts gesetzt ist - alle verfügbaren GEM-Fonts nachgeladen. Daraus folgt, daß - wenn die Anwendung auf GEM-Zeichensätze zurückgreifen will - SetupVDI überschrieben werden muß und die geerbte Methode erst dann aufgerufen werden darf, wenn man as_LoadFonts gesetzt hat!

Danach werden folgende Werte gesetzt (Schreibweise abgekürzt): vswr_mode(MD_REPLACE), vsl_udsty($5555), vsl_type(LT_SOLID), vsf_perimeter(PER_ON), vsl_color(Black), vsl_ends(LE_SQUARED,LE_SQUARED), vsm_type(MT_DOT), vsm_height(1), vsm_color(Black), vst_rotation(0), vsf_style(4), vsf_color(Black), vst_alignment(TA_LEFT,TA_BASELINE), vsl_width(1), vst_color(Black), vsf_interior(FIS_HOLLOW), vst_effects(TF_NORMAL).

Außerdem werden das Clipping auf die Größe des gesamten Desktops, vst_font() auf den ersten verfügbaren Font (das ist normalerweise der Systemzeichensatz) und dieser Font auf die "normale" Höhe (d.h. die des "großen" Fonts auf dem Desktop) gesetzt.

4.1.133 TApplication.ShutCompleted

Deklaration

     procedure ShutCompleted(Stat,ErrID,ErrCode: integer); virtual;

Beschreibung

Wird von TApplication.MUMesag aufgerufen, wenn das Programm das System heruntergefahren hat (mittels shel_write() Modus 4).

Ist Stat=1, hat der Shutdown wie gewünscht funktioniert, die Applikation kann nun mit ihren Aktionen fortfahren (für entsprechende Reaktionen sollte ShutCompleted daher überschrieben werden, da standardmäßig nichts geschieht).

Andernfalls erhält man in ErrID die AES-ID des Programms, das den Shutdown nicht korrekt durchführen konnte, und in ErrCode den Grund des Scheiterns in Form eines Fehlercodes.

4.1.134 TApplication.SHWDraw

Deklaration

     procedure SHWDraw(Drive: integer); virtual;

Beschreibung

Sollte von Applikationenan die System-Shell (den Desktop) geschickt werden, wenn auf einem Laufwerk Dateien geändert wurden.

Wenn man mit ObjectGEM eine Shell realisiert, erhält man in dieser Methode also eine solche Meldung und kann entsprechend z.B. mit dem Update des Laufwerksfensters reagieren. In Drive wird die Laufwerksnummer (A=0, B=1 etc.) bzw. -1 zum Update aller Laufwerke übergeben.

4.1.135 TApplication.Terminate

Deklaration

     procedure Terminate; virtual;

Beschreibung

Wird von TApplication.Done vor dem Verlassen des Programms (aber bereits nach dem Schließen aller Fenster) aufgerufen, um eine korrekte Deinstallation zu ermöglichen.

Diese Methode wird allerdings nur dann aufgerufen, wenn bis zum Aufruf von TApplication.Run keine Fehler aufgetreten sind, d.h. wenn die Installation geklappt hat.

4.1.136 TApplication.VAProtoStatus

Deklaration

     procedure VAProtoStatus(OrgID: integer; Msg: word;
                                 AName: string); virtual;

Beschreibung

OrgID bezeichnet die AES-Kennung des AV-Servers, Msg ist eine Bitmap der verstandenen Nachrichten und AName enthält den Namen der Programmdatei. Die genaue Funktionsweise steht in der AV-Dokumentation und ist auch für Programmierer an dieser Stelle unwichtig, da ObjectGEM die komplette Verwaltung übernimmt.

4.1.137 TApplication.AVExit

Deklaration

     procedure AVExit(OrgID: integer); virtual;

Beschreibung

OrgID bezeichnet die AES-Kennung der Applikation, die nicht mehr am AV-Protokoll teilnimmt. Die genaue Funktionsweise steht in der AV-Dokumentation und ist auch für Programmierer an dieser Stelle unwichtig, da ObjectGEM die komplette Verwaltung übernimmt.

4.1.138 TApplication.AVInsert

Deklaration

     function AVInsert(accID: integer; SrvMsg,
                        AccMsg: word; AName: string): boolean;
                                                        virtual;

Beschreibung

Diese Methode wird immer dann aufgerufen, wenn sich eine neue AV-Applikation angemeldet hat. Wenn die Applikation bereits angemeldet ist (sollte nicht vorkommen), wird false zurückgegeben. Ansonsten ist die Rückgabe true, die Daten werden ausgewertet und in die XAccList eingetragen.

Wenn man darauf wartet, daß sich eine bestimmte Applikation ins System einklinkt, sollte man diese Methode überschreiben und nach Aufruf der geerbten Methode die XAccList auswerten.

4.1.139 TApplication.AVProtokoll

Deklaration

     procedure AVProtokoll(OrgID: integer; Msg: word;
                                    AName: string); virtual;

Beschreibung

OrgID bezeichnet die AES-Kennung des Accessories, Msg ist eine Bitmap der verstandenen Nachrichten und AName enthält den Namen der Programmdatei. Die genaue Funktionsweise steht in der AV-Dokumentation und ist auch für Programmierer an dieser Stelle unwichtig, da ObjectGEM die komplette Verwaltung übernimmt.

4.1.140 TApplication.AVStartProg

Deklaration

     procedure AVStartProg(OrgID,Ret: integer;
                            Prg,Cmd: string); virtual;

Beschreibung

Nach dem Empfang dieser Message wird - sofern das Programm kein Acessory ist - die Applikation Prg mit Pexec(0,Prg,Cmd,nil) nachgestartet. Nach dem Start wird an den Absender der Ursprungsmessage eine VA_PROGSTART-Message mit dem Returncode Ret geschickt.

4.1.141 TApplication.AVSendKey

Deklaration

     procedure AVSendKey(Stat,Key: integer); virtual;

Beschreibung

Der in dieser Message empfangene Tastendruck wird direkt an MUKeybd weitergeleitet.

4.1.142 TApplication.VAStart

Deklaration

     procedure VAStart(OrgID: integer; Cmd: string); virtual;

Beschreibung

Das Accessory soll sich öffnen. rpTail wird auf Cmd gesetzt, danach wird ACOpen(menuID) aufgerufen.

In OrgID erhält man die AES-ID der aufrufenden Shell (z.B. Gemini).

4.1.143 TApplication.XAccAcc

Deklaration

     procedure XAccAcc(accID,mID: integer; Msg,
                        Ver: byte; pName: PChar); virtual;

Beschreibung

accID bezeichnet die AES-Kennung des bei der Hauptapplikation angemeldeten Accessories (bzw. unter MultiTOS die Applikations-Kennung selbst). mID, Msg und Ver entsprechen den Feldern im Record TXAccAttr, pName zeigt auf den Namen des Accessories incl. der "Extended names".

Die genaue Funktionsweise steht in der XAcc-Dokumentation und ist auch für Programmierer an dieser Stelle unwichtig, da ObjectGEM die komplette Verwaltung übernimmt.

4.1.144 TApplication.XAccExit

Deklaration

     procedure XAccExit(OrgID: integer); virtual;

Beschreibung

OrgID bezeichnet die AES-Kennung der terminierenden Applikation.

Die genaue Funktionsweise steht in der XAcc-Dokumentation und ist auch für Programmierer an dieser Stelle unwichtig, da ObjectGEM die komplette Verwaltung übernimmt.

4.1.145 TApplication.XAccID

Deklaration

     procedure XAccID(OrgID,mID: integer; Msg,
                       Ver: byte; pName: PChar); virtual;

Beschreibung

OrgID bezeichnet die AES-Kennung der neu gestarteten Applikation oder des Accessories. mID, Msg und Ver entsprechen den Feldern im Record TXAccAttr, pName zeigt auf den Namen des Accessories incl. der "Extended names".

Die genaue Funktionsweise steht in der XAcc-Dokumentation und ist auch für Programmierer an dieser Stelle unwichtig, da ObjectGEM die komplette Verwaltung übernimmt.

4.1.146 TApplication.XAccIMG

Deklaration

     function XAccIMG(OrgID: integer; pData: pointer;
                       lData: longint; Final: boolean): boolean;
                                                       virtual;

Beschreibung

Mit dieser Methode können IMG-Rastergrafiken empfangen werden. OrgID bezeichnet die AES-Kennung des Senders, pData zeigt auf die Daten (die unter MultiTOS im globalen Speicher liegen müssen). Die Grafik muß nicht an einem Stück gesendet werden, in diesem Fall ist Final erst dann true, wenn das letzte Teil versendet wird. lData gibt die Länge des zu verschickenden Teils in Bytes an. Wenn die Daten verarbeitet werden können, muß true zurückgegeben werden. Standard-Rückgabe ist false.

Wichtig: Um das Einlesen und Verarbeiten innerhalb dieser Methode muß man sich selbst kümmern!

4.1.147 TApplication.XAccInsert

Deklaration

     function XAccInsert(accID,mID: integer; Msg,
                          Ver: byte; pName: PChar): boolean;
                                                   virtual;

Beschreibung

Diese Methode wird immer dann aufgerufen, wenn sich eine neue XAcc-Applikation angemeldet hat. Wenn die Applikation bereits angemeldet ist (sollte nicht vorkommen), wird false zurückgegeben. Ansonsten ist die Rückgabe true, die Daten (incl. der "Extended names") werden ausgewertet und in die XAccList eingetragen.

Wenn man darauf wartet, daß sich eine bestimmte Applikation (bzw. ein Programmtyp) ins System einklinkt, sollte man diese Methode überschreiben und nach Aufruf der geerbten Methode die XAccList auswerten.

Wichtig: Wenn pName einen Zeiger<=$7fff enthält, geht die Methode davon aus, daß ein falscher Pointer übergeben wurde und ignoriert den Aufruf!

4.1.148 TApplication.XAccKey

Deklaration

     function XAccKey(OrgID,Stat,Key: integer): boolean; virtual;

Beschreibung

Mit dieser Methode kann ein Tastendruck empfangen werden. OrgID ist die AES-Kennung der sendenden Applikation, Key enthält den Scancode der Taste und Stat den Status der Umschalttasten. Wenn der Tastendruck verarbeitet werden kann, muß true zurückgegeben werden. ObjectGEM leitet die Nachricht standardmäßig an MUKeybd weiter.

4.1.149 TApplication.XAccMeta

Deklaration

     function XAccMeta(OrgID: integer; pData: pointer;
                        lData: longint; Final: boolean): boolean;
                                                        virtual;

Beschreibung

Mit dieser Methode können GEM-Vektorgrafiken empfangen werden. OrgID bezeichnet die AES-Kennung des Senders, pData zeigt auf die Daten (die unter MultiTOS im globalen Speicher liegen müssen). Die Grafik muß nicht an einem Stück gesendet werden, in diesem Fall ist Final erst dann true, wenn das letzte Teil versendet wird. lData gibt die Länge des zu verschickenden Teils in Bytes an. Wenn die Daten verarbeitet werden können, muß true zurückgegeben werden. Standard-Rückgabe ist false.

Wichtig: Um das Einlesen und Verarbeiten innerhalb dieser Methode muß man sich selbst kümmern!

4.1.150 TApplication.XAccText

Deklaration

     function XAccText(OrgID: integer;
                        pText: pointer): boolean; virtual;

Beschreibung

Mit dieser Methode können ASCII-Texte empfangen werden. OrgID bezeichnet die AES-Kennung des Senders, pText zeigt auf die Textdaten (die unter MultiTOS im globalen Speicher liegen müssen). Der Text darf nur ASCII-Codes>=32 enthalten, abgesehen von HT (Tab), LF und CR. Andere Steuerzeichen dürfen nur dann verwendet werden, wenn der Empfänger diese sicher auswerten kann.

Wichtig: Um das Einlesen und Verarbeiten innerhalb dieser Methode muß man sich selbst kümmern!

4.1.151 TApplication.IconSelect

Deklaration

     procedure IconSelect(OnOff: boolean;
                           OffExc: integer); virtual;

Beschreibung

Wenn OnOff true ist, werden alle Icons des Desktops selektiert. Andernfalls werden die Icons deselektiert (auch die der Fenster in der MainWindow-Liste) - mit Ausnahme des Fensters mit dem GEM-Handle OffExc (wobei auch DESK übergeben werden kann).

Sollen alle Icons deselektiert werden, muß für OffExc id_No übergeben werden.

4.1.152 TApplication.FirstIcon

Deklaration

     function FirstIcon(OnAll: boolean): PIcon; virtual;

Beschreibung

Ist OnAll true, wird ein Pointer auf das erste selektierte Icon geliefert. Ansonsten wird das erste von allen Icons zurückgegeben. Existiert kein entsprechendes Icon, erhält man nil.

4.1.153 TApplication.NextIcon

Deklaration

     function NextIcon: PIcon; virtual;

Beschreibung

Gibt das nächste selektiert Icon bzw. Icon überhaupt zurück, je nachdem, welche Parameter an TApplication.FirstIcon übergeben wurden.

4.2 TButton

Objekte dieses Typs verwalten sog. Push-Buttons, die normalerweise zum Verlassen des Dialogs führen (z.B. "OK", "Abbruch"). Aber auch die speziellen Aktions-Buttons (z.B. "Help") können hiermit recht einfach behandelt werden.

Pointer

     PButton = ^TButton;

Methoden

Vorfahre

Nachfahre

4.2.1 TButton.Init

Deklaration

     constructor Init(AParent: PDialog;
                      AnIndx,AnID: integer;
                      UserDef: boolean; Hlp: string);

Beschreibung

Ruft den Vorfahren TControl.Init auf und setzt TControl.Style auf cs_PushButton (or bs_DefPushButton, falls es sich um den Default-Exit-Button handelt). Ist UserDef true und AnIndx der Index eines G_BUTTON-Objekts, wird TButton.Install aufgerufen, UsrDef auf true gesetzt und der Button im 3D-Look gezeichnet. Wenn UsrDef false ist und AnID eine der Konstanten id_OK..id_Esc enthält, wird aus dem Button ein spezieller Aktions-Button, der in TDialog gesondert behandelt wird. Ist der Button vom Typ G_BOXTEXT, wird er im Farbmodus dann automatisch gelb dargestellt. Soll dem Button keine spezielle Bedeutung zukommen, muß AnID gleich id_No sein.

4.2.2 TButton.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Macht alle Veränderungen von TButton.Install rückgängig und ruft den Vorfahren TControl.Done auf.

Wenn UsrDef true ist, wird vorher noch Deinstall aufgerufen.

4.2.3 TButton.Install

Deklaration

     function Install: boolean; virtual;

Beschreibung

Wenn das Dialogelement vom Typ G_BUTTON ist, wird UsrDef auf true gesetzt und ein benutzerdefiniertes 3D-Button-Objekt installiert.

Wenn die Funktion false zurückliefert, wird die Installation von TButton.Init abgebrochen. Standardmäßig wird allerdings immer true zurückgegeben.

4.2.4 TButton.Deinstall

Deklaration

     procedure Deinstall; virtual;

Beschreibung

Macht die Änderungen von TButton.Install rückgängig. Wird von TButton.Done aufgerufen.

4.2.5 TButton.GetText

Deklaration

     function GetText: string; virtual;

Beschreibung

Gibt den Text des Dialogelementobjekts zurück.

Wichtig: Eine evtl. vorhandene Shortcut-Markierung ('&') wird aus der Zeichenkette entfernt!

4.2.6 TButton.SetText

Deklaration

     procedure SetText(ATextString: string); virtual;

Beschreibung

Ändert den Text des Buttons. Der Shortcut für den Button muß mit '&' markiert werden (z.B. '&OK'), dieser braucht nicht mit dem früheren Shortcut identisch zu sein! Anschließend wird der Button neu gezeichnet.

4.3 TCheckBox

Mit TCheckBox werden Buttons verwaltet, die jeder für sich einen Zustand repräsentieren ("an", "aus"). Der angeschaltete Zustand wird dabei normalerweise durch ein Häkchen gekennzeichnet.

Pointer

     PCheckBox = ^TCheckBox;

Methoden

Vorfahre

Nachfahren

4.3.1 TCheckBox.Init

Deklaration

     constructor Init(AParent: PDialog; AnIndx: integer;
                          UserDef: boolean; Hlp: string);

Beschreibung

Ruft den Vorfahren TButton.Init auf, setzt TControl.Style auf cs_CheckBox und schaltet den Transfer-Mechanismus ein. Ist UserDef true, wird die Checkbox im 3D-Look gezeichnet.

4.3.2 TCheckBox.Install

Deklaration

     function Install: boolean; virtual;

Beschreibung

Wenn das Dialogelement vom Typ G_BUTTON ist, wird UsrDef auf true gesetzt und die Checkbox im 3D-Look gezeichnet.

Wenn die Funktion false zurückliefert, wird die Installation von TCheckBox.Init abgebrochen. Standardmäßig wird allerdings immer true zurückgegeben.

4.3.3 TCheckBox.Deinstall

Deklaration

     procedure Deinstall; virtual;

Beschreibung

Hier können Änderungen von TCheckBox.Install rückgängig gemacht werden.

Standardmäßig wird TButton.Deinstall aber nur mit einer Leermethode überschrieben und damit ineffektiv gemacht.

4.3.4 TCheckBox.Transfer

Deklaration

     function Transfer(DataPtr: pointer;
                     TransferFlag: word): word; virtual;

Beschreibung

Überträgt den Zustand der Checkbox (siehe bf_XXXX-Konstanten) vom und in das Word, auf das DataPtr zeigt. Rückgabe ist immer 2.

4.3.5 TCheckBox.SetCheck

Deklaration

     procedure SetCheck(CheckFlag: integer); virtual;

Beschreibung

Setzt den Zustand der Checkbox, d.h. bf_Checked oder bf_Unchecked (bzw. bei TTriState evtl. auch bf_Grayed).

4.3.6 TCheckBox.GetCheck

Deklaration

     function GetCheck: integer; virtual;

Beschreibung

Gibt den Zustand der Checkbox zurück.

4.3.7 TCheckBox.Check

Deklaration

     procedure Check; virtual;

Beschreibung

Ruft SetCheck(bf_Checked) auf und markiert dadurch das Dialogelement.

4.3.8 TCheckBox.Uncheck

Deklaration

     procedure Uncheck; virtual;

Beschreibung

Ruft SetCheck(bf_Unchecked) auf und versetzt das Dialogelement dadurch in den nichtmarkierten Zustand.

4.3.9 TCheckBox.Toggle

Deklaration

     procedure Toggle; virtual;

Beschreibung

Der Objektstatus wird zwischen bf_Unchecked und bf_Checked gewechselt (bzw. bei TTriState in der Reihenfolge bf_Unchecked, bf_Checked, bf_Grayed zyklisch durchlaufen).

4.4 TClipboard

TClipboard regelt den Zugriff auf das globale AES-Klemmbrett. Eine Beschreibung findet sich unter "Clipboard-Verwaltung".

Pointer

     PClipboard = ^TClipboard;

Felder

Methoden

Vorfahre

Nachfahre

-

4.4.1 TClipboard.Parent

Deklaration

     Parent: PObject;  (nur lesen)

Beschreibung

Enthält einen Zeiger auf das besitzende Objekt.

Wird von TClipboard.Init gesetzt.

4.4.2 TClipboard.Init

Deklaration

     constructor Init(AParent: PObject);

Beschreibung

Ruft zunächst den Vorfahren TObject.Init auf, danach wird TClipboard.Parent auf AParent gesetzt.

4.4.3 TClipboard.CloseClipboard

Deklaration

     function CloseClipboard: boolean; virtual;

Beschreibung

Schließt das Klemmbrett und gibt es damit wieder frei. Wenn schreibend zugegriffen wurde, wird anschließend eine SC_CHANGED-Message verschickt. Damit diese korrekt gesetzt wird, sollte vorher SetClipboardFormat aufgerufen werden. Wenn das Klemmbrett geschlossen werden konnte, wird true zurückgegeben.

Zusätzlich werden eine SH_WDRAW- und AV_PATH_UPDATE- Message verschickt, wenn das Klemmbrett verändert wurde.

4.4.4 TClipboard.EmptyClipboard

Deklaration

     function EmptyClipboard: boolean; virtual;

Beschreibung

Löscht alle 'SCRAP.*'-Dateien im Klemmbrett. Wenn das Klemmbrett anschließend leer ist, wird true zurückgegeben und SetClipboardFormat(SCF_INDEF,`) aufgerufen.

Wird von TClipboard.OpenClipboard aufgerufen.

4.4.5 TClipboard.GetClipboardFilename

Deklaration

     function GetClipboardFilename: string; virtual;

Beschreibung

Gibt den Pfad und Dateinamen (ohne Extension) des Klemmbretts zurück (z.B. 'C:\CLIPBRD\SCRAP.') oder einen Leerstring, wenn das Clipboard-Objekt keine Zugriffsberechtigung besitzt.

4.4.6 TClipboard.GetPriorityClipboardFormat

Deklaration

     function GetPriorityClipboardFormat
                       (PriorityList: string): string; virtual;

Beschreibung

Sucht in einer Liste von Extensions (durch Punkte getrennt) die Extension heraus, die im Klemmbrett vorhanden ist und in der Liste am weitesten links steht. Wenn also nur die Datei 'SCRAP.ASC' im Klemmbrett vorhanden ist und mit 'TXT.ASC.TEX' als Liste gesucht wird, erhält man als Rückgabe 'ASC'.

4.4.7 TClipboard.IsClipboardFormatAvailable

Deklaration

     function IsClipboardFormatAvailable
                           (Format: string): boolean; virtual;

Beschreibung

Gibt true zurück, wenn die Datei mit der Extension Format (mit oder ohne Punkt) im Klemmbrett vorhanden ist.

Falls das Clipboard-Objekt keine Zugriffsberechtigung besitzt, wird immer false zurückgegeben.

4.4.8 TClipboard.IsOpen

Deklaration

     function IsOpen: boolean; virtual;

Beschreibung

Gibt true zurück, wenn das Klemmbrett mit der Methode TClipboard.OpenClipboard geöffnet werden konnte, false sonst.

4.4.9 TClipboard.OpenClipboard

Deklaration

     function OpenClipboard(Write: boolean): boolean; virtual;

Beschreibung

Holt die Zugriffsberechtigung für das Klemmbrett.

Wenn schreibend zugegriffen werden soll, muß in Write true übergeben werden - dann wird außerdem EmptyClipboard aufgerufen.

Wenn noch kein Pfad für das Klemmbrett existiert, wird ein geeigneter ermittelt und global gesetzt. Dazu werden nicht nur die Systemfunktionen benutzt, sondern auch die Environmentvariablen CLIPBRD und SCRAPDIR abgefragt.

Konnte das Klemmbrett geöffnet werden, wird true zurückgegeben, ansonsten (wenn z.B. eine andere Applikation das Klemmbrett belegt) false.

4.4.10 TClipboard.SetClipboardFormat

Deklaration

     procedure SetClipboardFormat(Mask: word;
                                   Ext: string); virtual;

Beschreibung

Wenn auf das Klemmbrett schreibend zugegriffen wurde, sollte mit dieser Methode der geschriebene Dateityp gesetzt werden (wird in Ext - mit oder ohne Punkt - übergeben). In Mask wird eine der SCF_XXXX-Konstanten eingetragen.

Wenn in Ext kein Leerstring übergeben wird, wird nötigenfalls ein Punkt vor die Extension gesetzt und die Zeichenkette mit Nullbytes aufgefüllt.

Wenn man in Mask SCF_INDEF und in Ext einen Leerstring übergibt, zeigt man damit an, daß das Klemmbrett gelöscht wurde (wird u.a. von EmptyClipboard genutzt).

4.5 TCollection

TCollection ist ein Datentyp für dynamische Arrays, der seine Größe zur Laufzeit automatisch verändern kann. Standardmäßig werden Nachfahren von TObject verwaltet, abgeleitete Objekte speichern z.B. Zeichenketten (TStringCollection). Routinen wie das Iterieren von Elementen erleichtern die Programmierung.

Pointer

     PCollection = ^TCollection;

Felder

Methoden

Vorfahre

Nachfahre

4.5.1 TCollection.Items

Deklaration

     Items: PItemList;  (nur lesen)

Beschreibung

Ein Zeiger auf ein Array von Elementzeigern.

4.5.2 TCollection.Limit

Deklaration

     Limit: longint;  (nur lesen)

Beschreibung

Die Anzahl der z.Z. reservierten Element-Einträge in der Items-Liste. Ist meistens größer als Count (leere Einträge!).

4.5.3 TCollection.Count

Deklaration

     Count: longint;  (nur lesen)

Beschreibung

Die tatsächliche Anzahl der z.Z. gespeicherten Elemente in der Items-Liste, immer kleiner als MaxCollectionSize.

4.5.4 TCollection.Delta

Deklaration

     Delta: longint;  (nur lesen)

Beschreibung

Die Anzahl der Elemente, um die die Items-Liste vergrößert wird, wenn sie voll ist. Ist Delta=0, kann die Kollektion nicht vergrößert werden, sie ist dann also auf Limit beschränkt.

4.5.5 TCollection.Init

Deklaration

     constructor Init(ALimit,ADelta: longint);

Beschreibung

Ruft den Vorfahren TObject.Init auf und setzt Delta auf ADelta. Ist ADelta kleiner als Null, wird Delta auf Null gesetzt. Danach wird Items mit der Anfangsgröße von ALimit Elementen initialisiert. Die Kollektion kann sich danach bei Bedarf mit der Schrittweite Delta vergrößern, bis kein Speicher mehr vorhanden ist oder MaxCollectionSize Elemente gespeichert sind.

4.5.6 TCollection.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Gibt alle Elemente mit FreeAll frei und löscht danach die Items-Liste mit SetLimit(0). Zum Schluß wird TObject.Done aufgerufen.

4.5.7 TCollection.At

Deklaration

     function At(Index: longint): pointer; virtual;

Beschreibung

Gibt einen Zeiger auf das Element mit der Nummer Index zurück, wodurch Items wie ein indiziertes Array behandelt werden kann. Ist Index kleiner als Null bzw. größer gleich Count, wird nil zurückgegeben. Außerdem wird dann TCollection.Error mit den Werten coIndexError und Index aufgerufen.

4.5.8 TCollection.AtDelete

Deklaration

     procedure AtDelete(Index: longint); virtual;

Beschreibung

Löscht das Element mit der Nummer Index und schiebt alle folgenden Elemente um eine Position nach oben. Count wird um eins erniedrigt, Limit wird jedoch beibehalten. Ist Index kleiner als Null bzw. größer gleich Count, wird TCollection.Error mit den Werten coIndexError und Index aufgerufen.

4.5.9 TCollection.AtFree

Deklaration

     procedure AtFree(Index: longint); virtual;

Beschreibung

Löscht das Element mit der Nummer Index und gibt es frei.

4.5.10 TCollection.AtInsert

Deklaration

     procedure AtInsert(Index: longint; Item: pointer);
                                                virtual;

Beschreibung

Fügt Item an der Position Index in Items ein und verschiebt alle folgenden Elemente um eins nach unten. Ist Count vor dem Aufruf gleich Limit, wird die Kollektion um Delta Elemente vergrößert. Kann sie nicht vergrößert werden, wird TCollection.Error mit dem Wert coOverflow aufgerufen (kann die Kollektion nicht vergrößert werden, weil Delta=0 ist, wird Error mit dem Wert coIndexError aufgerufen). Ist Index kleiner als Null bzw. größer gleich Count, wird Error mit den Werten coIndexError und Index aufgerufen.

4.5.11 TCollection.AtPut

Deklaration

     procedure AtPut(Index: longint; Item: pointer);
                                              virtual;

Beschreibung

Ersetzt das Element mit der Nummer Index durch Item. Ist Index kleiner als Null bzw. größer gleich Count, wird TCollection.Error mit den Werten coIndexError und Index aufgerufen.

4.5.12 TCollection.Delete

Deklaration

     procedure Delete(Item: pointer); virtual;

Beschreibung

Löscht das Element, auf das Item zeigt, aus der Kollektion. Entspricht AtDelete(IndexOf(Item)).

4.5.13 TCollection.DeleteAll

Deklaration

     procedure DeleteAll; virtual;

Beschreibung

Setzt Count auf Null und löscht damit alle Elemente aus der Kollektion. Wichtig: Die aktuelle, durch Limit angegebene Größe bleibt bestehen!

4.5.14 TCollection.Error

Deklaration

     procedure Error(Code,Info: longint); virtual;

Beschreibung

Wird aufgerufen, wenn z.B. einer Methode ein ungültiger Index übergeben wird oder ein Speicherüberlauf innerhalb der Kollektion auftritt. Standardmäßig erzeugt diese Methode einen Laufzeitfehler mit der Nummer 212-Code.

4.5.15 TCollection.FirstThat

Deklaration

     function FirstThat(Test: PIterationFunc): pointer;

Beschreibung

FirstThat ruft für jedes Element der Kollektion die durch Test bestimmte boolesche Funktion auf, bis Test true zurückgibt. FirstThat gibt dann den Elementzeiger zurück, für den Test true zurückgegeben hat, oder nil, falls Test immer false geliefert hat. Der Pointer Test sollte eine globale (Unterschied zu ObjectWindows!) Funktion sein, der ein pointer-Parameter übergeben wird und die boolean zurückgibt.

Achtung: Im Gegensatz zu ObjectWindows kann bei einer lokalen Test-Funktion nicht auf die Variablen der übergeordneten Routine zugegriffen werden!

Beispiel

     function Passt(p: pointer): boolean;
       { ... }

Passt sollte eine globale Funktion sein. Sei Liste ein TCollection-Objekt:

     p:=Liste.FirstThat(@Passt);

4.5.16 TCollection.ForEach

Deklaration

     procedure ForEach(Action: PIterationProc);

Beschreibung

ForEach ruft für jedes Element der Kollektion die durch Action bestimmte Prozedur auf. Der Pointer Action sollte eine GLOBALE (Unterschied zu ObjectWindows!) Prozedur sein, der ein pointer-Parameter übergeben wird.

Achtung: Im Gegensatz zu ObjectWindows kann bei einer lokalen Prozedur nicht auf die Variablen der übergeordneten Routine zugegriffen werden!

Beispiel

     procedure ZeigeAn(p: pointer);
       { ... }

ZeigeAn sollte eine globale Prozedur sein. Sei Liste ein TCollection-Objekt:

     Liste.ForEach(@ZeigeAn);

4.5.17 TCollection.Free

Deklaration

     procedure Free(Item: pointer);

Beschreibung

Löscht das Element, auf das Item zeigt, und gibt es frei. Entspricht Delete(Item); FreeItem(Item);.

4.5.18 TCollection.FreeAll

Deklaration

     procedure FreeAll; virtual;

Beschreibung

Löscht alle Elemente und gibt sie frei.

4.5.19 TCollection.FreeItem

Deklaration

     procedure FreeItem(Item: pointer); virtual;

Beschreibung

Gibt das Element frei, auf das Item zeigt. Standardmäßig geht diese Methode davon aus, daß die Elemente Nachfahren von TObject sind, d.h. das Element wird mit Dispose(PObject(Item),Done) freigegeben. Die Methode muß überschrieben werden, wenn andere Elemente verwaltet werden sollen (z.B. Strings, siehe TStringCollection.FreeItem).

FreeItem wird von TCollection.Free und FreeAll aufgerufen und sollte niemals direkt aufgerufen werden!

4.5.20 TCollection.IndexOf

Deklaration

     function IndexOf(Item: pointer): longint; virtual;

Beschreibung

Gibt die Nummer des Element zurück, auf das Item zeigt, und ist damit das Gegenstück zu TCollection.At. Befindet sich Item nicht in der Kollektion, wird -1 zurückgegeben.

4.5.21 TCollection.Insert

Deklaration

     procedure Insert(Item: pointer); virtual;

Beschreibung

Fügt das Element Item in die Kollektion ein. Standardmäßig geschieht dies mit AtInsert(Count,Item) am Ende der Kollektion.

4.5.22 TCollection.LastThat

Deklaration

     function LastThat(Test: PIterationFunc): pointer;
                                              virtual;

Beschreibung

LastThat ruft in umgekehrter Reihenfolge für jedes Element der Kollektion die durch Test bestimmte boolesche Funktion auf, bis Test true zurückgibt. LastThat gibt dann den Elementzeiger zurück, für den Test true zurückgegeben hat, oder nil, falls Test immer false geliefert hat. Test sollte eine globale (Unterschied zu ObjectWindows!) Funktion sein, der ein pointer-Parameter übergeben wird und die boolean zurückgibt.

Achtung: Im Gegensatz zu ObjectWindows kann bei einer lokalen Test-Funktion nicht auf die Variablen der übergeordneten Routine zugegriffen werden!

Beispiel

     function Passt(p: pointer): boolean;
       { ... }

Passt sollte eine globale Funktion sein. Sei Liste ein TCollection-Objekt:

     p:=Liste.LastThat(@Passt);

4.5.23 TCollection.Pack

Deklaration

     procedure Pack; virtual;

Beschreibung

Löscht alle nil-Zeiger in der Kollektion und setzt danach Limit auf den kleinstmöglichen Wert (d.h. auf Count).

4.5.24 TCollection.SetLimit

Deklaration

     procedure SetLimit(ALimit: longint); virtual;

Beschreibung

Vergrößert oder Verkleinert die Kollektion auf maximal ALimit Elemente. Ist ALimit kleiner als Count, wird die Limit auf Count gesetzt, ist ALimit größer als MaxCollectionSize, wird Limit auf MaxCollectionSize gesetzt.

4.6 TComboBox

TComboBox ist das Dialogelementobjekt für Popup-Menüs innerhalb von Dialogen. Das Objekt kümmert sich automatisch um die Abarbeitung des Popups und eines evtl. damit verknüpften TEdit-Objekts. Um die ComboBox kontextsensitiv zu gestalten, muß die Methode TComboBox.Work überschrieben werden.

Pointer

     PComboBox = ^TComboBox;

Felder

Methoden

Vorfahre

Nachfahre

-

4.6.1 TComboBox.Edit

Deklaration

     Edit: PEdit;  (nur lesen)

Beschreibung

Wird von TComboBox.Init mit GetEdit belegt, wenn das Popup-Menü mit einem Eingabefeld verknüpft werden soll.

4.6.2 TComboBox.Popup

Deklaration

     Popup: PPopup;  (nur lesen)

Beschreibung

Zeigt auf das TPopup-Objekt der ComboBox. Wird von TComboBox.Init gesetzt.

4.6.3 TComboBox.Init

Deklaration

     constructor Init(AParent: PDialog; AnIndx,CycleIndx,
                         TitleIndx,ptIndx,popIndx: integer;
                       Cycle,Editable: boolean; Hlp: string);

Beschreibung

Zuerst wird der Vorfahre TControl.Init(AParent,AnIndx,Hlp) aufgerufen. Wenn Editable true ist, wird TComboBox.Edit danach mit GetEdit belegt, ansonsten zeigt Edit auf nil. Danach werden die internen Variablen angepaßt und zum Schluß SetSelection(0) aufgerufen.

In AnIndx wird der Index des Popup-Wert-Elements übergeben. Das ist das Element, das immer mit der aktuellen Auswahl sichtbar ist. Wenn in Editable true übergeben wird, muß dieses Element ein editierbares Objekt sein.

In CycleIndx wird das Element übergeben, mit dem der Popup-Wert um eins weiter geschaltet wird bzw. mit dem das Popup-Menü geöffnet wird, je nachdem ob Cycle true oder false ist. Dieses Objekt sollte vom Typ G_BOXCHAR sein, damit dort Attr.PopChar eingetragen werden kann.

TitleIndx bezeichnet das Objekt, das vor dem Popup-Wert-Objekt steht; dies ist quasi der Titel oder die Beschreibung des Popups. In diesem String kann auch ein Hotkey (wie üblich mit '&') festgelegt werden.

ptIndx und popIndx bezeichnen schließlich das Popup-Menü an sich, der Aufbau ist unter TPopup beschrieben.

4.6.4 TComboBox.Done

Deklaration

     destructor Done; virtual;

Beschreibung

TComboBox.Popup und TComboBox.Edit werden freigegeben, danach wird der Vorfahre TControl.Done aufgerufen.

4.6.5 TComboBox.Changed

Deklaration

     procedure Changed(AnIndx: integer; DblClick: boolean); virtual;

Beschreibung

In dieser Methode findet die gesamte Abarbeitung der ComboBox statt. Durch TComboBox.TestIndex wird diese Methode bei Anwahl jedes Objektes, das mit dem Popup verknüpft ist, aufgerufen.

Wurde die aktuelle Auswahl des Popups geändert, wird anschließend TComboBox.Work aufgerufen.

4.6.6 TComboBox.GetEdit

Deklaration

     function GetEdit: PEdit; virtual;

Beschreibung

Liefert ein TEdit-Objekt zurück, wenn ein solches mit der ComboBox verknüpft werden soll. Dazu wird diese Methode von TComboBox.Init abgefragt.

Wenn man ein "besonderes" (d.h. abgeleitetes) Eingabefeld haben möchte, muß man diese Methode überschreiben und ein entsprechendes Objekt zurückgeben.

4.6.7 TComboBox.GetSelection

Deklaration

     function GetSelection: integer; virtual;

Beschreibung

Gibt die Nummer (>=0) der aktuellen Auswahl des Popups zurück.

4.6.8 TComboBox.GetText

Deklaration

     function GetText: string; virtual;

Beschreibung

Liefert die aktuelle Auswahl des Popups als Zeichenkette. Wenn die ComboBox mit einem Eingabefeld verknüpft ist, wird TComboBox.Edit^.GetText zurückgegeben.

4.6.9 TComboBox.Paint

Deklaration

     procedure Paint; virtual;

Beschreibung

Zeichnet den Titel, das Wert-Element und den Cycle-Button neu. Wenn ein Eingabefeld mit der ComboBox verknüpft ist, wird intern TComboBox.Edit^.Paint aufgerufen.

4.6.10 TComboBox.SetSelection

Deklaration

     procedure SetSelection(Sel: integer); virtual;

Beschreibung

Setzt die Auswahl des Popups auf den Index Sel (>=0), wobei die Anzeige etc. automatisch aktualisiert wird.

4.6.11 TComboBox.SetText

Deklaration

     procedure SetText(ATextString: string); virtual;

Beschreibung

Setzt den Text des Wert-Element (ObjIndx) auf ATextString. Wenn ein Eingabefeld mit der ComboBox verknüpft ist, wird dazu TComboBox.Edit^.SetText aufgerufen.

Wichtig: Der Index der Popup-Markierung wird nicht angepaßt, wenn der neue String mit einer Zeichenkette des Popups übereinstimmt! Dies muß mit TComboBox.SetSelection geschehen (bzw. wird intern automatisch durchgeführt).

4.6.12 TComboBox.TestIndex

Deklaration

     function TestIndex(AnIndx: integer): boolean; virtual;

Beschreibung

Gibt true zurück, wenn eines der ComboBox-Elemente (ObjIndx [=Wert], Title, Cycle-Button) angewählt wurde.

ObjIndx wird allerdings nur ausgewertet, wenn TComboBox.Edit nicht belegt ist, d.h. wenn die ComboBox mit keinem Eingabefeld verknüpft ist.

4.6.13 TComboBox.Transfer

Deklaration

     function Transfer(DataPtr: pointer;
                         TransferFlag: word): word; virtual;

Beschreibung

Überträgt Daten vom bzw. in das Objekt. Der genaue Aufbau der Struktur ist unter TransferBuffer beschrieben.

4.6.14 TComboBox.Work

Deklaration

     procedure Work; virtual;

Beschreibung

Dies ist eine abstrakte Methode, die zunächst nichts macht. Sie wird aber bei jeder Wertänderung des Popups aufgerufen, so daß hiermit z.B. andere Buttons kontextsensitiv gemacht werden können.

4.7 TControl

TControl ist das grundlegende Dialogelementobjekt von ObjectGEM, d.h. jedem Element in einer Resource, das abgefragt oder verändert werden soll (Buttons, Edit-Felder), sollte ein von TControl abgeleitetes Objekt zugeordnet werden (durch die TControl.Init-Methode). Dadurch kann dieses Element dann sehr einfach mit Hilfe der TControl-Methoden behandelt werden (Status etc.).

Pointer

     PControl = ^TControl;

Felder

Methoden

Vorfahre

Nachfahren

4.7.1 TControl.ID

Deklaration

     ID: integer;

Beschreibung

Legt fest, ob dem Dialogelementobjekt beim Verlassen des Dialogs eine besondere Bedeutung zukommen soll. Wird von TControl.Init auf id_No gesetzt und von TButton bzw. TScrollBar verändert.

4.7.2 TControl.Flags

Deklaration

     Flags: byte;

Beschreibung

Beschreibt zusätzliche Eigenschaften des Dialogelementobjekts. Wird z.Z. nur von DisableTransfer bzw. EnableTransfer direkt verändert. TControl.Init nullt das Feld aus.

4.7.3 TControl.ObjAddr

Deklaration

     ObjAddr: PObj;  (nur lesen)

Beschreibung

TControl.Init setzt hier die zum Dialogelement TControl.ObjIndx gehörige Adresse ein.

4.7.4 TControl.ObjIndx

Deklaration

     ObjIndx: integer;  (nur lesen)

Beschreibung

Enthält die Nummer des Dialogelementobjekts, die an TControl.Init übergeben wird. Aus diesem Index kann TControl.ObjAddr berechnet werden.

4.7.5 TControl.Parent

Deklaration

     Parent: PDialog;  (nur lesen)

Beschreibung

Enthält einen Zeiger auf das zugehörige TDialog-Objekt. Dort werden alle Dialogelementobjekte in der durch TControl.Previous und TControl.Next verketteten Liste CtrlList verwaltet.

Parent wird von TControl.Init gesetzt.

4.7.6 TControl.Style

Deklaration

     Style: word;  (nur lesen, s.u.)

Beschreibung

Wird von TControl.Init ausgenullt. Abgeleitete Objekte tragen hier Konstanten ein, durch die die Art des Dialogelementobjekts ermittelt werden kann. Abgesehen von es_ASCIIOnly und sts_Fill ist dieses Feld nur zum Lesen freigegeben.

4.7.7 TControl.UsrBlk

Deklaration

     UsrBlk: USERBLK;  (nur lesen)

Beschreibung

Wenn UsrDef true ist, enthält diese Struktur alle nötigen Daten zum Zeichnen des neuen Dialogelements. TControl.Init nullt dieses Feld aus.

4.7.8 TControl.UsrDef

Deklaration

     UsrDef: boolean;  (nur lesen)

Beschreibung

Ist dieses Feld true, verwendet das von TControl abgeleitete Objekt die UsrBlk-Struktur, d.h. das Dialogelement wird in einem ObjectGEM-eigenen Stil gezeichnet.

Wird von TControl.Init auf false gesetzt.

4.7.9 TControl.Init

Deklaration

     constructor Init(AParent: PDialog; AnIndx: integer;
                                          Hlp: string);

Beschreibung

Ruft den Vorfahren TObject.Init auf und setzt TControl.ObjIndx auf AnIndx, TControl.ID auf id_No und TControl.Parent auf AParent. Hlp wird als Text für die BubbleHelp verwendet, TControl.Style und Flags werden ausgenullt und der Shortcut gelöscht, so daß TestShortCut standardmäßig false zurückliefert. Außerdem wird das Dialogelement in die CtrlList des zugehörigen TDialog-Objekts eingetragen.

Wenn in AParent nil übergeben wird oder TControl.ObjAddr nicht ermittelt werden kann, bricht die Initialisierung ab und man erhält einen Nullzeiger. Da Flags auf Null gesetzt wird, nehmen TControl-Objekte standardmäßig nicht am Datentransfermechanismus teil.

Außerdem werden UsrDef und UsrBlk initialisiert.

4.7.10 TControl.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Löscht das Dialogelement aus der CtrlList des zugehörigen TDialog-Objekts und ruft TObject.Done auf.

4.7.11 TControl.TestIndex

Deklaration

     function TestIndex(AnIndx: integer): boolean;
                                            virtual;

Beschreibung

Gibt true zurück, wenn der übergebene Index mit TControl.ObjIndx übereinstimmt. Wird benutzt um zu überprüfen, welches Dialogelement angewählt wurde.

4.7.12 TControl.TestID

Deklaration

     function TestID(AnID: integer): boolean; virtual;

Beschreibung

Gibt true zurück, wenn AnID mit TControl.ID übereinstimmt. Wird beim Verlassen des Dialogs benutzt, um evtl. speziell auf das Exit-Objekt reagieren zu können.

4.7.13 TControl.TestShortCut

Deklaration

     function TestShortCut(Key: integer): boolean;
                                            virtual;

Beschreibung

Gibt true zurück, wenn Key mit dem Shortcut des Dialogelementobjekts übereinstimmt. Key enthält dabei den ASCII-Wert des Zeichens (ohne Alternate-Status), Kleinbuchstaben müssen vorher in Großbuchstaben umgewandelt werden. Der Shortcut wird von der TButton.SetText-Methode gesetzt.

4.7.14 TControl.SetShortCut

Deklaration

     procedure SetShortCut(Key: char); virtual;

Beschreibung

Setz den Shortcut für das TControl-Objekt, mit dem dieses (zusammen mit <Alternate>) angewählt werden kann.

Kleinbuchstaben werden automatisch in Großbuchstaben umgewandelt. Mit #0 kann der Shortcut gelöscht werden.

4.7.15 TControl.SetFlags

Deklaration

     procedure SetFlags(Mask: byte; OnOff: boolean);
                                              virtual;

Beschreibung

Setzt oder löscht die durch Mask angegebenen Bits in Flags, je nachdem ob OnOff true oder false ist.

4.7.16 TControl.IsFlagSet

Deklaration

     function IsFlagSet(Mask: byte): boolean;

Beschreibung

Gibt true zurück, wenn die in Mask angegebenen Bits in Flags gesetzt sind.

4.7.17 TControl.SetState

Deklaration

     procedure SetState(StateFlag: integer); virtual;

Beschreibung

Macht das Dialogelement anwählbar bzw. nicht anwählbar. Zulässige Werte für StateFlag sind bf_Enabled und bf_Disabled.

4.7.18 TControl.GetState

Deklaration

     function GetState: integer; virtual;

Beschreibung

Gibt den Zustand des Dialogelements zurück (bf_Enabled, bf_Disabled).

4.7.19 TControl.Disable

Deklaration

     procedure Disable; virtual;

Beschreibung

Ruft SetState(bf_Disabled) auf und macht das Dialogelement somit nicht anwählbar.

4.7.20 TControl.Enable

Deklaration

     procedure Enable; virtual;

Beschreibung

Ruft SetState(bf_Enabled) auf und macht das Dialogelement dadurch anwählbar.

4.7.21 TControl.EnableTransfer

Deklaration

     procedure EnableTransfer; virtual;

Beschreibung

Ruft SetFlags(wb_Transfer,true) auf und beteiligt das Dialogelement am Datentransfermechanismus.

4.7.22 TControl.DisableTransfer

Deklaration

     procedure DisableTransfer; virtual;

Beschreibung

Ruft SetFlags(wb_Transfer,false) auf und nimmt das Dialogelement dadurch vom Datentransfermechanismus aus.

4.7.23 TControl.Transfer

Deklaration

     function Transfer(DataPtr: pointer;
                     TransferFlag: word): word; virtual;

Beschreibung

Dies ist eine abstrakte Methode, die nichts weiter macht als Null zurückzuliefern. Sie wird aber von anderen Objekten überschrieben, um Daten in das Element bzw. aus dem Element heraus zu übertragen. DataPtr zeigt dabei auf die zu setzenden Daten bzw. auf einen Puffer, der die ausgelesenen Daten aufnimmt. TransferFlag muß eine der tf_XXXX-Konstanten enthalten.

Die Rückgabe entspricht der Anzahl der übertragenen Bytes, muß aber immer gerade sein (evtl. aufrunden).

4.7.24 TControl.Changed

Deklaration

     procedure Changed(AnIndx: integer;
                         DblClick: boolean); virtual;

Beschreibung

Wird von TDialog.CallChanged aufgerufen, wenn das Dialogelement aufgerufen wird und dadurch seinen Status ändert. Standardmäßig macht diese Methode nichts, durch sie können Dialogboxen aber kontextsensitiv werden, indem z.B. in dieser Methode der Zustand eines Buttons etc. in Abhängigkeit vom Zustand des Dialogelements geändert wird.

AnIndx gibt den Index des angewählten Dialogelements an (sollte mit TControl.ObjIndx übereinstimmen), DblClick zeigt an, ob das Element mit Doppelklick angewählt wurde.

4.7.25 TControl.Paint

Deklaration

     procedure Paint; virtual;

Beschreibung

Ruft Parent^.ObjcPaint auf, d.h. das Dialogelement wird gezeichnet. Befindet sich der zugehörige Dialog in einem Fenster, wird die Rechteckliste automatisch beachtet.

An ObjcPaint wird der Index des Dialogelements (TControl.ObjIndx) und ein boolean-Parameter übergeben, der true ist, wenn wb_Lazy gesetzt ist.

4.7.26 TControl.Hide

Deklaration

     procedure Hide(Draw: boolean); virtual;

Beschreibung

Macht das Dialogelement unsichtbar. Ist Draw true, wird dann das übergeordnete Dialogelement gezeichnet, damit das Element auch auf dem Bildschirm (und nicht nur logisch) verschwindet.

Wenn man allerdings direkt nach Hide ein anderes Dialogelement an derselben Stelle mit TControl.Unhide sichtbar macht, kann Draw auf false gesetzt werden (Achtung allerdings bei Elementen, die nicht deckend gezeichnet werden, z.B. Images).

4.7.27 TControl.Unhide

Deklaration

     procedure Unhide; virtual;

Beschreibung

Macht das Dialogelement sichtbar und zeichnet es.

4.7.28 TControl.IsHidden

Deklaration

     function IsHidden: boolean; virtual;

Beschreibung

Gibt true zurück, wenn das Dialogelement unsichtbar ist, false sonst.

4.7.29 TControl.GetColor

Deklaration

     function GetColor: integer; virtual;

Beschreibung

Liefert den Farbindex (0..15) des Dialogelements zurück. Wenn es sich nicht um ein G_BOX-, G_IBOX-, G_BOXCHAR-, G_TEXT-, G_BOXTEXT-, G_FTEXT-, G_ICON-, G_FBOXTEXT- oder G_IMAGE-Objekt handelt, ist die Rückgabe standardmäßig Black.

4.7.30 TControl.SetColor

Deklaration

     procedure SetColor(Color: integer); virtual;

Beschreibung

Setzt die Farbe des Dialogelements neu. In Color wird dazu der entsprechende Farbindex (0..15) übergeben.

Anschließend wird das Element neu gezeichnet.

4.7.31 TControl.IsHelpAvailable

Deklaration

     function IsHelpAvailable: boolean; virtual;

Beschreibung

Gibt true zurück, wenn das Dialogelementobjekt mit TControl.GetHelp einen Hilfstext für die BubbleHelp liefern kann.

4.7.32 TControl.GetHelp

Deklaration

     function GetHelp: string; virtual;

Beschreibung

Gibt einen Hilfstext für die BubbleHelp zurück.

4.7.33 TControl.SetHelp

Deklaration

     procedure SetHelp(Hlp: string); virtual;

Beschreibung

Weist dem Dialogelementobjekt einen neuen Hilfstext für die BubbleHelp zu.

4.7.34 TControl.Previous

Deklaration

     function Previous: PControl;

Beschreibung

Gibt einen Zeiger auf das vorhergehende TControl-Objekt in der CtrlList des zugehörigen TDialog- Objekts zurück. Ist kein weiteres Objekt vorhanden, erhält man einen nil-Zeiger, d.h. in diesem Fall zeigt CtrlList genau auf das aktuelle Objekt.

4.7.35 TControl.Next

Deklaration

     function Next: PControl;

Beschreibung

Gibt einen Zeiger auf das nächste TControl-Objekt in der CtrlList des zugehörigen TDialog-Objekts zurück. Ist kein weiteres Objekt vorhanden, erhält man einen nil-Zeiger.

4.8 TDialog

TDialog ist der grundlegende Objekttyp für alle (Fenster-)Dialoge, d.h. modale und nicht-modale Dialogboxen. Die Abarbeitung erfolgt normalerweise automatisch, kann aber auch "von Hand" vorgenommen werden.

Die einfache Bearbeitung eines modalen Dialogs kann auch mit TApplication.ExecDialog durchgeführt werden, allerdings sollten Dialoge nach Möglichkeit im Fenster (also nicht-modal) dargestellt werden, da sonst das gesamte System blockiert wird, was unter einem Multitasking-Betriebssystem Probleme bereiten kann.

Pointer

     PDialog = ^TDialog;

Felder

Methoden

Vorfahre

Nachfahren

-

4.8.1 TDialog.Cont

Deklaration

     Cont: boolean;

Beschreibung

Dieses Flag zeigt an, ob die Dialogbearbeitung fortgesetz wird (true) oder ob der Dialog beendet werden soll (false).

Von TDialog.SetupWindow wird es auf false initialisiert, von TDialog.OpenWindow auf true und von TDialog.CloseWindow wieder auf false gesetzt. Veränderungen werden u.a. in TDialog.WMButton und im Tastatur-Handler des Dialogs durch ObjectGEM-interne form_button()- bzw. form_keybd()-Routinen vorgenommen.

Modale Dialoge nutzen dieses Flag in der Methode TDialog.Execute als Abbruchbedingung.

Normalerweise muß dieses Flag weder beachtet noch manipuliert werden, einzig in TDialog.EndDlg kann dadurch die Abarbeitung sinnvoll gesteuert werden (aber auch dort gibt es genug andere Möglichkeiten, die auch genutzt werden sollten).

4.8.2 TDialog.CtrlList

Deklaration

     CtrlList: PControl;  (nur lesen)

Beschreibung

In dieser Liste werden die Dialogelementobjekte verwaltet. TControl-Schnittstellenobjekte tragen sich bei ihrer Initialisierung hier ein. Alle Auswertungen der Benutzeraktionen werden mit den Objekten in dieser Liste durchgeführt.

Mit TDialog.FirstThat und TDialog.ForEach kann diese Liste recht einfach durchlaufen werden.

Wird von TDialog.SetupWindow mit nil initialisiert.

4.8.3 TDialog.IsModal

Deklaration

     IsModal: boolean;  (nur lesen)

Beschreibung

Dieses Flag gibt an, ob es sich um einen modalen Dialog handelt (true), d.h. das System wird während der Abarbeitung blockiert. Nur dieses Flag darf zur Unterscheidung zwischen modalen und nicht-modalen Dialogen verwendet werden!

Wird von TDialog.SetupWindow gesetzt und von TDialog.Create nötigenfalls korrigiert. Modale Dialoge werden mit TDialog.Execute abgearbeitet.

4.8.4 TDialog.Result

Deklaration

     Result: integer;

Beschreibung

In diesem Feld steht nach erfolgreicher Abarbeitung des Dialogs der Index des Dialogelements, mit dem die Dialogbox verlassen wurde.

Wird z.B. von den Methoden TApplication.ExecDialog und TApplication.Alert benötigt, derentwegen normalerweise kein direkter Zugriff auf dieses Feld nötig ist.

4.8.5 TDialog.TransferBuffer

Deklaration

     TransferBuffer: pointer;

Beschreibung

Dieses Feld kann auf einen sog. Transfer-Puffer des Dialogs zeigen, der das Belegen und Auswerten aller Dialogelementobjekte, die am Datentransfermechanismus teilnehmen können, erheblich vereinfacht.

Wird von TDialog.SetupWindow auf nil gesetzt, d.h. der Transfermechanismus ist ausgeschaltet. Will man einen Transfer-Puffer installieren, sollte man die Methode SetupWindow überschreiben und nach dem Aufruf der geerbten Methode TransferBuffer auf diesen Puffer (der schon wie gewünscht vorbelegt sein sollte) setzen.

Ein Transfer-Puffer ist normalerweise ein Record, in dem für alle Dialogelementobjekte in der Reihenfolge ihrer Initialisierung (!) Felder vorhanden sind. Dialogelementobjekten, die keine Daten übertragen, werden auch keine Felder zugewiesen. Folgende Felder sind z.Z. notwendig:

ObjektTransferpuffer-Feld
TCheckBoxein word (oder integer), das eine
der bf_XXXX-Konstanten enthält
TTriStatesiehe TCheckBox
TRadioButtonsiehe TCheckBox
TScrollBarein TScrollBarTransferRec-Record
zum Speichern des Bereichs und der
Position der Bildlaufleiste
TStaticein string[x], wobei x:=TextLen-1
ist (d.h. die maximale Anzahl von
Zeichen in diesem Textobjekt ohne
das abschließende Nullbyte);
ist x gerade, muß x um eins
erhöht werden!
TEditsiehe TStatic
TComboBoxwenn die ComboBox mit einem Eingabe-
feld verknüpft ist, wird zuerst ein
string (siehe TStatic) und dann ein
integer gespeichert; ansonsten wird
nur ein integer verwendet

Von den ObjectGEM-Dialogelementobjekten führen TControl, TButton und TGroupBox keinen Transfer durch. Einzelne Objekte können mit den Methoden TControl.DisableTransfer und TControl.EnableTransfer vom Datentransfer ausgenommen bzw. daran beteiligt werden.

Wenn man mit eigenen Dialogelementobjekten neue Feldtypen einführt, muß man beachten, daß jeder Typ eine gerade Länge haben muß, da es sonst früher oder später zu einem Adreßfehler kommt...

Beispiel

     type

       SampleTransferRecord = record
         stat1   : string[x];  { zur Berechnung von }
         edit1   : string[y];  { x bzw. y  s.o.     }
         check1  : word;
         radio1  : word;
         tri1    : word;
         scroll1 : TScrollBarTransferRec;
         combed1s: string[z];
         combed1i: integer;
         comb2   : integer
       end;

4.8.6 TDialog.Init

Deklaration

     constructor Init(AParent: PWindow; ATitle: string;
                                           Indx: integer);

Beschreibung

Ruft den Vorfahren TWindow.Init auf und weist dem Objekt mittels TDialog.LoadDialog den Dialogbaum mit dem Index Indx zu. Zum Schluß wird die Methode TDialog.SetupSize aufgerufen.

Wird in Indx id_No übergeben, wird der Dialogbaum nicht gesetzt; man sollte dann so bald wie möglich die Methoden SetDlgTree und SetupSize selbst aufrufen. Diese Option sollte normalerweise nicht verwendet werden, allerdings können so im Speicher erzeugte Resourcen verwendet werden (das wird z.B. von TApplication.Alert gemacht).

4.8.7 TDialog.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Gibt alle Objekte der CtrlList-Liste frei und ruft dann den Vorfahren TWindow.Done auf.

4.8.8 TDialog.GetVDIHandle

Deklaration

     function GetVDIHandle: integer; virtual;

Beschreibung

Gibt TApplication.vdiHandle zurück, d.h. Dialoge besitzen standardmäßig keine eigene VDI-Workstation.

4.8.9 TDialog.CallChanged

Deklaration

     procedure CallChanged(Indx: integer; dclk,
                             edt,push: boolean); virtual;

Beschreibung

Wird immer dann aufgerufen, wenn ein anderes Dialogelement(-objekt) aktiv wird. In Indx wird der Index des neu aktiven Elements übergeben. dclk ist true, wenn die Anwahl durch Doppelklick erfolgt ist; edt ist true, wenn es sich bei dem neuen Element um ein Eingabefeld handelt (wird - wie push - intern benötigt).

CallChanged versucht, per TControl.TestIndex das zum Dialogelement gehörige Dialogelementobjekt zu finden. War die Suche erfolgreich, wird anschließend TControl.Changed des betreffenden Objekts aufgerufen.

Diese Methode sollte man nicht direkt aufrufen. Allerdings kann man sich durch Überschreiben in den Zeitpunkt einklinken, an dem die Benutzeraktionen am besten "überwacht" werden können.

4.8.10 TDialog.Cancel

Deklaration

     function Cancel: boolean; virtual;

Beschreibung

Wird aufgerufen, wenn der Dialog abgebrochen werden soll (z.B. weil der Benutzer auf <Abbruch> geklickt hat). Die Rückgabe ist true (default), wenn der Dialog beendet werden darf, false sonst.

Wenn man diese Methode überschreibt, kann man auf den Abbruch angemessen reagieren (standardmäßig passiert nichts).

4.8.11 TDialog.CloseWindow

Deklaration

     procedure CloseWindow; virtual;

Beschreibung

Schließt alle untergeordneten Fenster und beendet die Dialogbearbeitung (TDialog.Cont wird auf false gesetzt). Bei modalen Dialogen wird der Hintergrund restauriert, bei nicht-modalen Dialogen wird TWindow.CloseWindow aufgerufen.

4.8.12 TDialog.Create

Deklaration

     procedure Create; virtual;

Beschreibung

Wird von TDialog.MakeWindow aufgerufen, um den (Fenster-)Dialog zu erzeugen; natürlich kann diese Methode auch "von Hand" aufgerufen werden. Wenn ws_ex_Modeless nicht gesetzt ist oder ws_ex_TryModeless gesetzt, aber kein GEM-Fenster mehr verfügbar ist, wird TDialog.IsModal auf false gesetzt.

Ist bis jetzt kein Fehler aufgetreten, wird Attr.Status auf ws_Created gesetzt, und die Abmessungen und Position des Dialog(fenster)s werden ermittelt, wobei ws_ex_Center, ws_ex_Center2Parent, ws_ex_CenterOnce und ein evtl. vorhandener virtueller Bildschirm (VSCR-Cookie) beachtet werden.

Schließlich werden noch alle untergeordneten Dialoge erzeugt.

4.8.13 TDialog.Destroy

Deklaration

     procedure Destroy; virtual;

Beschreibung

Zerstört zunächst alle untergeordneten Dialoge. Danach wird der Dialog geschlossen (sofern dies noch nicht geschehen ist); bei modalen Dialogen wird nun IsModal auf false und Attr.Status auf ws_NoWindow gesetzt, bei nicht-modalen Dialogen wird TWindow.Destroy aufgerufen.

4.8.14 TDialog.EndDlg

Deklaration

     procedure EndDlg(Indx: integer; DblClick: boolean); virtual;

Beschreibung

Wird von TDialog.WMButton und vom Tastatur-Handler aufgerufen, wenn der Benutzer ein Dialogelement angewählt hat, mit dem der Dialog beendet werden kann. In Indx wird der Index des betreffenden Dialogelements übergeben; ist DblClick true, erfolgte die Anwahl mit Doppelklick.

Zunächst wird TDialog.Result auf Indx gesetzt. Dann wird mit TControl.TestID überprüft, ob das zum Dialogelement gehörige Objekt eine der Konstanten id_OK, id_Cancel, id_Help, id_Undo oder id_Esc enthält; ist dies der Fall, wird entsprechend OK, Cancel, TDialog.Help, TDialog.Undo oder TDialog.Esc aufgerufen. Besitzt das Objekt den Wert id_NoExit, wird der Dialog einfach nicht beendet.

Konnte kein Objekt für das Dialogelement gefunden werden, wird TDialog.ExitDlg gefragt, ob der Dialog beendet werden soll.

Hat EndDlg bis jetzt keine positive Antwort zum Verlassen des Dialogs erhalten, wird die Dialogbearbeitung normal fortgesetzt. Ansonsten hängt das Ende nur noch von TWindow.CanClose ab.

4.8.15 TDialog.Esc

Deklaration

     function Esc: boolean; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Esc> gedrückt oder ein Dialogelement angeklickt hat und ein passendes Dialogelementobjekt existiert, das den Wert id_Esc besitzt.

Die Rückgabe ist true, wenn der Dialog beendet werden soll, false sonst (default).

Wenn man diese Methode überschreibt, kann man z.B. die gerade laufende Aktion abbrechen.

4.8.16 TDialog.Execute

Deklaration

     procedure Execute; virtual;

Beschreibung

Wird von TDialog.MakeWindow aufgerufen, wenn der abzuarbeitende Dialog modal ist, da in diesem Fall nicht auf die üblichen Routinen, die das System nicht blockieren, zurückgegriffen werden kann. Solange TDialog.Cont true ist, wird mit evnt_multi() auf Ereignisse gewartet, die dann an den Tastatur-Handler bzw. an TDialog.WMButton verteilt werden.

Bei modalen Dialogen ist es außerdem möglich, diese durch Anklicken auf ein nicht anwählbares Dialogelement (z.B. den Hintergrund) auf dem Bildschirm zu verschieben.

Wichtig: Wenn man Execute direkt aufruft, muß sichergestellt sein, daß das System sowohl mit wind_update(BEG_UPDATE) als auch mit wind_update(BEG_MCTRL) blockiert ist! Normalerweise kümmern sich TDialog.OpenWindow/TDialog.CloseWindow darum.

4.8.17 TDialog.ExitDlg

Deklaration

     function ExitDlg(AnIndx: integer): boolean; virtual;

Beschreibung

Wird von TDialog.EndDlg aufgerufen, wenn der Benutzer ein Dialogelement angewählt hat, mit dem der Dialog beendet werden kann, dem aber keine der id_XXXX-Konstanten zugewiesen ist.

ExitDlg muß nun entscheiden, ob der Dialog verlassen werden soll. Standardmäßig wird true zurückgegeben, d.h. der Dialog wird beendet.

In AnIndx wird der Index des angewählten Dialogelements übergeben.

4.8.18 TDialog.FirstThat

Deklaration

     function FirstThat(Test: PIterationFunc): PControl;

Beschreibung

FirstThat ruft für jedes Objekt der CtrlList-Liste die durch Test bestimmte boolesche Funktion auf, bis Test true zurückgibt. FirstThat gibt dann den Zeiger auf das Objekt zurück, für den Test true zurückgegeben hat, oder nil, falls Test immer false geliefert hat. Der Pointer Test sollte eine globale (Unterschied zu ObjectWindows!) Funktion sein, der ein pointer-Parameter übergeben wird und die boolean zurückgibt.

Achtung: Im Gegensatz zu ObjectWindows kann bei einer lokalen Test-Funktion nicht auf die Variablen der übergeordneten Routine zugegriffen werden!

Beispiel

     function IstMarkiert(p: pointer): boolean;
       { ... }

IstMarkiert sollte eine globale Funktion sein. Sei Dialog ein TDialog-Objekt:

     p:=Dialog.FirstThat(@IstMarkiert);

4.8.19 TDialog.ForEach

Deklaration

     procedure ForEach(Action: PIterationProc);

Beschreibung

ForEach ruft für jedes Objekt der CtrlList-Liste die durch Action bestimmte Prozedur auf. Der Pointer Action sollte eine globale (Unterschied zu ObjectWindows!) Prozedur sein, der ein pointer-Parameter übergeben wird.

Achtung: Im Gegensatz zu ObjectWindows kann bei einer lokalen Prozedur nicht auf die Variablen der übergeordneten Routine zugegriffen werden!

Beispiel

     procedure Markiere(p: pointer);
       { ... }

Markiere sollte eine globale Prozedur sein. Sei Dialog ein TDialog-Objekt:

     Dialog.ForEach(@Markiere);

4.8.20 TDialog.GetClassName

Deklaration

     function GetClassName: string; virtual;

Beschreibung

Gibt den Namen der Dialogklasse zurück. Abgeleitete Dialogobjekte, die wesentliche Veränderungen bzw. Erweiterungen gegenüber TDialog besitzen, sollten diese Methode überschreiben, um einen anderen Namen zu liefern. TDialog gibt 'Dialog' zurück.

4.8.21 TDialog.GetFocus

Deklaration

     function GetFocus: integer; virtual;

Beschreibung

Wenn der Dialog mind. ein Eingabefeld besitzt, gibt GetFocus den Index des Feldes zurück, in dem sich z.Z. der Eingabecursor befindet.

Besitzt der Dialog kein Eingabefeld oder ist der Eingabecursor momentan nicht aktiv, erhält man als Rückgabe id_No.

4.8.22 TDialog.GetKBHandler

Deklaration

     function GetKBHandler: PEvent; virtual;

Beschreibung

Gibt einen Pointer auf den Tastatur-Handler des Dialogobjekts zurück. Der Handler ist nichts anderes als ein TEvent-Objekt, das direkt aufgerufen wird.

Das Objekt wird in TDialog.SetupWindow initialisiert, vorher gibt GetKBHandler nil zurück.

Als einzige Methode wurde TEvent.TestKey effektiv gemacht (d.h. überschrieben). Innerhalb dieser Methode werden die Alternate-Shortcuts sowie die <Help>-, <Undo>- und <Esc>-Taste ausgewertet. Außerdem wird hier die BubbleHelp realisiert.

4.8.23 TDialog.GetStyle

Deklaration

     function GetStyle: integer; virtual;

Beschreibung

Gibt eine Bitmap der GEM-Fensterkomponenten zurück, die für TDialog.Create benötigt wird. TDialog.GetStyle liefert NAME or CLOSER or MOVER. Sollen andere Fensterelemente benutzt werden, muß man diese Methode überschreiben (es ist z.B. kein Problem, auch einem Dialogfenster ein SIZER-Element zuzuweisen).

Ab AES 4.10 wird zusätzlich SMALLER für die Iconification geliefert und, wenn der Backdrop-Mechanismus unterstützt wird, BACKDROP (z.Z. nur unter MagiC).

4.8.24 TDialog.GetWindowClass

Deklaration

     procedure GetWindowClass(var AWndClass: TWndClass); virtual;

Beschreibung

Füllt das Feld Class aus, das die Dialogklasse beschreibt. Soll der Fensterdialog andere grundlegende Eigenschaften besitzen, muß diese Methode überschrieben werden.

Wichtig: In diesem Fall muß in der neuen Methode zuerst die ursprüngliche Methode aufgerufen werden, da es sonst mit einiger Sicherheit einen Programmabsturz gibt...

Von den Werten, die TWindow.GetWindowClass ermittelt, wird cs_CreateOnAccOpen gelöscht und cs_SaveBits bzw. cs_WorkBackground neu gesetzt. Class.hbrBackground wird auf Null gesetzt.

Beispiel

     procedure TD.GetWindowClass(var AWndClass: TWndClass);

       begin
         inherited GetWindowClass(AWndClass);
         { ... }
       end;

4.8.25 TDialog.GetWorkMax

Deklaration

     procedure GetWorkMax(var maxX,maxY: integer); virtual;

Beschreibung

maxX und maxY werden auf die größe des Hintergrundobjekts der Dialogbox gesetzt, d.h. bei einem Fensterdialog kann das Fenster nie größer als die Dialogbox werden.

4.8.26 TDialog.Help

Deklaration

     function Help: boolean; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Help> gedrückt oder ein Dialogelement angeklickt hat und ein passendes Dialogelementobjekt existiert, das den Wert id_Help besitzt.

Die Rückgabe ist true, wenn der Dialog beendet werden soll, false sonst (default).

Wenn man diese Methode überschreibt, kann man z.B. eine größere Hilfe-Dialogbox zum gerade aktuellen Dialog anzeigen.

4.8.27 TDialog.InitFocus

Deklaration

     procedure InitFocus; virtual;

Beschreibung

Initialisiert den Eingabecursor, d.h. dieser wird auf das (von der Resource-Hierarchie her) erste Eingabefeld gesetzt. Wird von TDialog.SetFocus aufgerufen.

4.8.28 TDialog.IsDialog

Deklaration

     function IsDialog: boolean; virtual;

Beschreibung

Gibt true zurück, d.h. das Fenster ist ein Dialogfenster. Wird intern benötigt, da TWindow- und TDialog-Objekte in den gleichen Listen (MainWindow bzw. ChildList) verwaltet werden.

4.8.29 TDialog.LoadDialog

Deklaration

     procedure LoadDialog(Indx: integer); virtual;

Beschreibung

Wird von TDialog.Init aufgerufen, um den Dialog im Objektbaum Indx mit dem Dialogobjekt zu verknüpfen.

Damit der Dialogbaum in beliebig vielen Fenstern gleichzeitig verwendet und bearbeitet werden kann, wird der komplette Baum umkopiert, so daß alle Änderungen an einer Kopie vorgenommen werden, die von TDialog.FreeDialog wieder gelöscht wird. Wenn der übergebene Dialogbaum gültig ist, wird anschließend TWindow.LoadDialog aufgerufen.

4.8.30 TDialog.FreeDialog

Deklaration

     procedure FreeDialog; virtual;

Beschreibung

Gibt den mit TDialog.LoadDialog installierten Dialogbaum (und den dafür allozierten Speicher) wieder frei.

4.8.31 TDialog.MakeWindow

Deklaration

     procedure MakeWindow; virtual;

Beschreibung

Ruft zuerst TDialog.Create und dann TDialog.OpenWindow auf. Handelt es sich um einen modalen Dialog, wird dieser dann mit TDialog.Execute abgearbeitet.

4.8.32 TDialog.ObjcPaint

Deklaration

     procedure ObjcPaint(Indx: integer; Lazy: boolean); virtual;

Beschreibung

Zeichnet das Dialogelement mit dem Index Indx neu. Dabei wird beachtet, ob der Dialog geöffnet ist und ob er sich in einem Fenster befindet.

Ist Lazy true und AES 4.0 oder höher vorhanden, wird das Dialogelement nur gezeichnet, wenn keine andere Applikation den Bildschirm blockiert. So können z.B. Statusanzeigen realisiert werden.

Wird u.a. von TControl.Paint aufgerufen.

4.8.33 TDialog.OK

Deklaration

     function OK: boolean; virtual;

Beschreibung

Wird aufgerufen, wenn der Dialog erfolgreich beendet werden soll (z.B. weil der Benutzer auf <OK> geklickt hat). Die Rückgabe ist true, wenn der Dialog beendet werden darf, false sonst.

Intern werden zunächst alle TEdit-Objekte mit deren TEdit.CanClose-Methode überprüft. Liefern alle true zurück, wird anschließend die Methode TransferData(tf_GetData) aufgerufen und true zurückgegeben.

4.8.34 TDialog.OpenWindow

Deklaration

     procedure OpenWindow; virtual;

Beschreibung

Wird von TDialog.MakeWindow aufgerufen.

Zunächst wird geprüft, ob ws_ex_Popup gesetzt ist und die Dialogposition evtl. korrigiert. Dann wird der Eingabecursor initialisiert und TransferData mit dem Parameter tf_SetData aufgerufen.

Wenn es sich um einen modalen Dialog handelt, wird nun eine wind_update()-Schachtelung sowohl mit BEG_UPDATE als auch mit BEG_MCTRL durchgeführt. Danach wird Attr.Status auf ws_Open gesetzt und der Dialog gezeichnet.

Ansonsten wird die geerbte TWindow.OpenWindow-Methode aufgerufen.

4.8.35 TDialog.Paint

Deklaration

     procedure Paint(var PaintInfo: TPaintStruct); virtual;

Beschreibung

Mittels objc_draw() wird die Dialogbox gezeichnet. Anschließend wird noch der Eingabecursor dargestellt.

Diese Methode sollte nie direkt aufgerufen werden, sondern immer nur mittels ForceRedraw, WMRedraw oder TApplication.InvalidateRect. Wer meint, dies dennoch tun zu müssen, muß darauf achten, vor dem Aufruf von Paint die Methoden TDialog.UpdateDialog und InitPaint sowie nach dem Aufruf ExitPaint aufzurufen.

4.8.36 TDialog.SetFocus

Deklaration

     procedure SetFocus(Obj: integer); virtual;

Beschreibung

Setzt den Eingabecursor auf das Eingabefeld mit dem Index Obj. Wenn dies kein gültiges Eingabefeld ist (Objekt ist versteckt, disabled oder überhaupt gar kein Eingabefeld), wird InitFocus aufgerufen.

4.8.37 TDialog.SetupSize

Deklaration

     procedure SetupSize; virtual;

Beschreibung

Berechnet die Anfangsgröße des Dialogfensters.

Nach dem Aufruf von TWindow.SetupSize wird TWindow.Work an die Ausmaße des Dialogs angepaßt.

Wird von TDialog.Init aufgerufen.

4.8.38 TDialog.SetupWindow

Deklaration

     procedure SetupWindow; virtual;

Beschreibung

In dieser Methode sollten alle Einstellungen, die das Dialogfenster (d.h. nicht nur das Dialogobjekt an sich) betreffen, vorgenommen werden. Wird von TDialog.Init (bzw. TWindow.Init) aufgerufen.

Wird diese Methode überschrieben, sollte die geerbte Methode nach Möglichkeit am Anfang der neuen Methode aufgerufen werden.

Attr.ExStyle wird mit ws_ex_TryModeless+ws_ex_CenterOnce initialisiert. Wenn global as_MoveTransparent oder as_MoveDials gesetzt ist, dann wird zusätzlich noch ws_ex_MoveTransparent bzw. ws_ex_MoveDial gesetzt.

Cont, CtrlList, TransferBuffer und IsModal werden initialisiert, und drei TKey-Objekte (siehe TWindow.SetupWindow) sowie der Tastatur-Handler werden installiert.

4.8.39 TDialog.TransferData

Deklaration

     procedure TransferData(Direction: word); virtual;

Beschreibung

Wenn der Transfermechanismus durch Setzen von TransferBuffer auf einen Datentransfer-Puffer eingeschaltet ist, überträgt diese Methode Daten zwischen dem Puffer und den TControl-Objekten, bei denen wb_Transfer gesetzt ist.

TranferData ruft die Transfer-Methode jedes beteiligten Dialogelementobjekts auf und übergibt einen Zeiger auf das betreffende Feld des Transfer-Puffers sowie die in Direction vorgegebene Richtung.

Direction muß eine der tf_XXXX-Konstanten enthalten.

4.8.40 TDialog.Undo

Deklaration

     function Undo: boolean; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Undo> gedrückt oder ein Dialogelement angeklickt hat und ein passendes Dialogelementobjekt existiert, das den Wert id_Undo besitzt.

Die Rückgabe ist true, wenn der Dialog beendet werden soll, false sonst (default).

Wenn man diese Methode überschreibt, kann man z.B. eine gerade ausgeführte Aktion rückgängig machen.

4.8.41 TDialog.UpdateDialog

Deklaration

     procedure UpdateDialog; virtual;

Beschreibung

Wenn der Dialog modal ist, wird zunächst TWindow.Work auf Curr gesetzt. Danach wird die geerbte Methode TWindow.UpdateDialog aufgerufen.

Braucht (und sollte) nicht direkt aufgerufen werden.

4.8.42 TDialog.WMButton

Deklaration

     procedure WMButton(mX,mY,BStat,KStat,
                          Clicks: integer); virtual;

Beschreibung

Wird von TApplication.MUButton aufgerufen, wenn der Benutzer auf ein Dialogelement geklickt hat.

In dieser Methode wird im wesentlichen die Benutzeranwahl mit einer ObjectGEM-internen form_button()-Routine ausgewertet. Außerdem wird hier ein Klick mit der rechten Maustaste an den Tastatur-Handler weitergeleitet, der dann - wenn vorhanden - eine BubbleHelp anzeigt.

Bei modalen Dialogen wird hier auch das Verschieben des Dialogs durchgeführt.

4.8.43 TDialog.WMClosed

Deklaration

     procedure WMClosed; virtual;

Beschreibung

Wenn TWindow.CanClose true zurückgibt, wird der Dialog beendet und mit TDialog.Destroy freigegeben. Zuvor muß allerdings auch OK bzw. - wenn cs_CancelOnClose gesetzt ist - Cancel true geliefert haben. Wenn der zu OK bzw. Cancel gehörige Button disabled ist, kann der Dialog nicht verlassen werden!

Kann der Dialog verlassen werden, wird - sofern cs_QuitOnClose gesetzt ist - die Applikation beendet.

Wird von TApplication.MUMesag aufgerufen.

4.8.44 TDialog.Cut

Deklaration

     procedure Cut; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<X> drückt. Wenn ein Eingabefeld aktiv ist, wird die zugehörige TEdit.Cut-Methode aufgerufen.

4.8.45 TDialog.Delete

Deklaration

     procedure Delete; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Delete> drückt. Standardmäßig wird der Tastendruck an den Tastatur-Handler weitergeleitet.

4.8.46 TDialog.Copy

Deklaration

     procedure Copy; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<C> drückt. Wenn ein Eingabefeld aktiv ist, wird die zugehörige TEdit.Copy-Methode aufgerufen.

4.8.47 TDialog.Paste

Deklaration

     procedure Paste; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<V> drückt. Wenn ein Eingabefeld aktiv ist, wird die zugehörige TEdit.Paste-Methode aufgerufen.

4.8.48 TDialog.SetDefaultButton

Deklaration

     procedure SetDefaultButton(Obj: integer); virtual;

Beschreibung

Macht das Dialogelement mit dem Index Obj zum neuen Default-Button.

4.8.49 TDialog.GetDefaultButton

Deklaration

     function GetDefaultButton: integer; virtual;

Beschreibung

Liefert den Dialogelementindex des aktuellen Default-Buttons.

4.9 TEdit

Mit TEdit werden einzeilig Eingabefelder verwaltet, die zum Einlesen von beliebigen Zeichenketten verwendet werden. Zusätzlich kann eine Eingabeprüfung mit Hilfe der Validierungsobjekte vorgenommen werden.

Pointer

     PEdit = ^TEdit;

Felder

Methoden

Vorfahre

Nachfahren

-

4.9.1 TEdit.Validator

Deklaration

     Validator: PValidator;  (nur lesen)

Beschreibung

Zeigt auf das mit diesem Objekt verbundene Validierungsobjekt. Ist ein solches nicht vorhanden, hat Validator den Wert nil.

Ein Validierungsobjekt sollte einem TEdit-Objekt nur mittels SetValidator zugeordnet werden.

4.9.2 TEdit.Clipboard

Deklaration

     Clipboard: PClipboard;  (nur lesen)

Beschreibung

Zeigt auf das mit dem TEdit-Objekt verknüpfte TClipboard-Objekt (oder ist nil, wenn ein solches nicht existiert).

Wird mit TEdit.GetClipboard gesetzt.

4.9.3 TEdit.Init

Deklaration

     constructor Init(AParent: PDialog; AnIndx,
                        ATextLen: integer; Hlp: string);

Beschreibung

Ruft den Vorfahren TStatic.Init auf, setzt TControl.Style auf cs_Edit+es_Undo und beteiligt das Objekt am Transfermechanismus. Danach wird Validator auf nil gesetzt, ClearModify aufgerufen und der Undo-Puffer vorbereitet.

Wenn das zugehörige Dialogelement nicht vom Typ G_FTEXT oder G_FBOXTEXT ist oder TextLen kleiner als 2 ist, wird die Initialisierung abgebrochen. ATextLen gibt die Länge des editierbaren Textes plus 1 an. Wird hier ein zu kleiner Wert übergeben, funktioniert die Eingabe u.U. nicht korrekt.

4.9.4 TEdit.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Gibt den Speicher des Undo-Puffers frei, entfernt das Validierungsobjekt mit SetValidator(nil) und gibt TEdit.Clipboard frei, wenn ein neues Klemmbrett-Objekt installiert wurde.

Zum Schluß wird TStatic.Done aufgerufen.

4.9.5 TEdit.CanClose

Deklaration

     function CanClose: boolean; virtual;

Beschreibung

Liefert normalerweise true zurück, d.h. der Dialog darf beendet werden. Gibt allerdings IsValid(true) false zurück und ist das Dialogelement nicht disabled, liefert CanClose false, und der Cursor wird mittels Focus zu diesem Objekt bewegt.

4.9.6 TEdit.CanUndo

Deklaration

     function CanUndo: boolean; virtual;

Beschreibung

Gibt true zurück, wenn der Undo-Puffer Zeichen enthält, d.h. wenn die letzte Bearbeitung rückgängig gemacht werden kann.

Wenn es_Undo nicht gesetzt ist, wird immer false zurückgegeben.

4.9.7 TEdit.Clear

Deklaration

     procedure Clear; virtual;

Beschreibung

Ruft den Vorfahren TStatic.Clear auf, beachtet aber zusätzlich den Eingabe-Cursor.

4.9.8 TEdit.Paint

Deklaration

     procedure Paint; virtual;

Beschreibung

Ruft den Vorfahren TControl.Paint auf, beachtet aber zusätzlich den Eingabe-Cursor.

4.9.9 TEdit.ClearModify

Deklaration

     procedure ClearModify; virtual;

Beschreibung

Setzt das Änderungsflag für das Eingabefeld zurück.

4.9.10 TEdit.Cut

Deklaration

     procedure Cut; virtual;

Beschreibung

Löscht den Text im Eingabefeld und legt ihn im Klemmbrett ab. Wird von TDialog.Cut aufgerufen.

4.9.11 TEdit.Copy

Deklaration

     procedure Copy; virtual;

Beschreibung

Kopiert den Text des Eingabefeldes ins Klemmbrett. Wird von TDialog.Copy aufgerufen.

4.9.12 TEdit.Paste

Deklaration

     procedure Paste; virtual;

Beschreibung

Fügt die erste Zeile des Textes im Klemmbrett an der aktuellen Cursorposition im Eingabefeld ein. Wird von TDialog.Paste aufgerufen.

4.9.13 TEdit.Edit

Deklaration

     procedure Edit; virtual;

Beschreibung

Wird bei jedem Zeichen aufgerufen, das in das Eingabefeld eingefügt wird. In dieser Methode wird der Undo-Puffer und das Änderungsflag gesetzt und das Validierungsobjekt abgefragt, wenn bei diesem das Flag voOnEdit gesetzt ist.

Wenn diese Methode überschrieben wird, muß als erstes die ursprüngliche Methode aufgerufen werden.

4.9.14 TEdit.Focus

Deklaration

     procedure Focus; virtual;

Beschreibung

Ruft Parent^.SetFocus(ObjIndx) auf und bewegt damit den Eingabe-Cursor auf dieses Dialogelement.

4.9.15 TEdit.GetClipboard

Deklaration

     function GetClipboard: PClipboard; virtual;

Beschreibung

Liefert das TClipboard-Objekt, das mit dem TEdit-Objekt verknüpft wird.

Standardmäßig wird Parent^.Clipboard zurückgegeben. Will man ein spezialisiertes Klemmbrett-Objekt installieren, muß man diese Methode überschreiben. Wichtig: Ein solches Objekt wird dann von TEdit.Done freigegeben!

4.9.16 TEdit.GetCursor

Deklaration

     function GetCursor: integer; virtual;

Beschreibung

Gibt die Position des Eingabe-Cursors zurück: 0=ganz am Anfang (vor dem Text), Textlänge=am Ende (hinter dem Text).

Wichtig: Dies sagt nichts darüber aus, ob dieses Eingabefeld auch aktiv ist. Dazu muß TControl.ObjIndx mit TDialog.GetFocus des zugehörigen Dialogobjekts verglichen werden, und zusätzlich muß TDialog.Attr.Status=ws_Open sein. ObjectGEM verwaltet nämlich pro Eingabefeld einen eigenen Cursor, und dessen Position wird solange gespeichert, bis das entsprechende Dialogelementobjekt aus dem Speicher entfernt wird.

4.9.17 TEdit.IsModified

Deklaration

     function IsModified: boolean; virtual;

Beschreibung

Gibt true zurück, wenn der Text im Eingabefeld geändert wurde.

Wichtig: Das Änderungsflag wird nicht automatisch auf false gesetzt, dazu muß ClearModify aufgerufen werden.

4.9.18 TEdit.IsValid

Deklaration

     function IsValid(ReportError: boolean): boolean;
                                                virtual;

Beschreibung

Gibt true zurück, wenn der Text des Eingabefeldes gültig ist. IsValid gibt immer true zurück, wenn kein Validierungsobjekt mit diesem TEdit-Objekt verknüpft ist. Andernfalls wird, wenn ReportError true ist, die Rückgabe von TValidator.Valid weitergereicht, ansonsten die von TValidator.IsValid.

4.9.19 TEdit.SetColor

Deklaration

     procedure SetColor(Color: integer); virtual;

Beschreibung

Ruft den Vorfahren TControl.SetColor auf, beachtet aber zusätzlich den Eingabe-Cursor.

4.9.20 TEdit.SetCursor

Deklaration

     procedure SetCursor(CPos: integer); virtual;

Beschreibung

Setzt den Eingabe-Cursor an die Position CPos (0..Textlänge). Wenn es sich um das aktive Eingabefeld eines sichtbaren Dialogs handelt, wird der Cursor an der neuen Position gezeichnet.

4.9.21 TEdit.SetValidator

Deklaration

     procedure SetValidator(AValid: PValidator); virtual;

Beschreibung

Gibt das eventuell schon vorhandene Validierungsobjekt frei und setzt dann Validator auf AValid.

4.9.22 TEdit.SetState

Deklaration

     procedure SetState(StateFlag: integer); virtual;

Beschreibung

Ruft den Vorfahren TControl.SetState auf, beachtet aber zusätzlich den Eingabecursor.

4.9.23 TEdit.SetText

Deklaration

     procedure SetText(ATextString: string); virtual;

Beschreibung

Setzt den Text des Eingabefeldes. Mußte überschrieben werden, damit der Undo-Puffer, das Änderungsflag und der Cursor korrekt behandelt werden. Intern wird trotzdem noch TStatic.SetText aufgerufen (hierbei ist es vielleicht interessant zu wissen, daß bei TEdit-Objekten sts_Fill normalerweise nicht gesetzt ist).

4.9.24 TEdit.Undo

Deklaration

     procedure Undo; virtual;

Beschreibung

Macht die letzte Änderung rückgängig, wenn im Undo-Puffer eine entsprechende Zeichenkette vorhanden ist.

4.10 TEvent

TEvent überprüft die Gültigkeit von GEM-Ereignissen, die an TApplication- und TWindow-Objekte gemeldet werden. Wenn also z.B. ein Fenster auf eine spezielle Nachricht reagieren soll, muß diesem Fenster ein abgeleitetes TEvent-Objekt zugeordnet werden, das (in diesem Fall) auf TestMessage positiv antwortet. Zur Abfrage einer Menüanwahl existieren spezielle TKeyMenu-Objekte.

Pointer

     PEvent = ^TEvent;

Felder

Methoden

Vorfahre

Nachfahren

4.10.1 TEvent.Parent

Deklaration

     Parent: PEventObject;  (nur lesen)

Beschreibung

Enthält einen Zeiger auf das zugehörige TEventObject (d.h. TApplication oder TWindow). Wird von TEvent.Init gesetzt.

4.10.2 TEvent.Style

Deklaration

     Style: word;  (nur lesen)

Beschreibung

Wird von TEvent.Init mit Null initialisiert. Abgeleitete Objekte können hier eine der es_XXXX-Konstanten eintragen, mit denen wichtige Objekttypen unterschieden werden können.

4.10.3 TEvent.Init

Deklaration

     constructor Init(AParent: PEventObject);

Beschreibung

Ruft den Vorfahren TObject.Init auf und setzt TEvent.Parent auf AParent. Ist AParent=nil, wird Parent auf Application gesetzt. Danach installiert sich das Objekt in der EventList des durch Parent angegebenen TEventObject. TEvent.Style wird auf Null gesetzt.

4.10.4 TEvent.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Entfernt sich selbst aus der EventList des durch TEvent.Parent angegebenen TEventObject und ruft dann TObject.Done auf.

4.10.5 TEvent.Next

Deklaration

     function Next: PEvent;

Beschreibung

Gibt einen Zeiger auf das nächste TEvent-Objekt in der EventList des zugehörigen TEventObject zurück. Ist kein weiteres Objekt vorhanden, erhält man einen nil-Zeiger.

4.10.6 TEvent.Previous

Deklaration

     function Previous: PEvent;

Beschreibung

Gibt einen Zeiger auf das vorhergehende TEvent-Objekt in der EventList des zugehörigen TEventObject zurück. Ist kein weiteres Objekt vorhanden, erhält man einen nil-Zeiger, d.h. in diesem Fall zeigt EventList genau auf das aktuelle Objekt.

4.10.7 TEvent.TestKey

Deklaration

     function TestKey(Stat,Key: integer): boolean;
                                          virtual;

Beschreibung

Gibt false zurück. Muß überschrieben werden, damit das Objekt Tastendrücke überprüfen kann. Sollte dann true zurückgeben, wenn die in Stat und Key übergebenen Werte die gesuchten sind. Key entspricht der Rückgabe von evnt_keybd(), Stat dem Tastaturzustand von evnt_button().

4.10.8 TEvent.TestMenu

Deklaration

     function TestMenu(mNum: integer): boolean; virtual;

Beschreibung

Gibt false zurück. Muß überschrieben werden, damit das Objekt die Anwahl eines Menüeintrags überprüfen kann. Sollte dann true zurückgeben, wenn mNum dem gewünschten Index des Menübaums entspricht.

4.10.9 TEvent.TestButton

Deklaration

     function TestButton(mX,mY,BStat,KStat,Clicks:
                              integer): boolean; virtual;

Beschreibung

Gibt false zurück. Muß überschrieben werden, damit das Objekt Mausklicks überprüfen kann. Sollte dann true zurückgeben, wenn die gewünschten Werte übergeben werden. Die Variablen entsprechen denen von evnt_button(), Clicks gibt die Anzahl der Mausklicks an, die zu dem Ereignis geführt haben.

4.10.10 TEvent.TestMouse

Deklaration

     function TestMouse(M,mX,mY,BStat,KStat: integer):
                                        boolean; virtual;

Beschreibung

Gibt false zurück. Muß überschrieben werden, damit das Objekt überprüfen kann, ob die Maus einen rechteckigen Bereich betritt oder verläßt. Die Variablen sind wie bei evnt_mouse() belegt, M gibt die Nummer des Rechtecks (MU_M1, MU_M2) an (siehe evnt_multi()).

Wichtig: Diese Methode sollte nicht überschrieben werden, da die Rechtecke intern von ObjectGEM für die Fensterklassen-Mauscursor verwendet werden.

4.10.11 TEvent.TestMessage

Deklaration

     function TestMessage(Pipe: Pipearray): boolean;
                                            virtual;

Beschreibung

Gibt false zurück. Muß überschrieben werden, damit das Objekt GEM-Nachrichten überprüfen kann. Sollte im Erfolgsfall true zurückgeben. Pipearray entspricht dem ARRAY_8 von evnt_mesag().

4.10.12 TEvent.Work

Deklaration

     procedure Work; virtual;

Beschreibung

Macht gar nichts. Kann aber z.B. von den TestXXXX-Methoden im Falle eines erfolgreichen Tests aufgerufen werden, was u.a. von TKeyMenu getan wird. An dieser Stelle steht dann z.B. die Abarbeitung einer zu einem Menüeintrag gehörigen Dialogbox etc.

4.11 TEventObject

TEventObject definiert ein grundlegendes Objekt, das auf GEM-Ereignisse ("Events", "Messages") reagieren kann. TEventObject verwaltet mit EventList TEvent-Objekte, mit deren Methoden die Gültigkeit eines Ereignisses überprüft werden kann.

Pointer

     PEventObject = ^TEventObject;

Felder

Methoden

Vorfahre

Nachfahren

4.11.1 TEventObject.EventList

Deklaration

     EventList: PEvent;  (nur lesen)

Beschreibung

EventList ist eine Liste von Zeigern auf TEvent-Objekte. Zwischen den Objekten bestehen Verweise mit TEvent.Previous und TEvent.Next, EventList zeigt auf das erste Element der Liste. TEvent-Objekte tragen sich bei ihrer Initialisierung automatisch in diese Liste ein.

4.11.2 TEventObject.Init

Deklaration

     constructor Init;

Beschreibung

Init ruft den Vorfahren TObject.Init auf und initialisiert EventList mit nil.

4.11.3 TEventObject.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Entfernt alle in EventList eingetragenen Objekte mit ihrer Free-Methode und ruft dann TObject.Done auf.

4.12 TFilterValidator

Das Objekt TFilterValidator überwacht ein Eingabefeld, in das der Anwender Zeichen eingibt, und vergleicht die Eingabe mit einem Satz erlaubter Zeichen. Wurde ein Zeichen eingegeben, das nicht in diesem Satz enthalten ist, wird eine ungültige Eingabe gemeldet. Teilweise wird dieses Verhalten schon vom GEM abgedeckt (siehe TEDINFO-Struktur), allerdings ist dieses Validierungsobjekt wesentlich flexibler, da eine beliebige Menge an erlaubten Zeichen angegeben werden kann.

Pointer

     PFilterValidator = ^TFilterValidator;

Felder

Methoden

Vorfahre

Nachfahre

4.12.1 TFilterValidator.ValidChars

Deklaration

     ValidChars: TCharSet;

Beschreibung

Speichert den Satz für die Eingabe gültiger Zeichen. Sollen z.B. nur Ziffern erlaubt sein, muß ValidChars den Wert ['0'..'9'] haben.

Wird von TFilterValidator.Init gesetzt.

4.12.2 TFilterValidator.Init

Deklaration

     constructor Init(ValidCharSet: TCharSet);

Beschreibung

Ruft TValidator.Init auf und setzt dann ValidChars auf ValidCharSet und Options auf voOnEdit.

4.12.3 TFilterValidator.Error

Deklaration

     procedure Error; virtual;

Beschreibung

Zeigt die Fehlermeldung an, daß die Eingabe ungültige Zeichen enthält.

4.12.4 TFilterValidator.IsValid

Deklaration

     function IsValid(s: string): boolean; virtual;

Beschreibung

Vergleicht jedes Zeichen in s mit ValidChars. Ist jedes Zeichen gültig und liefert TValidator.IsValid true, wird true zurückgegeben.

4.12.5 TFilterValidator.IsValidInput

Deklaration

     function IsValidInput(var s: string;
               SuppressFill: boolean): boolean; virtual;

Beschreibung

Vergleicht jedes Zeichen in s mit ValidChars. Ist jedes Zeichen gültig (evtl. werden dazu Klein- in Großbuchstaben umgewandelt), wird true zurückgegeben, sonst false.

Ist s ein Leerstring, ist die Rückgabe immer true.

4.13 TGroupBox

Macht aus "normalen" Rechteck-Elementen eine Groupbox, d.h. es wird eine Überschrift ausgegeben. Weitere Aktionen sind von TGroupBox nicht nötig, da die durch das Rechteck-Element vorgegebene Hierarchie automatisch vom GEM-Objekt-Manager beachtet wird.

Pointer

     PGroupBox = ^TGroupBox;

Methoden

Vorfahre

Nachfahren

-

4.13.1 TGroupBox.Init

Deklaration

     constructor Init(AParent: PDialog; AnIndx: integer;
                                     ATitle,Hlp: string);

Beschreibung

Ruft den Vorfahren TControl.Init auf. AnIndx muß dabei der Index eines G_BOX-Elements sein. ATitle ist der Titel der Groupbox. TControl.Style wird auf cs_GroupBox gesetzt.

4.13.2 TGroupBox.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Macht aus dem TGroupBox-Objekt wieder ein "normales" Rechteck-Element und ruft danach den Vorfahren TControl.Done auf.

4.13.3 TGroupBox.SetText

Deklaration

     procedure SetText(ATextString: string); virtual;

Beschreibung

Gibt der GroupBox eine neue Überschrift und zeichnet das Dialogelement neu.

4.13.4 TGroupBox.GetText

Deklaration

     function GetText: string; virtual;

Beschreibung

Liefert den Titel der GroupBox.

4.14 TIcon

Mit diesem Objekttyp werden Icons verwaltet. Jedes Icon sollte mit einem TIcon-Objekt verknüpft werden, da hierdurch eine automatische Selektion, Verschiebung etc. möglich ist. Als Nachfahren von TEvent hängen sich die Icons in die EventList ein. Zur Auswertung stehen u.a. die Methoden IconSelect, FirstIcon und NextIcon zur Verfügung.

Pointer

     PIcon = ^TIcon;

Felder

Methoden

Vorfahre

Nachfahre

4.14.1 TIcon.ADialog

Deklaration

     ADialog: PDialog;

Beschreibung

Dies ist ein universeller Dialog-Pointer, der in TIcon.Init zunächst auf nil gesetzt wird. So ist jedes TIcon-Objekt bereits auf die Verwaltung eines Dialogs vorbereitet.

In der TEvent.Work-Methode kann der Dialog dann initialisiert bzw. abgearbeitet werden (siehe Beispielprogramme).

4.14.2 TIcon.Click

Deklaration

     Click: integer;  (nur lesen)

Beschreibung

Wenn die TEvent.Work-Methode aufgerufen wird, steht in diesem Feld die Anzahl der Mausklicks (kann bei Tastaturanwahl auch Null sein!).

4.14.3 TIcon.Shift

Deklaration

     Shift: integer;  (nur lesen)

Beschreibung

Wenn die TEvent.Work-Methode aufgerufen wird, steht in diesem Feld der Status der Umschalttasten.

4.14.4 TIcon.VKey

Deklaration

     VKey: integer;

Beschreibung

Gibt zusammen mit TIcon.VStat die Taste an, auf die TIcon.TestKey positiv reagieren soll. Wird von TIcon.Init auf -1 gesetzt, d.h. das Icon ist nicht per Tastatur anwählbar.

4.14.5 TIcon.VStat

Deklaration

     VStat: integer;

Beschreibung

Gibt zusammen mit TIcon.VKey die Taste an, auf die TIcon.TestKey positiv reagieren soll. Wird von TIcon.Init auf Null gesetzt.

Wichtig: Wenn egal ist, ob die linke oder die rechte <Shift>-Taste gedrückt ist, sollte hier K_SHIFT eingetragen sein.

4.14.6 TIcon.XPos

Deklaration

     XPos: integer;  (nur lesen)

Beschreibung

Gibt die X-Position des Icons in Pixel relativ zum Parent an, d.h. entweder zum zugehörigen Fenster-Arbeitsbereich oder zum Desktop.

4.14.7 TIcon.YPos

Deklaration

     YPos: integer;  (nur lesen)

Beschreibung

Gibt die Y-Position des Icons in Pixel relativ zum Parent an, d.h. entweder zum zugehörigen Fenster-Arbeitsbereich oder zum Desktop.

4.14.8 TIcon.Init

Deklaration

     constructor Init(AParent: PEventObject; ATree,
                      AnIndex,iX,iY: integer; Movable,
                      Selectble: boolean; AName,
                      Hlp: string);

Beschreibung

Ruft den Vorfahren TEvent.Init auf. Danach wird die Adresse des Icons mit ATree und AnIndex berechnet, TEvent.Style wird auf es_Icon gesetzt und SetPos(iX,iY) sowie SetText(AName) werden aufgerufen.

Movable gibt an, ob das Icon bewegt werden darf, Selectble gilt entsprechend für die Anwahl. Hlp enthält den Text für die BubbleHelp.

Wichtig: Im Moment sind nur Dialogelemente vom Typ G_IMAGE erlaubt. G_ICON, G_CICON und freie Images werden noch zurückgewiesen. Außerdem sollten TIcon-Objekte z.Z. nur in Fenstern und nicht auf dem Desktop verwendet werden, da das Objekt TDesktop noch nicht verfügbar ist.

4.14.9 TIcon.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Intern benötigte Speicherstrukturen werden freigegeben. Danach wird TEvent.Done aufgerufen.

4.14.10 TIcon.Check

Deklaration

     procedure Check; virtual;

Beschreibung

Ruft SetCheck(bf_Checked) auf und selektiert damit das Icon.

4.14.11 TIcon.GetCheck

Deklaration

     function GetCheck: integer; virtual;

Beschreibung

Gibt bf_Checked bzw. bf_Unchecked zurück, je nachdem ob das Icon markiert ist oder nicht.

4.14.12 TIcon.GetHelp

Deklaration

     function GetHelp: string; virtual;

Beschreibung

Gibt den Hilfstext für die BubbleHelp zurück.

4.14.13 TIcon.GetOutline

Deklaration

     function GetOutline(var IcnRect,
                    TxtRect: GRECT): boolean; virtual;

Beschreibung

Gibt die Umrißrechtecke (absolute Koordinaten) für das Icon und den Icontext zurück, was für die Selektion und das Verschieben benötigt wird.

Wenn das Icon keinen Text besitzt, ist die Rückgabe false und TxtRect sollte ein Rechteck außerhalb des Bildschirms beschreiben (zur einfacheren Auswertung). Stehen in beiden GRECTs gültige Rechtecke, wird true zurückgegeben.

4.14.14 TIcon.GetText

Deklaration

     function GetText: string; virtual;

Beschreibung

Gibt den Text des Icons zurück bzw. einen Leerstring, wenn das Icon keinen Text besitzt.

4.14.15 TIcon.Hide

Deklaration

     procedure Hide(Draw: boolean); virtual;

Beschreibung

Macht das Icon unsichtbar. Ist Draw true, wird dann das Parent-Objekt neu gezeichnet (d.h. der Fenster-Arbeitsbereich oder der Desktop), damit das Icon auch auf dem Bildschirm (und nicht nur logisch) verschwindet.

Wenn man allerdings mehrere Icons versteckt und das komplette Fenster anschließend neu zeichnet, kann man Draw auf false setzen.

Versteckte Icons können (natürlich) nicht angewählt bzw. verschoben werden.

4.14.16 TIcon.IMMoved

Deklaration

     procedure IMMoved(X,Y: integer); virtual;

Beschreibung

Wird aufgerufen, nachdem das Icon vom Benutzer verschoben wurde.

Intern wird SetPos(X,Y,true) aufgerufen.

4.14.17 TIcon.IsHelpAvailable

Deklaration

     function IsHelpAvailable: boolean; virtual;

Beschreibung

Gibt true zurück, wenn mit TIcon.GetHelp ein Hilfstext für die BubbleHelp geliefert werden kann.

4.14.18 TIcon.IsHidden

Deklaration

     function IsHidden: boolean; virtual;

Beschreibung

Gibt true zurück, wenn das Icon unsichtbar ist, false sonst.

Unsichtbare Icons können weder angewählt noch verschoben werden.

4.14.19 TIcon.IsSelected

Deklaration

     function IsSelected(r: GRECT): boolean; virtual;

Beschreibung

Gibt true zurück, wenn sich das Rechteck in r und mind. eines der von GetOutline gelieferten Rechtecke überschneiden.

Wird für die Selektion per Klick und durch die Methode TApplication.Rubbox benötigt.

4.14.20 TIcon.Paint

Deklaration

     procedure Paint; virtual;

Beschreibung

Zeichnet das Icon und den dazugehörigen Text unter Beachtung der jeweiligen Rechteckliste. Für Dialogelemente vom Typ G_IMAGE wird automatisch eine passende "Maske" erzeugt.

Wenn das Icon unsichtbar ist, passiert in dieser Methode nichts!

4.14.21 TIcon.SetCheck

Deklaration

     procedure SetCheck(CheckFlag: integer); virtual;

Beschreibung

Bestimmt die Markierung des Icons, d.h. bf_Checked oder bf_Unchecked.

4.14.22 TIcon.SetHelp

Deklaration

     procedure SetHelp(Hlp: string); virtual;

Beschreibung

Weist dem Icon einen neuen Hilfstext für die BubbleHelp zu.

4.14.23 TIcon.SetPos

Deklaration

     procedure SetPos(iX,iY: integer; Redraw: boolean);
                                                virtual;

Beschreibung

Bringt das Icon an die neue Position iX,iY. Wenn Redraw true ist, wird das Icon vorher an der alten Stelle gelöscht und nachher an der neuen Position gezeichnet.

4.14.24 TIcon.SetText

Deklaration

     procedure SetText(AName: string); virtual;

Beschreibung

Weist dem Icon einen neuen Text zu und stellt diesen dar.

4.14.25 TIcon.TestButton

Deklaration

     function TestButton(mX,mY,BStat,KStat,
                      Clicks: integer): boolean; virtual;

Beschreibung

Kümmert sich um die Icon-Selektion per Maus so, wie sie vom MultiTOS-Desktop her bekannt ist, d.h. Anwahl und Verschieben.

Wenn das Icon nicht verschoben wird, wird TEvent.Work aufgerufen, nachdem Click und Shift entsprechend gesetzt wurden.

Wurde das Icon mit der rechten Maustaste angeklickt, wird hier die BubbleHelp angezeigt.

4.14.26 TIcon.TestKey

Deklaration

     function TestKey(Stat,Key: integer): boolean;
                                              virtual;

Beschreibung

Wenn TIcon.VStat und TIcon.VKey die zu Stat und Key passenden Werte enthalten, wird das Icon selektiert und dann TEvent.Work aufgerufen. Vorher werden noch Click und Shift auf Null gesetzt.

4.14.27 TIcon.Toggle

Deklaration

     procedure Toggle; virtual;

Beschreibung

Wechselt bei dem Icon den Zustand der Markierung.

4.14.28 TIcon.Uncheck

Deklaration

     procedure Uncheck; virtual;

Beschreibung

Ruft SetCheck(bf_Unchecked) auf und deselektiert dadurch das Icon.

4.14.29 TIcon.Unhide

Deklaration

     procedure Unhide; virtual;

Beschreibung

Macht das Icon sichtbar und zeichnet es.

4.15 TKey

TKey ist ein spezielles TKeyMenu-Objekt, das nur auf einen Tastaturshortcut reagiert. Zusätzlich kann eine GEM-Message übergeben werden, die bei Aktivierung automatisch verschickt wird.

Pointer

     PKey = ^TKey;

Methoden

Vorfahre

Nachfahren

-

4.15.1 TKey.Init

Deklaration

     constructor Init(AParent: PEventObject; Stat,
                       Key: integer; Msg: pointer; GetHnd: boolean);

Beschreibung

Ruft TKeyMenu.Init auf, wobei die Menü-Parameter auf -1 gesetzt werden, d.h. alle Menüfunktionen von TKeyMenu werden ausgeschaltet.

TKeyMenu.VGHnd wird auf GetHnd gesetzt. Wenn Msg<>nil ist, sollte der Pointer auf einen 16 Bytes großen Bereich zeigen (bequemerweise z.B. ein Pipearray), in dem sich eine komplette GEM-Message befindet.

Diese Message wird dann in TKeyMenu.VPipe umkopiert, wobei VPipe^[1] mit TApplication.apID und VPipe^[2] mit 0 initialisiert wird.

4.15.2 TKey.TestMenu

Deklaration

     function TestMenu(mNum: integer): boolean; virtual;

Beschreibung

Liefert einfach nur false zurück, d.h. das TKey-Objekt reagiert nicht mehr auf eine Menüanwahl.

4.16 TKeyMenu

TKeyMenu ist ein spezialisiertes TEvent-Objekt, daß auf eine Menüanwahl per Maus oder Shortcut reagiert. Jeder Menüeintrag sollte mit einem solchen Objekt verknüpft sein, da in diesen Objekten die eigentlichen Aktionen nach der Anwahl (Abarbeiten von Dialogen etc.) geschehen sollten.

Wenn entweder auf Maus- oder aber auf Tastaturanwahl verzichtet werden soll, stehen dafür spezielle Nachfahren von TKeyMenu zur Verfügung.

TKeyMenu kann sowohl für "normale" Menüleisten als auch für solche im Fenster verwendet werden.

Pointer

     PKeyMenu = ^TKeyMenu;

Felder

Methoden

Vorfahre

Nachfahren

4.16.1 TKeyMenu.ADialog

Deklaration

     ADialog: PDialog;

Beschreibung

Dies ist ein universeller Dialog-Pointer, der in TKeyMenu.Init zunächst auf nil gesetzt wird. So ist jedes TKeyMenu-Objekt bereits auf die Verwaltung eines Dialogs vorbereitet (was in der Praxis auch meistens genutzt wird).

In der TEvent.Work-Methode kann der Dialog dann initialisiert bzw. abgearbeitet werden (siehe Beispielprogramme).

4.16.2 TKeyMenu.VGHnd

Deklaration

     VGHnd: boolean;

Beschreibung

Gibt an, ob TKeyMenu.VPipe^[3] unmittelbar vor dem Versenden auf das GEM-Handle des übergeordneten Fensters gesetzt werden soll (da sich diese Kennung ja ändern kann). Wenn Parent auf das Applikations-Objekt zeigt, wird die Kennung des obersten Fensters eingetragen. Wenn wind_get(WF_OWNER) vorhanden ist (das ist bei neueren TOS-Versionen der Fall), können so auch Nachrichten an Fenster fremder Applikationen verschickt werden.

Wird von TKeyMenu.Init auf false initialisiert und kann mit TKey.Init bzw. TMenu.Init gesetzt werden.

4.16.3 TKeyMenu.VKey

Deklaration

     VKey: integer;

Beschreibung

Gibt zusammen mit TKeyMenu.VStat die Taste an, auf die TKeyMenu.TestKey positiv reagieren soll.

Wird von TKeyMenu.Init gesetzt.

4.16.4 TKeyMenu.VMNum

Deklaration

     VMNum: integer;

Beschreibung

Gibt den Index des Menüeintrags an, auf den TKeyMenu.TestMenu positiv reagieren soll.

Wird von TKeyMenu.Init gesetzt.

4.16.5 TKeyMenu.VPipe

Deklaration

     VPipe: PPipearray;  (nur lesen)

Beschreibung

Enthält einen Pointer auf eine komplette GEM-Nachricht, die von TKeyMenu.TestKey bzw. TKeyMenu.TestMenu bei positiver Anwahl verschickt wird.

TKeyMenu.Init besetzt dieses Feld mit nil, d.h. es wird keine Nachricht verschickt. Kann mit TKey.Init oder TMenu.Init gesetzt werden.

4.16.6 TKeyMenu.VStat

Deklaration

     VStat: integer;

Beschreibung

Gibt zusammen mit TKeyMenu.VKey die Taste an, auf die TKeyMenu.TestKey positiv reagieren soll. Wird von TKeyMenu.Init gesetzt.

Wichtig: Wenn egal ist, ob die linke oder die rechte <Shift>-Taste gedrückt ist, sollte hier K_SHIFT eingetragen sein.

4.16.7 TKeyMenu.VTNum

Deklaration

     VTNum: integer;

Beschreibung

Enthält den Index des Menütitels vom zugehörigen Menüeintrag VMNum.

Wird von TKeyMenu.Init gesetzt und von TKeyMenu.TestKey einzig und allein zum Invertieren des Menütitels benötigt.

4.16.8 TKeyMenu.Init

Deklaration

     constructor Init(AParent: PEventObject;
                           Stat,Key,mNum,tNum: integer);

Beschreibung

Ruft den Vorfahren TEvent.Init auf. Dann wird TKeyMenu.VStat auf Stat, TKeyMenu.VKey auf Key, VMNum auf mNum und VTNum auf tNum gesetzt, sowie TKeyMenu.ADialog und TKeyMenu.VPipe mit nil und TKeyMenu.VGHnd mit false initialisiert.

4.16.9 TKeyMenu.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Gibt eine evtl. in TKeyMenu.VPipe vorhandene GEM-Message frei und ruft den Vorfahren TEvent.Done auf.

4.16.10 TKeyMenu.Check

Deklaration

     procedure Check; virtual;

Beschreibung

Ruft TKeyMenu.SetCheck(bf_Checked) auf und markiert damit den über VMNum angegebenen Menüeintrag mit einem Häkchen.

4.16.11 TKeyMenu.Disable

Deklaration

     procedure Disable; virtual;

Beschreibung

Ruft TKeyMenu.SetState(bf_Disabled) auf und macht damit den Menüeintrag mit Index VMNum nicht anwählbar.

4.16.12 TKeyMenu.Enable

Deklaration

     procedure Enable; virtual;

Beschreibung

Ruft TKeyMenu.SetState(bf_Enabled) auf und macht damit den Menüeintrag mit Index VMNum wieder anwählbar.

4.16.13 TKeyMenu.GetCheck

Deklaration

     function GetCheck: integer; virtual;

Beschreibung

Gibt bf_Checked bzw. bf_Unchecked zurück, je nachdem ob der Menüeintrag mit Index VMNum mit einem Häkchen markiert ist oder nicht.

Ist VMNum kein korrekter Eintrag zugewiesen, erhält man als Rückgabe id_No.

4.16.14 TKeyMenu.GetState

Deklaration

     function GetState: integer; virtual;

Beschreibung

Gibt bf_Enabled bzw. bf_Disabled zurück, je nachdem ob der Menüeintrag mit Index VMNum anwählbar ist oder nicht.

Ist VMNum kein korrekter Eintrag zugewiesen, erhält man als Rückgabe id_No.

4.16.15 TKeyMenu.GetText

Deklaration

     function GetText: string; virtual;

Beschreibung

Gibt den Text des Menüeintrags mit Index VMNum zurück bzw. einen Leerstring, wenn VMNum kein korrekter Eintrag zugewiesen ist.

4.16.16 TKeyMenu.SetCheck

Deklaration

     procedure SetCheck(CheckFlag: integer); virtual;

Beschreibung

Bestimmt die Markierung des Menüeintrags VMNum, d.h. bf_Checked oder bf_Unchecked.

4.16.17 TKeyMenu.SetState

Deklaration

     procedure SetState(StateFlag: integer); virtual;

Beschreibung

Setzt den Zustand des Menüeintrags VMNum, d.h. bf_Enabled oder bf_Disabled.

4.16.18 TKeyMenu.SetText

Deklaration

     procedure SetText(ATextString: string); virtual;

Beschreibung

Weist dem Menüeintrag VMNum einen neuen Text zu.

Wichtig: Man muß selbst darauf achten, daß der String nicht zu lang ist! Ist der String allerdings zu kurz, wird er mit Leerzeichen aufgefüllt.

4.16.19 TKeyMenu.TestKey

Deklaration

     function TestKey(Stat,Key: integer): boolean; virtual;

Beschreibung

Wenn Stat=TKeyMenu.VStat, Key=TKeyMenu.VKey und TKeyMenu.GetState<>bf_Disabled ist, liefert TestKey true zurück. Außerdem werden dann folgende Aktionen ausgeführt: Der Menütitel VTNum wird invertiert; wenn TKeyMenu.VPipe<>nil ist, wird die entsprechende GEM-Message verschickt; zum Schluß wird dann noch Work aufgerufen. Ansonsten gibt TestKey false zurück.

Wichtig: Wenn in VStat K_SHIFT eingetragen ist, werden beide <Shift>-Tasten gleichwertig behandelt!

4.16.20 TKeyMenu.TestMenu

Deklaration

     function TestMenu(mNum: integer): boolean; virtual;

Beschreibung

Wenn mNum<>VMNum ist, gibt TestMenu false zurück. Ansonsten liefert diese Methode true. Vorher wird noch - wenn TKeyMenu.VPipe<>nil ist - die entsprechende GEM-Message verschickt und dann Work aufgerufen.

4.16.21 TKeyMenu.Toggle

Deklaration

     procedure Toggle; virtual;

Beschreibung

Wechselt beim Menüeintrag VMNum mit TKeyMenu.SetCheck den Zustand zwischen gesetztem und nicht gesetztem Häkchen.

4.16.22 TKeyMenu.Uncheck

Deklaration

     procedure Uncheck; virtual;

Beschreibung

Ruft TKeyMenu.SetCheck(bf_Unchecked) auf und entfernt damit ein evtl. vor dem Menüeintrag mit Index VMNum vorhandenes Häkchen.

4.17 TLookupValidator

TLookupValidator vergleicht einen gegebenen String mit einer Liste gültiger Werte. Es ist ein abstrakter Objekttyp, d.h. es macht nicht sehr viel Sinn, ihn zu instantiieren. Er kann aber als Grundlage neuer Objekttypen verwendet werden, die über eine entsprechende Liste gültiger Werte verfügen. Dazu muß dann auch die Methode Lookup überschrieben werden.

Pointer

     PLookupValidator = ^TLookupValidator;

Methoden

Vorfahre

Nachfahre

4.17.1 TLookupValidator.IsValid

Deklaration

     function IsValid(s: string): boolean; virtual;

Beschreibung

Gibt true zurück, wenn TLookupValidator.Lookup true liefert. Wenn voNotEmpty gesetzt ist, darf die Eingabe außerdem nicht leer sein, sonst wird false zurückgegeben.

4.17.2 TLookupValidator.Lookup

Deklaration

     function Lookup(s: string): boolean; virtual;

Beschreibung

Vergleicht die Zeichenkette s mit einer Liste gültiger Elemente und gibt true zurück, wenn s einem dieser Elemente entspricht, sonst false.

TLookupValidator.Lookup ist allerdings eine abstrakte Methode, die immer true zurückgibt.

4.18 TMenu

TMenu ist ein spezielles TKeyMenu-Objekt, das nur auf Mausanwahl eines Menüeintrags reagiert. Zusätzlich kann eine GEM-Message übergeben werden, die bei Aktivierung automatisch verschickt wird.

Pointer

     PMenu = ^TMenu;

Methoden

Vorfahre

Nachfahren

-

4.18.1 TMenu.Init

Deklaration

     constructor Init(AParent: PEventObject;
                       mNum: integer; Msg: pointer; GetHnd: boolean);

Beschreibung

Ruft TKeyMenu.Init auf, wobei die Tastatur-Parameter und der Menütitel auf -1 gesetzt werden, d.h. alle Tastaturfunktionen von TKeyMenu werden ausgeschaltet.

TKeyMenu.VGHnd wird auf GetHnd gesetzt. Wenn Msg<>nil ist, sollte der Pointer auf einen 16 Bytes großen Bereich zeigen (bequemerweise z.B. ein Pipearray), in dem sich eine komplette GEM-Message befindet. Diese Message wird dann in TKeyMenu.VPipe umkopiert, wobei VPipe^[1] mit TApplication.apID und VPipe^[2] mit 0 initialisiert wird.

4.18.2 TMenu.TestKey

Deklaration

     function TestKey(Stat,Key: integer): boolean; virtual;

Beschreibung

Liefert einfach nur false zurück, d.h. das TMenu-Objekt reagiert nicht mehr auf eine Tastaturanwahl.

4.19 TObject

TObject ist das grundlegende Objekt von ObjectGEM. Alle weiteren Objekte stammen letztendlich von TObject ab. TObject besitzt keinen Vorfahren.

Pointer

     PObject = ^TObject;

Methoden

Vorfahre

-

Nachfahren

4.19.1 TObject.Init

Deklaration

     constructor Init;

Beschreibung

Initialisiert das Objekt. Wird von den Konstruktoren aller abgeleiteten Objekte aufgerufen.

4.19.2 TObject.Free

Deklaration

     procedure Free;

Beschreibung

Ruft den Destruktor Done auf und entfernt das Objekt aus dem Speicher.

4.19.3 TObject.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Gibt den Speicher von dynamischen Objekten frei.

4.20 TPopup

Popup-Menüs erscheinen an einer beliebigen Bildschirmposition (z.B. beim Mauscursor) und lassen den Benutzer aus einer festen Liste von Werten, Aktionen etc. auswählen. Eine einfache Bearbeitung von Popup-Menüs kann mit TApplication.Popup erfolgen. Eine Beschreibung der Tastatursteuerung und der weitergehenden Programmierung findet sich unter "Popup-Menüs".

Pointer

     PPopup = ^TPopup;

Felder

Methoden

Vorfahre

Nachfahren

-

4.20.1 TPopup.pFlag

Deklaration

     pFlag: integer;

Beschreibung

Gibt an, auf welche Position sich die Koordinaten pX und pY beziehen. Wird mit POP_LEFTOP (0) initialisiert, d.h. pX und pY entsprechen der linken oberen Ecke des Popup-Menüs. Der andere mögliche Wert ist POP_CENTER (1), pX und pY entsprechen dann der Mitte des Popups.

4.20.2 TPopup.pIndex

Deklaration

     pIndex: integer;  (nur lesen)

Beschreibung

Entspricht dem Index des Popup-Hintergrundrechtecks im Objektbaum PopTree. Wird von TPopup.Init gesetzt. Kann auch ROOT sein (dann wäre der gesamte Baum das Popup-Menü).

4.20.3 TPopup.pMax

Deklaration

     pMax: integer;  (nur lesen)

Beschreibung

Gibt an, wieviele Einträge das Popup-Menü maximal enthält. Bei den dynamischen Popups kann das Menü mehr Einträge besitzen, als gerade sichtbar sind!

4.20.4 TPopup.PopTree

Deklaration

     PopTree: PTree;  (nur lesen)

Beschreibung

PopTree zeigt auf den Objektbaum, in dem man praktischerweise alle Popup-Menüs eines Programms zusammenfassen kann (allerdings nicht muß). Die Menüs bestehen aus einem G_BOX-Objekt als Hintergrund, das von oben nach unten sortierte G_STRING-Einträge enthält.

Wird von TPopup.Init gesetzt.

4.20.5 TPopup.pRows

Deklaration

     pRows: integer;  (nur lesen)

Beschreibung

Gibt an, wieviele Einträge angezeigt werden, d.h. aus wieviele Zeilen das Popup-Menü besteht.

Beim Entwurf im RCS muß bedacht werden, daß nicht mehr als z.Z. 19 Einträge erlaubt sind!

4.20.6 TPopup.pX

Deklaration

     pX: integer;

Beschreibung

Gibt die X-Position des Popup-Menüs an. Wird mit 0 initialisiert und sollte deshalb geändert werden (das macht z.B. TApplication.Popup).

4.20.7 TPopup.pY

Deklaration

     pY: integer;

Beschreibung

Gibt die Y-Position des Popup-Menüs an. Wird mit 0 initialisiert und sollte deshalb geändert werden (das macht z.B. TApplication.Popup).

4.20.8 TPopup.Init

Deklaration

     constructor Init(AParent: PEventObject;
                          tIndx,oIndx: integer);

Beschreibung

Ruft den Vorfahren TEvent.Init auf und setzt dann PopTree auf den durch tIndx angegebenen Objektbaum. Danach werden pMax und pRows berechnet. Entspricht das Menü nicht den Konventionen (siehe PopTree und pRows), wird die Initialisierung abgebrochen. Schließlich wird noch pIndex auf oIndx gesetzt, und pFlag, pX und pY werden initialisiert. Wenn in tIndx id_No übergeben wird, kann mit der Methode SetPopTree z.B. ein im Speicher erzeugter Objektbaum gesetzt werden, andernfalls wird das übergebene Menü umkopiert! oIndx muß aber trotzdem korrekt gesetzt (d.h. größer gleich ROOT) sein!

4.20.9 TPopup.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Gibt den Speicherplatz der kopierten Resource frei und ruft den Vorfahren TEvent.Done auf.

4.20.10 TPopup.Check

Deklaration

     procedure Check(nr: integer); virtual;

Beschreibung

Ruft SetCheck(nr,bf_Checked) auf und markiert damit den Eintrag nr mit einem Häkchen.

4.20.11 TPopup.Disable

Deklaration

     procedure Disable(nr: integer); virtual;

Beschreibung

Ruft SetState(nr,bf_Disabled) auf und macht den Eintrag nr damit nicht anwählbar (hell dargstellt).

4.20.12 TPopup.Enable

Deklaration

     procedure Enable(nr: integer); virtual;

Beschreibung

Ruft SetState(nr,bf_Enabled) auf und macht den Eintrag nr damit wieder anwählbar.

4.20.13 TPopup.Execute

Deklaration

     function Execute: integer; virtual;

Beschreibung

Execute übernimmt die eigentliche Bearbeitung des Popup-Menüs (Zeichnen, Abarbeiten, Auswerten). Als Rückgabe erhält man id_No, wenn die Bearbeitung abgebrochen wurde, oder einen Wert zwischen 0 und pRows-1 (inklusive), der die Nummer des angewählten Eintrags angibt.

Die Anwahl der Einträge kann mit der linken Maustaste, <Return>, <Enter> oder <Space> erfolgen. Das Menü kann mit der rechten Maustaste, <Undo> oder <Esc> abgebrochen werden. Zur Steuerung innerhalb des Menüs können (neben der Maus) die Tasten <Cursor hoch,runter> und [<Shift>+]<Home> benutzt werden.

Sind in dem Menü alle Einträge disabled, wird es zwar angezeigt, als Rückgabe erhält man aber immer id_No.

4.20.14 TPopup.GetCheck

Deklaration

     function GetCheck(nr: integer): integer; virtual;

Beschreibung

Liefert bf_Checked oder bf_Unchecked, je nachdem ob der Menü-Eintrag nr markiert ist oder nicht. Ist nr kleiner Null oder größer gleich pRows, wird id_No zurückgegeben.

4.20.15 TPopup.GetState

Deklaration

     function GetState(nr: integer): integer; virtual;

Beschreibung

Liefert bf_Enabled oder bf_Disabled, je nachdem ob der Menü-Eintrag nr anwählbar ist oder nicht. Ist nr kleiner Null oder größer gleich pRows, wird id_No zurückgegeben.

4.20.16 TPopup.GetText

Deklaration

     function GetText(nr: integer): string; virtual;

Beschreibung

Gibt den Text des Menü-Eintrags nr zurück. Ist nr kleiner Null oder größer gleich pRows, wird ein Leerstring zurückgegeben.

4.20.17 TPopup.SetCheck

Deklaration

     procedure SetCheck(nr,CheckFlag: integer); virtual;

Beschreibung

Wenn nr im Intervall [0,pRows) liegt, wird der entsprechende Menü-Eintrag markiert (CheckFlag=bf_Checked) oder die Markierung zurückgesetzt (CheckFlag=bf_Unchecked).

4.20.18 TPopup.SetState

Deklaration

     procedure SetState(nr,StateFlag: integer); virtual;

Beschreibung

Wenn nr im Intervall [0,pRows) liegt, wird der entsprechende Menü-Eintrag anwählbar gemacht (StateFlag=bf_Enabled) oder nicht (StateFlag=bf_Disabled).

4.20.19 TPopup.SetText

Deklaration

     procedure SetText(nr: integer; ATextString: string);
                                                virtual;

Beschreibung

Wenn nr im Intervall [0,pRows) liegt, wird dem entsprechenden Menü-Eintrag der Text ATextString zugewiesen.

4.20.20 TPopup.Toggle

Deklaration

     procedure Toggle(nr: integer); virtual;

Beschreibung

Wenn der Eintrag nr (0..pRows-1) nicht markiert ist, wird er markiert, ansonsten wird die Markierung zurückgesetzt.

4.20.21 TPopup.Uncheck

Deklaration

     procedure Uncheck(nr: integer); virtual;

Beschreibung

Ruft SetCheck(nr,bf_Unchecked) auf und nimmt damit die Markierung des Eintrags zurück.

4.20.22 TPopup.SetPopTree

Deklaration

     procedure SetPopTree(tree: PTree); virtual;

Beschreibung

Setzt den in tree übergebenen Objektbaum als Baum für das Popup-Menü. Außerdem werden einige interne Variablen ermittelt.

Wird von TPopup.Init aufgerufen, wenn als Tree-Index ein Wert ungleich id_No übergeben wurde. Normalerweise ruft man diese Methode nicht selbst auf.

4.20.23 TPopup.ExitPop

Deklaration

     function ExitPop(mX,mY: integer): integer; virtual;

Beschreibung

Wird von TPopup.Execute aufgerufen, solange sich der Mauscursor außerhalb des Popup-Menüs befindet. In mX und mY erhält man die aktuellen Mauskoordinaten. Gibt man einen Wert ungleich id_No zurück, wird das Popup-Menü mit dem von ExitPop gelieferten Wert abgebrochen.

4.20.24 TPopup.KeyExit

Deklaration

     function KeyExit(Stat,Key: integer): integer;
                                            virtual;

Beschreibung

Wird von TPopup.Execute aufgerufen, wenn eine Taste gedrückt wird, die nicht zur Steuerung des Popup-Menüs benutzt wird. Hier können solche Tasten nun ausgewertet werden.

Gibt man einen Wert ungleich id_No zurück, wird das Popup-Menü mit dem von KeyExit gelieferten Wert abgebrochen.

4.20.25 TPopup.SetSelection

Deklaration

     procedure SetSelection(nr: integer); virtual;

Beschreibung

Setzt den Mauscursor auf den Popup-Menü-Eintrag mit der Nummer nr (0..pMax-1).

4.20.26 TPopup.GetSelection

Deklaration

     function GetSelection: integer; virtual;

Beschreibung

Wenn ein Eintrag des Popup-Menüs markiert ist, erhält man von dieser Routine dessen Nummer (0..pMax-1).

Ansonsten wird id_No zurückgegeben.

4.21 TPXPictureValidator

Mit diesem Objekt können Eingabefelder mit Datenbank-Masken, die kompatibel zu Paradox (Borland) sind, auf Gültigkeit überprüft werden. Die Möglichkeiten sind sehr komplex und gehen weit über die vom GEM bereitgestellten Masken hinaus.

Pointer

     PPXPictureValidator = ^TPXPictureValidator;

Felder

Methoden

Vorfahre

Nachfahren

-

4.21.1 TPXPictureValidator.Pic

Deklaration

     Pic: PString;

Beschreibung

Enthält die Paradox-Maske zur Überprüfung der Eingabe. Wird von TPXPictureValidator.Init gesetzt und von Picture aus gewertet.

Die Masken setzen sich aus folgenden Elementen zusammen:

#Akzeptiert nur eine Ziffer
?Akzeptiert einen beliebigen Buchstaben
&Akzeptiert Buchstaben und wandelt sie
in Großbuchstaben um
@Akzeptiert jedes Zeichen
!Akzeptiert jedes Zeichen und wandelt
Klein- in Großbuchstaben um
;Das folgende Zeichen wird buchstäblich
übernommen
*Wiederholungszähler
[]Der Maskenteil ist optional
{}markiert eine Gruppe, mit
,werden die Alternativen getrennt

Alle anderen Zeichen werden buchstäblich übernommen. Bei Gruppierungen mit Alternativen kann es vorkommen, daß spätere Alternativen nicht erkannt werden, weil die jeweilige Eingabe schon als Anfangsteil einer früheren Maske aufgetaucht ist. In diesem fall muß man versuchen, die Gruppe anders zu sortieren.

Beispiele

DM*#;,##;@Stückpreis, z.B. DM345,67@
???;;;#z.B. ABC;#
*5#fünf Ziffern (#####)
*#beliebig viele (auch Null) Ziffern
&*?Wort mit großem Anfangsbuchstaben
*3{##:}= ##:##:##:
*3{5}#= 555#
*35#35 Wiederholungen von #
{20,75,100}WWattzahlen von Glühbirnen
*{&[*?][@][ ]}bel. Anzahl Wörter mit großem
Anfangsbuchstaben
ROT,BLAUeines der beiden Worte
###,##zwei- oder dreistellige Zahl;
##,### hätte nicht den ge-
wünschten Effekt!

4.21.2 TPXPictureValidator.Init

Deklaration

     constructor Init(APic: string; AutoFill: boolean);

Beschreibung

Ruft TValidator.Init auf und setzt Pic auf APic. Dann wird Options auf voOnAppend und, wenn in AutoFill true übergeben wurde, zusätzlich auf voFill gesetzt. Danach wird die in APic übergebene Maske auf Gültigkeit getestet. Wenn ein Fehler auftritt, wird TValidator.Status auf vsSyntax gesetzt.

Wichtig: AutoFill hat z.Z. noch keine Wirkung!

4.21.3 TPXPictureValidator.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Pic wird freigegeben, danach wird der Destruktor des Vorfahren aufgerufen.

4.21.4 TPXPictureValidator.Error

Deklaration

     procedure Error; virtual;

Beschreibung

Zeigt die Fehlermeldung an, daß die Eingabe nicht zur Maske in Pic paßt.

4.21.5 TPXPictureValidator.IsValid

Deklaration

     function IsValid(s: string): boolean; virtual;

Beschreibung

Gibt true zurück, wenn die Eingabe korrekt oder leer ist (letzteres nur dann, wenn voNotEmpty nicht gesetzt ist).

4.21.6 TPXPictureValidator.IsValidInput

Deklaration

     function IsValidInput(var s: string;
             SuppressFill: boolean): boolean; virtual;

Beschreibung

Liefert true, wenn Pic keine Maske zugewiesen ist oder wenn Picture keinen Fehler in der Eingabe feststellen kann.

4.21.7 TPXPictureValidator.Picture

Deklaration

     function Picture(var Input: string;
                 AutoFill: boolean): TPicResult; virtual;

Beschreibung

Prüft den in Input übergebenen String auf Übereinstimmung mit der Maske in Pic. Dabei werden notfalls Korrekturen (z.B. Groß-/Kleinwandlung) vorgenommen. Ist AutoFill true, wird die Eingabe mit evtl. fehlenden Zeichen aufgefüllt, sofern diese eindeutig bestimmt sind. Wichtig: Diese Option ist z.Z. noch ohne Wirkung!

TPicResult ist wie folgt deklariert:

     PPicResult = ^TPicResult;
     TPicResult = (prComplete, prIncomplete, prEmpty,
                   prError, prSyntax, prAmbiguous,
                   prIncompNoFill);

Als Rückgabe erhält man einen der folgenden Werte (nicht beschriebene Werte werden nur intern verwendet):

prCompleteDie Eingabe ist korrekt
prIncompleteDie Eingabe ist soweit korrekt,
erfüllt die Maske aber nicht voll-
ständig
prEmptyDie Eingabe ist leer
prErrorDie Eingabe paßt nicht zur Maske
prSyntaxDie Maske ist falsch (meistens
falsche Klammerung)
prAmbiguousTritt auf, wenn die Eingabe die
Maske erfüllt, aber am Ende der
Eingabe noch Zeichen übrig bleiben

4.22 TRadioButton

RadioButtons werden in RCS-Hierarchiestufen zusammengefaßt, d.h. alle Buttons innerhalb eines Rahmens o.ä. gehören zusammen. Von diesen Buttons kann dann pro Hierarchiestufe nur einer aktiv sein. Es empfiehlt sich, den zugehörigen Rahmen mit einem TGroupBox-Objekt zu verknüpfen.

Pointer

     PRadioButton = ^TRadioButton;

Methoden

Vorfahre

Nachfahren

-

4.22.1 TRadioButton.Init

Deklaration

     constructor Init(AParent: PDialog; AnIndx: integer;
                          UserDef: boolean; Hlp: string);

Beschreibung

Ruft den Vorfahren TCheckBox.Init auf und setzt TControl.Style auf cs_RadioButton.

4.22.2 TRadioButton.Install

Deklaration

     function Install: boolean;

Beschreibung

Wenn das Dialogelement vom Typ G_BUTTON ist, wird UsrDef auf true gesetzt und der RadioButton im 3D-Look gezeichnet.

Wenn die Funktion false zurückliefert, wird die Installation von TRadioButton.Init abgebrochen. Standardmäßig wird allerdings immer true zurückgegeben.

4.22.3 TRadioButton.SetState

Deklaration

     procedure SetState(StateFlag: integer); virtual;

Beschreibung

Wenn in StateFlag bf_Disabled übergeben wird, wird zunächst TCheckBox.Uncheck aufgerufen. Danach wird immer der Vorfahre TControl.SetState aufgerufen.

4.23 TRangeValidator

TRangeValidator überprüft, ob eine vom Anwender eingegebene Zahl innerhalb eines festgelegten ganzzahligen Bereichs liegt.

Pointer

     PRangeValidator = ^TRangeValidator;

Felder

Methoden

Vorfahre

Nachfahren

-

4.23.1 TRangeValidator.Min

Deklaration

     Min: longint;

Beschreibung

Bestimmt den kleinstmöglichen ganzzahligen Wert für die Eingabe.

4.23.2 TRangeValidator.Max

Deklaration

     Max: longint;

Beschreibung

Bestimmt den größtmöglichen ganzzahligen Wert für die Eingabe.

4.23.3 TRangeValidator.Init

Deklaration

     constructor Init(AMin,AMax: longint);

Beschreibung

Ruft TFilterValidator.Init(['0'..'9','+','-']) auf, d.h. in dem Eingabefeld sind nur positive oder negative Dezimalzahlen erlaubt. Wenn AMin größer gleich Null ist, wird '-' aus ValidChars wieder entfernt. Dann wird TRangeValidator.Min auf AMin und TRangeValidator.Max auf AMax gesetzt und voOnEdit aus Options gelöscht.

4.23.4 TRangeValidator.Error

Deklaration

     procedure Error; virtual;

Beschreibung

Zeigt die Fehlermeldung an, daß der eingegebene Wert nicht innerhalb des zulässigen Bereichs liegt.

4.23.5 TRangeValidator.IsValid

Deklaration

     function IsValid(s: string): boolean; virtual;

Beschreibung

Gibt true zurück, wenn s (in eine longint-Zahl umgewandelt) innerhalb des Intervalls [TRangeValidator.Min,TRangeValidator.Max] liegt und TFilterValidator.IsValid ebenfalls true liefert.

Evtl. vorhandene Leerzeichen werden vor der Umwandlung abgeschnitten.

4.23.6 TRangeValidator.IsValidInput

Deklaration

     function IsValidInput(var s: string;
               SuppressFill: boolean): boolean; virtual;

Beschreibung

Gibt true zurück, wenn s (in eine longint-Zahl umgewandelt) innerhalb des Intervalls [TRangeValidator.Min,TRangeValidator.Max] liegt und TFilterValidator.IsValidInput ebenfalls true liefert.

4.24 TScrollBar

TScrollBar ist das Dialogelementobjekt für Bildlaufleisten innerhalb von Dialogen. Das Objekt kümmert sich automatisch um die Abarbeitung und das Neuzeichnen des Sliders. Soll nach einer Änderung des Sliderwertes eine Aktion ausgeführt werden, muß die Methode TScrollBar.Work überschrieben werden.

Pointer

     PScrollBar = ^TScrollBar;

Felder

Methoden

Vorfahre

Nachfahren

-

4.24.1 TScrollBar.IsHorizontal

Deklaration

     IsHorizontal: boolean;  (nur lesen)

Beschreibung

Gibt an, ob es sich bei der Bildlaufleiste um einen vertikalen (false) oder horizontalen (true) Slider handelt. Dieser Wert wird von TScrollBar.Init automatisch aus den Abmessungen des Sliders bestimmt.

4.24.2 TScrollBar.LineMagnitude

Deklaration

     LineMagnitude: longint;

Beschreibung

Gibt an, um wieviele Einheiten der Slider verschoben wird, wenn einer der Pfeile einfach angeklickt wird. Wird von TScrollBar.Init auf 1 gesetzt.

4.24.3 TScrollBar.PageMagnitude

Deklaration

     PageMagnitude: longint;

Beschreibung

Gibt an, um wieviele Einheiten der Slider verschoben wird, wenn der graue (bzw. schraffierte) Bereich einfach angeklickt wird. PageMagnitude wird von TScrollBar.Init zunächst auf TScrollBar.Size gesetzt.

4.24.4 TScrollBar.Size

Deklaration

     Size: longint;

Beschreibung

Size gibt an, wie groß der verschiebbare Kasten im Vergleich zum gesamten Slider sein soll. Man kann sich diese Zahl als Anzahl der Einträge einer Liste vorstellen, die gleichzeitig sichtbar sind. Wenn also fünf Einträge untereinander angezeigt werden, sollte Size 5 sein; wenn aber z.B. eine Adresse dargestellt wird, ist Size normalerweise 1.

Size wird durch TScrollBar.Init gesetzt, der kleinstmögliche Wert ist 1.

4.24.5 TScrollBar.Init

Deklaration

     constructor Init(AParent: PDialog; SIndx,DIndx,
                      IIndx: integer; TheSize,
                      TheRange: longint; Hlp: string);

Beschreibung

Ruft den Vorfahren TControl.Init mit den Parametern AParent, SIndx und Hlp auf. SIndx muß der Index eines Dialogelements vom Typ G_BOX sein, das den grauen Hintergrund des Sliders darstellt. Innerhalb dieses Elements muß sich genau ein weiteres G_BOX-Element befinden, das zum Verschieben benutzt wird. Je nachdem ob SIndx eine größere Breite bzw. Höhe besitzt, wird IsHorizontal auf true bzw. false gesetzt und das Verschiebe-Element auf die maximale Höhe bzw. Breite gebracht.

DIndx und IIndx bezeichnen Elemente vom Typ G_BOXCHAR, die für die Slider-Pfeile verwendet werden. Je nach Slidertyp werden die korrekten Pfeile automatisch gesetzt (dies muß also nicht im RCS gemacht werden).

TControl.Style wird auf cs_ScrollBar und eine der sbs_XXXX-Konstanten gesetzt, TControl.ID auf id_NoExit, TScrollBar.Size auf TheSize, PageMagnitude auf Size und LineMagnitude auf 1. TheRange gibt an, wieviele Einheiten der gesamte Slider umfaßt; Minimum ist 1.

Auch TScrollBar-Objekte nehmen standardmäßig nicht am Datentransfermechanismus teil.

4.24.6 TScrollBar.TestIndex

Deklaration

     function TestIndex(AnIndx: integer): boolean;
                                            virtual;

Beschreibung

Liefert true, wenn eines der vier Slider-Elemente (Hintergrund, Verschiebe-Element, zwei Pfeile) angewählt wurde.

4.24.7 TScrollBar.Transfer

Deklaration

     function Transfer(DataPtr: pointer;
                     TransferFlag: word): word; virtual;

Beschreibung

Überträgt Daten mit Hilfe der Struktur TScrollBarTransferRec.

4.24.8 TScrollBar.Changed

Deklaration

     procedure Changed(AnIndx: integer;
                         DblClick: boolean); virtual;

Beschreibung

In dieser Methode wird der Sliderwert in Abhängigkeit vom angewählten Dialogelement verändert und der Slider evtl. neu gezeichnet.

Der neue Wert wird mit SetPosition gesetzt.

4.24.9 TScrollBar.Work

Deklaration

     procedure Work; virtual;

Beschreibung

Dies ist eine abstrakte Methode, die zunächst nichts macht. Sie wird aber bei jeder Wertänderung des Sliders aufgerufen, so daß hier z.B. die Anzeige des neuen Wertes stattfinden kann.

4.24.10 TScrollBar.SetPosition

Deklaration

     procedure SetPosition(ThumbPos: longint); virtual;

Beschreibung

Setzt die Bildlaufleiste auf die neue Position ThumbPos. Es wird darauf geachtet, daß der mit TScrollBar.SetRange eingestellte Bereich nicht unter- bzw. überschritten wird.

4.24.11 TScrollBar.GetPosition

Deklaration

     function GetPosition: longint; virtual;

Beschreibung

Gibt den aktuellen Wert des Sliders zurück.

4.24.12 TScrollBar.DeltaPos

Deklaration

     function DeltaPos(Delta: longint): longint; virtual;

Beschreibung

Ändert den Wert der Bildlaufleiste mit SetPosition um Delta Einheiten. Als Rückgabe erhält man den neuen Wert.

4.24.13 TScrollBar.SetRange

Deklaration

     procedure SetRange(LoVal,HiVal: longint); virtual;

Beschreibung

Setzt den Wertebereich der Bildlaufleiste. In LoVal wird die untere, in HiVal die obere Grenze übergeben. Die aktuelle Position wird an die neue untere Grenze angepaßt.

SetRange(-2,5) setzt z.B. die untere Grenze auf -2 und die obere auf 5, d.h. der Slider umfaßt einen Bereich von acht Einheiten.

4.24.14 TScrollBar.GetRange

Deklaration

     function GetRange(var LoVal,HiVal: longint):
                                   longint; virtual;

Beschreibung

Gibt in LoVal die untere Grenze, in HiVal die obere Grenze des Sliders zurück. Die Rückgabe der Funktion ist der gesamte Bereich, den die Bildlaufleiste umfaßt. Dieser Wert ist allerdings immer um eins erhöht, d.h. die Rückgabe entspricht (HiVal-LoVal)+2.

Wird TScrollBar.Init für TheRange z.B. 100 übergeben, gibt GetRange in diesem Fall also 101 zurück.

4.24.15 TScrollBar.GetSBoxMin

Deklaration

     function GetSBoxMin: integer; virtual;

Beschreibung

Gibt an, wie klein das Verschiebe-Element des Sliders minimal werden darf (in Pixeln). Voreingestellt ist z.Z. 8.

4.25 TScroller

TScroller-Objekte werden über das TWindow.Scroller-Feld verwaltet. Das Objekt bietet einem Fenster die automatische Bearbeitung der Bildlaufleisten (Slider), d.h. man braucht sich nicht mehr um die Abfrage und Aktualisierung der Slider (und standardmäßig auch nicht um das Neuzeichnen des Fensters) kümmern!

Normalerweise initialisieren und manipulieren Sie TScroller- Objekte von den Methoden der Fenster-Objekte aus, zu denen Sie gehören.

Pointer

     PScroller = ^TScroller;

Felder

Methoden

Vorfahre

Nachfahren

-

4.25.1 TScroller.HasHScrollBar

Deklaration

     HasHScrollBar: boolean;  (nur lesen)

Beschreibung

Wenn das zugehörige Fenster über einen horizontalen Slider verfügt, ist HasHScrollBar true.

4.25.2 TScroller.HasVScrollBar

Deklaration

     HasVScrollBar: boolean;  (nur lesen)

Beschreibung

Wenn das zugehörige Fenster über einen vertikalen Slider verfügt, ist HasVScrollBar true.

4.25.3 TScroller.Style

Deklaration

     Style: word;

Beschreibung

Gibt erweiterte Fähigkeiten des TScroller-Objektes an. Wird von TScroller.Init auf Null gesetzt, z.Z. kann nur scs_BitbltScrolling verwendet werden.

4.25.4 TScroller.TrackMode

Deklaration

     TrackMode: boolean;

Beschreibung

Ist TrackMode true, wird das Fenster bei Veränderungen der Sliderpositionen automatisch neu gezeichnet, indem TScroller-intern eine wind_update()-Schachtelung durchgeführt und WMRedraw direkt aufgerufen wird. Ansonsten wird ForceRedraw verwendet. scs_BitbltScrolling funktioniert nur, wenn TrackMode true ist.

Standardmäßig wird TrackMode mit true initialisiert.

4.25.5 TScroller.Window

Deklaration

     Window: PWindow;  (nur lesen)

Beschreibung

Window zeigt auf das Fenster, das TScroller besitzt. Wird von TScroller.Init gesetzt.

4.25.6 TScroller.XLine

Deklaration

     XLine: longint;

Beschreibung

XLine ist die Anzahl der XUnit-Einheiten, um die - als Reaktion auf ein Anklicken eines der beiden horizontalen Pfeile - der Slider verschoben werden soll. Der voreingestellte Wert ist 1.

4.25.7 TScroller.XPage

Deklaration

     XPage: longint;

Beschreibung

XPage ist die Anzahl von XUnit-Einheiten, um die der horizontale Slider verschoben wird, wenn in den grauen Bereich geklickt wird.

Wird von TScroller.Init auf die aktuelle Breite des Fensters in XUnit-Einheiten gesetzt und beim Ändern der Fenstergröße mittels SetPageSize entsprechend angepaßt.

4.25.8 TScroller.XPos

Deklaration

     XPos: longint;  (nur lesen)

Beschreibung

XPos ist die aktuelle horizontale Position, angegeben in XUnit-Einheiten.

4.25.9 TScroller.XRange

Deklaration

     XRange: longint;  (nur lesen)

Beschreibung

XRange ist die Gesamtzahl von XUnit-Einheiten, um die das Fenster horizontal gescrollt werden kann. Wird von TScroller.Init gesetzt.

4.25.10 TScroller.XUnit

Deklaration

     XUnit: integer;  (nur lesen)

Beschreibung

XUnit ist die kleinste Anzahl von Pixeln, um die das Fenster horizontal gescrollt werden kann. Soll das Fenster Text anzeigen, kann XUnit mit SetUnits auf z.B. charWidth gesetzt werden. Wird von TScroller.Init gesetzt.

4.25.11 TScroller.YLine

Deklaration

     YLine: longint;

Beschreibung

YLine ist die Anzahl der YUnit-Einheiten, um die - als Reaktion auf ein Anklicken eines der beiden vertikalen Pfeile - der Slider verschoben werden soll. Der voreingestellte Wert ist 1.

4.25.12 TScroller.YPage

Deklaration

     YPage: longint;

Beschreibung

YPage ist die Anzahl von YUnit-Einheiten, um die der vertikale Slider verschoben wird, wenn in den grauen Bereich geklickt wird.

Wird von TScroller.Init auf die aktuelle Höhe des Fensters in YUnit-Einheiten gesetzt und beim Ändern der Fenstergröße mittels SetPageSize entsprechend angepaßt.

4.25.13 TScroller.YPos

Deklaration

     YPos: longint;  (nur lesen)

Beschreibung

YPos ist die aktuelle vertikale Position, angegeben in YUnit-Einheiten.

4.25.14 TScroller.YRange

Deklaration

     YRange: longint;  (nur lesen)

Beschreibung

YRange ist die Gesamtzahl von YUnit-Einheiten, um die das Fenster vertikal gescrollt werden kann. Wird von TScroller.Init gesetzt.

4.25.15 TScroller.YUnit

Deklaration

     YUnit: integer;  (nur lesen)

Beschreibung

YUnit ist die kleinste Anzahl von Pixeln, um die das Fenster vertikal gescrollt werden kann. Soll das Fenster Text anzeigen, kann YUnit mit SetUnits auf z.B. charHeight gesetzt werden. Wird von TScroller.Init gesetzt.

4.25.16 TScroller.Init

Deklaration

     constructor Init(TheWindow: PWindow; TheXUnit,
        TheYUnit: integer; TheXRange,TheYRange: longint);

Beschreibung

Initialisiert ein neues TScroller-Objekt mit Window (=TheWindow) als dem besitzenden Fenster, wozu auch TObject.Init aufgerufen wird. Danach wird das Scroller-Feld des zugehörigen Fensters auf @self, TrackMode auf true, XLine und YLine auf 1, TScroller.XPos und TScroller.YPos auf 0, XUnit auf TheXUnit und YUnit auf TheYUnit gesetzt. HasHScrollBar und HasVScrollBar werden ermittelt. Schließlich werden noch SetPageSize und SetRange(TheXRange,TheYRange) aufgerufen, womit alle Felder initialisiert wären.

4.25.17 TScroller.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Das Scroller-Feld des zugehörigen Fensters wird auf nil gesetzt, dann wird TObject.Done aufgerufen.

4.25.18 TScroller.GetXOrg

Deklaration

     function GetXOrg: longint; virtual;

Beschreibung

Gibt den (virtuellen) X-Ursprung relativ zur linken Kante des Fenster-Arbeitsbereichs zurück. Wenn der Slider nicht ganz links ist, ist die Rückgabe also negativ.

Wenn die Ausgaben an diesen neuen Ursprung angepaßt werden, kümmert sich TScroller automatisch darum, daß immer der richtige Ausschnitt im Fenster gezeigt wird!

4.25.19 TScroller.GetYOrg

Deklaration

     function GetYOrg: longint; virtual;

Beschreibung

Gibt den (virtuellen) Y-Ursprung relativ zur oberen Kante des Fenster-Arbeitsbereichs zurück. Wenn der Slider nicht ganz oben ist, ist die Rückgabe also negativ.

Wenn die Ausgaben an diesen neuen Ursprung angepaßt werden, kümmert sich TScroller automatisch darum, daß immer der richtige Ausschnitt im Fenster gezeigt wird!

4.25.20 TScroller.HScroll

Deklaration

     procedure HScroll; virtual;

Beschreibung

Berechnet die neue Sliderposition, wenn TScroller.XPos geändert wurde. Wird intern von ScrollTo und ScrollBy verwendet und braucht nicht direkt aufgerufen werden.

4.25.21 TScroller.IsVisibleRect

Deklaration

     function IsVisibleRect(X,Y,XExt,
                       YExt: longint): boolean; virtual;

Beschreibung

Gibt true zurück, wenn ein Teil des in XUnit- bzw. YUnit-Einheiten übergebenen Rechtecks gegenwärtig im Arbeitsbereich des besitzenden Fensters sichtbar ist.

4.25.22 TScroller.ScrollBy

Deklaration

     procedure ScrollBy(dX,dY: longint); virtual;

Beschreibung

Scrollt um den durch dX und dY angegebenen Betrag und aktualisiert die Slider. Ist TrackMode true, wird der Fensterinhalt sofort neu gezeichnet, ansonsten wird nur ForceRedraw des zugehörigen Fensters aufgerufen.

4.25.23 TScroller.ScrollTo

Deklaration

     procedure ScrollTo(X,Y: longint); virtual;

Beschreibung

Scrollt zur Position (X,Y) und aktualisiert die Slider. Ist TrackMode true, wird der Fensterinhalt sofort neu gezeichnet, ansonsten wird nur die Methode ForceRedraw des zugehörigen Fensters aufgerufen.

4.25.24 TScroller.SetPageSize

Deklaration

     procedure SetPageSize; virtual;

Beschreibung

Setzt die Felder XPage und YPage entsprechend der aktuellen Breite und Höhe des Fensters, die in XUnit- bzw. YUnit-Einheiten umgerechnet werden.

4.25.25 TScroller.SetRange

Deklaration

     procedure SetRange(TheXRange,TheYRange: longint);
                                                virtual;

Beschreibung

Setzt XRange und YRange neu, wobei darauf geachtet wird, daß die Mindestgröße von 1 nicht unterschritten wird. Dann wird SetSBarRange aufgerufen.

4.25.26 TScroller.SetSBarRange

Deklaration

     procedure SetSBarRange; virtual;

Beschreibung

Überprüft die TScroller-Werte auf ihre Gültigkeit und paßt die Slider (Position und Größe) dann an diese Werte an. Wenn nötig, wird auch der Fensterinhalt neu gezeichnet.

4.25.27 TScroller.SetUnits

Deklaration

     procedure SetUnits(TheXUnit,TheYUnit: integer);
                                               virtual;

Beschreibung

Setzt XUnit und YUnit auf die übergebenen Werte, wobei auf die Mindestgröße von 1 geachtet wird. Dann wird der Fensterinhalt neu gezeichnet.

4.25.28 TScroller.VScroll

Deklaration

     procedure VScroll; virtual;

Beschreibung

Berechnet die neue Sliderposition, wenn TScroller.YPos geändert wurde. Wird intern von ScrollTo und ScrollBy verwendet und braucht nicht direkt aufgerufen werden.

4.26 TSortedCollection

TSortedCollection ist ein Nachfahre von TCollection, mit dem sortierte Kollektionen verwaltet werden können. Die Art der Sortierung wird durch die Methode Compare bestimmt, die zu diesem Zweck überschrieben werden muß. TSortedCollection kann Kollektionen mit und ohne doppelte Schlüssel verwalten, was durch Duplicates angegeben wird.

Pointer

     PSortedCollection = ^TSortedCollection;

Felder

Methoden

Vorfahre

Nachfahre

4.26.1 TSortedCollection.Duplicates

Deklaration

     Duplicates: boolean;

Beschreibung

Duplicates gibt an, ob Elemente mit gleichem Schlüssel innerhalb der Kollektion erlaubt sind. Standardmäßig wird das Feld von TSortedCollection.Init auf false gesetzt, d.h. es darf kein Schlüssel mehrfach vorkommen.

4.26.2 TSortedCollection.Init

Deklaration

     constructor Init(ALimit,ADelta: longint);

Beschreibung

Ruft den Vorfahren TCollection.Init auf und setzt Duplicates auf false, d.h. es sind keine doppelten Schlüssel erlaubt.

4.26.3 TSortedCollection.Compare

Deklaration

     function Compare(Key1,Key2: pointer): integer;
                                             virtual;

Beschreibung

Compare ist eine abstrakte Methode, die überschrieben werden muß. Dabei werden mit KeyOf aus Key1 und Key2 zwei Schlüsselwerte ermittelt, die dann verglichen werden. Die Rückgabe ist wie folgt definiert:

-1Key1<Key2
0Key1=Key2
1Key1>Key2

Wird Compare nicht überschrieben, wird die Prozedur Abstract aufgerufen, die einen Laufzeitfehler erzeugt.

4.26.4 TSortedCollection.IndexOf

Deklaration

     function IndexOf(Item: pointer): longint; virtual;

Beschreibung

Ermittelt mit Search die Nummer des Elements Item. Ist das gesuchte Element nicht vorhanden, gibt IndexOf -1 zurück.

4.26.5 TSortedCollection.Insert

Deklaration

     procedure Insert(Item: pointer); virtual;

Beschreibung

Wenn das neue Element in der Kollektion noch nicht vorhanden ist, wird es an der richtigen Stelle einsortiert. Ist das Element schon vorhanden und Duplicates true, wird das Element vor dem bereits existierenden Element eingefügt. Ist das Element schon vorhanden, Duplicates aber false, wird das alte Element durch das neue ersetzt(!). Das alte Element wird in diesem Fall mit FreeItem freigegeben.

4.26.6 TSortedCollection.KeyOf

Deklaration

     function KeyOf(Item: pointer): pointer; virtual;

Beschreibung

Gibt für das Element Item einen Zeiger auf den Schlüssel des Elements zurück. Standardmäßig ist dies Item selbst. Sollen andere Daten verwaltet werden (z.B. Records), muß KeyOf überschrieben werden, damit ein anderer Zeiger (in diesem Fall z.B. auf ein Feld des Records) zurückgegeben werden kann.

Beispiel

     type PName = ^TName;
          TName = record
                    Nachname, Vorname: string
                  end;
     { ... }

     function MySColl.KeyOf(Item: pointer): pointer;

       begin
         KeyOf:=@PName(Item)^.Nachname
       end;

4.26.7 TSortedCollection.Search

Deklaration

     function Search(Key: pointer; var Index: longint):
                                        boolean; virtual;

Beschreibung

Sucht das Element mit dem Schlüssel Key in der Kollektion. Konnte dies gefunden werden, liefert Search true zurück, und Index enthält die Nummer des gefundenen Elements. Ansonsten wird false zurückgegeben und Index auf die Position gesetzt, bei der das angegebene Element eingefügt würde.

4.27 TStatic

Mit TStatic können beliebige Textelemente recht einfach verwaltet werden. Einfache String-Elemente können außerdem unterstrichen werden.

Pointer

     PStatic = ^TStatic;

Felder

Methoden

Vorfahre

Nachfahre

4.27.1 TStatic.TextLen

Deklaration

     TextLen: integer;  (nur lesen)

Beschreibung

Gibt die maximal zulässige Länge des Textes+1 (für das Nullbyte am Ende) an. Wird von TStatic.Init gesetzt.

4.27.2 TStatic.Init

Deklaration

     constructor Init(AParent: PDialog; AnIndx,
                      ATextLen: integer;
                      UserDef: boolean; Hlp: string);

Beschreibung

Ruft den Vorfahren TControl.Init auf und setzt TextLen auf ATextLen. Wird in ATextLen -1 übergeben und ist das Dialogelement ein G_[F][BOX]TEXT-Objekt, wird die Länge automatisch berechnet.

Ist UserDef true und AnIndx der Index eines G_BUTTON-, G_STRING- oder G_TITLE-Objekts, wird UsrDef auf true gesetzt und der Text später unterstrichen ausgegeben. Ansonsten muß AnIndx zu einem G_TEXT-, G_BOXTEXT-, G_FTEXT- oder G_FBOXTEXT- Element gehören.

TControl.Style wird auf cs_Static und sts_Fill gesetzt.

4.27.3 TStatic.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Deinstalliert das Dialogelementobjekt und ruft den Vorfahren TControl.Done auf.

4.27.4 TStatic.Clear

Deklaration

     procedure Clear; virtual;

Beschreibung

Löscht den Text des Dialogelementobjekts und zeichnet das Objekt neu. sts_Fill wird beachtet.

4.27.5 TStatic.GetText

Deklaration

     function GetText: string; virtual;

Beschreibung

Gibt den Text des Dialogelementobjekts zurück. Wichtig: Leerzeichen, die evtl. wegen sts_Fill angehängt wurden, werden nicht abgeschnitten!

4.27.6 TStatic.GetTextLen

Deklaration

     function GetTextLen: integer; virtual;

Beschreibung

Gibt length(GetText) zurück.

4.27.7 TStatic.SetText

Deklaration

     procedure SetText(ATextString: string); virtual;

Beschreibung

Setzt den Text eines Dialogelementobjekts neu und zeichnet dieses. Ist das zugehörige Textobjekt ein formatierter Text und das erste Zeichen in AText-String gleich '@', wird der Text gelöscht. sts_Fill wird beachtet.

4.27.8 TStatic.Transfer

Deklaration

     function Transfer(DataPtr: pointer;
                     TransferFlag: word): word; virtual;

Beschreibung

Überträgt die Daten des Objekts (d.h. den Text) mittels TStatic.SetText und TStatic.GetText. Wichtig: Die Rückgabe ist immer gerade; bei ungeraden Textlängen wird 1 addiert. Im TransferBuffer werden die Daten in einem string[x] abgelegt, wobei x ungerade sein muß (damit die Stringlänge incl. Nullbyte wieder gerade ist). D.h. x entspricht der Textlänge, wenn diese ungerade ist; ansonsten muß x auf Textlänge+1 gesetzt werden.

4.28 TStrCollection

TStrCollection ist ein Nachfahre von TStringCollection und verwaltet sortierte Null-terminierte PChar-Zeichenketten.

Pointer

     PStrCollection = ^TStrCollection;

Methoden

Vorfahre

Nachfahren

-

4.28.1 TStrCollection.Compare

Deklaration

     function Compare(Key1,Key2: pointer): integer;
                                             virtual;

Beschreibung

Gibt Sgn(StrComp(Key1,Key2)) zurück.

4.28.2 TStrCollection.FreeItem

Deklaration

     procedure FreeItem(Item: pointer); virtual;

Beschreibung

Löscht das Element Item aus der Kollektion und gibt es mit ChrDispose(PChar(Item)) frei.

4.29 TStringCollection

TStringCollection ist ein Nachfahre von TSortedCollection und verwaltet sortierte Pascal-Zeichenketten (Strings).

Pointer

     PStringCollection = ^TStringCollection;

Methoden

Vorfahre

Nachfahre

4.29.1 TStringCollection.Init

Deklaration

     constructor Init(ALimit,ADelta: longint);

Beschreibung

Ruft den Vorfahren TSortedCollection.Init auf und setzt Duplicates auf true, d.h. gleiche Zeichenketten können mehrfach gespeichert werden.

4.29.2 TStringCollection.Compare

Deklaration

     function Compare(Key1,Key2: pointer): integer;
                                             virtual;

Beschreibung

Vergleicht PString(Key1)^ und PString(Key2)^. Die Rückgabe ist bei TSortedCollection.Compare definiert.

4.29.3 TStringCollection.FreeItem

Deklaration

     procedure FreeItem(Item: pointer); virtual;

Beschreibung

Löscht das Element Item aus der Kollektion und gibt es mit DisposeStr(PString(Item)) frei.

4.30 TStringLookupValidator

TStringLookupValidator vergleicht die Zeichenkette eines TEdit-Objektes mit einer Liste gültiger Strings, so daß eine Eingabe auf bestimmte, aber evtl. komplett verschiedenen Zeichenketten beschränkt werden kann.

Pointer

     PStringLookupValidator = ^TStringLookupValidator;

Felder

Methoden

Vorfahre

Nachfahren

-

4.30.1 TStringLookupValidator.Strings

Deklaration

     Strings: PStringCollection;

Beschreibung

Zeigt auf eine String-Kollektion, die alle akzeptablen Zeichenketten enthält. Ist Strings nil, wird jede Eingabe zurückgewiesen.

Wird von TStringLookupValidator.Init gesetzt und kann mit NewStringList ersetzt werden.

4.30.2 TStringLookupValidator.Init

Deklaration

     constructor Init(AString: PStringCollection);

Beschreibung

Ruft den geerbten TValidator.Init-Konstruktor auf und setzt dann Strings auf AString.

4.30.3 TStringLookupValidator.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Ruft NewStringList(nil) auf und gibt damit die Kollektion, auf die Strings zeigt, frei.

4.30.4 TStringLookupValidator.Error

Deklaration

     procedure Error; virtual;

Beschreibung

Zeigt die Fehlermeldung an, daß die Eingabe nicht in der Gültigkeitsliste vorhanden ist.

4.30.5 TStringLookupValidator.Lookup

Deklaration

     function Lookup(s: string): boolean; virtual;

Beschreibung

Gibt true zurück, wenn s einem der in der Kollektion Strings gespeicherten Zeichenketten entspricht. Zur Suche wird die Kollektion-Methode Search verwendet.

Ist Strings nil, wird immer false zurückgegeben.

4.30.6 TStringLookupValidator.NewStringList

Deklaration

     procedure NewStringList(AString: PStringCollection);
                                                virtual;

Beschreibung

Gibt eine evtl. schon vorhandene Gültigkeitsliste frei und setzt dann Strings auf AString. Wird in AString nil übergeben, besitzt das Validierungsobjekt fortan keine Gültigkeitsliste mehr und nimmt somit auch keine Eingabe mehr an.

4.31 TTextWindow

TTextWindow ist ein Fensterobjekt, das Textzeilen anzeigen kann. Der Benutzer kann vollautomatisch durch den Text scrollen (auch mit den üblichen Tastaturshortcuts), eine weitergehende Bearbeitung ist aber nicht möglich.

Pointer

     PTextWindow = ^TTextWindow;

Felder

Methoden

Vorfahre

Nachfahre

4.31.1 TTextWindow.Color

Deklaration

     Color: integer;  (nur lesen)

Beschreibung

Enthält den Farbindex für die Textzeilen. Wird von TTextWindow.GetScroller auf Black gesetzt.

Wenn man einen neuen Farbindex setzt, muß man danach ein Neuzeichnen des Fensterinhalts veranlassen.

4.31.2 TTextWindow.FontID

Deklaration

     FontID: integer;  (nur lesen)

Beschreibung

Enthält die ID des aktuellen Fonts. Wird von der Methode TTextWindow.GetScroller auf den ersten Systemfont initialisiert und kann mit der Methode TTextWindow.SetFont geändert werden.

4.31.3 TTextWindow.FontSize

Deklaration

     FontSize: integer;  (nur lesen)

Beschreibung

Gibt die Größe des aktuellen Fonts an (in Punkten).

Wird von TTextWindow.GetScroller auf 10 initialisiert und kann mit TTextWindow.SetFont geändert werden.

4.31.4 TTextWindow.Lines

Deklaration

     Lines: PStrCollection;  (nur lesen)

Beschreibung

Mit dieser Kollektion werden die Textzeilen verwaltet. Zum Setzen bzw. Auswerten der Zeilen sollten nach Möglichkeit nicht die Kollektions- sondern die speziellen TTextWindow-Methoden verwendet werden.

Wird von TTextWindow.Init angelegt.

4.31.5 TTextWindow.RealTabs

Deklaration

     RealTabs: boolean;

Beschreibung

Dieses Feld wird von TTextWindow.Init auf true gesetzt, d.h. Tabulatoren (HT) werden von der Methode TTextWindow.TabXpand in die entsprechende Anzahl Leerzeichen umgewandelt.

Andernfalls werden nur die Tab-Zeichen angezeigt.

4.31.6 TTextWindow.TabSize

Deklaration

     TabSize: integer;

Beschreibung

Gibt die von TTextWindow.TabXpand benötigte Tabulatorweite an. Wird von TTextWindow.Init auf 2 gesetzt.

4.31.7 TTextWindow.Init

Deklaration

     constructor Init(AParent: PWindow; ATitle: string;
                                 InitLines,ADelta: integer);

Beschreibung

Ruft den Vorfahren TWindow.Init auf. Danach wird die Kollektion Lines mit den Werten InitLines und ADelta erzeugt. Der erste Parameter gibt also die maximal mögliche Anzahl von Zeilen an (die ständig Speicherplatz belegen), die notfalls um ADelta erhöht wird.

Hat die Initialisierung funktioniert, wird zum Schluß noch UpdateSubTitle aufgerufen und RealTabs, TabSize und ws_ex_ReadOnly werden gesetzt.

4.31.8 TTextWindow.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Gibt die Kollektion in Lines frei und ruft dann den Vorfahren TWindow.Done auf.

4.31.9 TTextWindow.SetupVDI

Deklaration

     procedure SetupVDI; virtual;

Beschreibung

Setzt die passenden Textattribute und ruft dann den Vorfahren TWindow.SetupVDI auf.

4.31.10 TTextWindow.AddLine

Deklaration

     procedure AddLine(NewLine: string); virtual;

Beschreibung

Hängt eine Zeile am Ende des Textes an.

4.31.11 TTextWindow.DeleteLine

Deklaration

     procedure DeleteLine(LineNumber: integer); virtual;

Beschreibung

Löscht die Zeile mit der Nummer LineNumber (0 bis GetNumLines-1).

4.31.12 TTextWindow.ExitPrint

Deklaration

     procedure ExitPrint; virtual;

Beschreibung

Wird von TTextWindow.Print aufgerufen, nachdem alle Textzeilen gedruckt wurden. Z.Z. wird hier ein Seitenvorschub durchgeführt und dem Drucker zum Schluß noch ein BEL gesendet.

4.31.13 TTextWindow.GetClassName

Deklaration

     function GetClassName: string; virtual;

Beschreibung

Gibt 'TextWindow' zurück.

4.31.14 TTextWindow.GetLine

Deklaration

     function GetLine(LineNumber: integer): string; virtual;

Beschreibung

Liefert die Zeile LineNumber (0 bis GetNumLines-1).

Ist LineNumber nicht gültig, wird ein Leerstring zurückgegeben.

4.31.15 TTextWindow.GetLineLength

Deklaration

     function GetLineLength (LineNumber: integer): integer;
                                                  virtual;

Beschreibung

Gibt die Länge der Zeile LineNumber zurück. Intern wird dazu TTextWindow.GetLine aufgerufen.

4.31.16 TTextWindow.GetNumLines

Deklaration

     function GetNumLines: integer; virtual;

Beschreibung

Gibt die Anzahl der vorhandenen Zeilen zurück, d.h. Lines^.Count. Dieser Methode sollte allerdings Vorrang gegeben werden.

4.31.17 TTextWindow.GetScroller

Deklaration

     function GetScroller: PScroller; virtual;

Beschreibung

Liefert ein TScroller-Objekt zurück. Außerdem wird SetFont aufgerufen und Color gesetzt. Für ein optimiertes Redraw wird scs_BitbltScrolling gesetzt.

4.31.18 TTextWindow.GetStyle

Deklaration

     function GetStyle: integer; virtual;

Beschreibung

Gibt TWindow.GetStyle zurück, löscht daraus aber INFO und fügt SLIDER hinzu.

4.31.19 TTextWindow.InitPrint

Deklaration

     procedure InitPrint; virtual;

Beschreibung

Wird von TTextWindow.Print aufgerufen, bevor die eigentlichen Textzeilen gedruckt werden. Im Moment passiert hier nichts, man könnte in dieser Methode aber z.B. den Drucker initialisieren.

4.31.20 TTextWindow.InsertLine

Deklaration

     procedure InsertLine(Index: longint;
                             NewLine: string); virtual;

Beschreibung

Fügt eine neue Zeile vor der Zeile mit der Nummer Index ein. Ist Index kleiner gleich Null, wird die Zeile am Anfang des Textes eingefügt; ist Index größer gleich GetNumLines, wird sie am Ende des Textes angehängt.

4.31.21 TTextWindow.Paint

Deklaration

     procedure Paint(var PaintInfo: TPaintStruct); virtual;

Beschreibung

Zeigt den Text im Fenster an. Im Moment wird auch beim zeilenweisen Scrollen der komplette Fensterinhalt neu gezeichnet, für die Zukunft kann man aber eine optimiertere Lösung erwarten.

4.31.22 TTextWindow.SetFont

Deklaration

     procedure SetFont(NewID,NewSize: integer); virtual;

Beschreibung

Setzt FontID und FontSize neu, wobei die übergebenen Werte evtl. korrigiert werden. Anschließend werden die Slider aktualisiert.

Wird von TTextWindow.GetScroller aufgerufen.

4.31.23 TTextWindow.SetColor

Deklaration

     procedure TTextWindow.SetColor(NewColor: integer); virtual;

Beschreibung

Setzt die Textfarbe, die in Color abgefragt werden kann.

4.31.24 TTextWindow.UpdateSubTitle

Deklaration

     procedure UpdateSubTitle; virtual;

Beschreibung

Aktualisiert die Info-Zeile (sofern vorhanden). Z.Z. wird darin nur die Anzahl der Zeilen angezeigt.

Wird von allen Methoden aufgerufen, die die Anzahl der Textzeilen verändern.

4.31.25 TTextWindow.GetWindowClass

Deklaration

     procedure GetWindowClass(var AWndClass: TWndClass); virtual;

Beschreibung

Löscht cs_QuitOnClose aus Class.Style, d.h. die Applikation wird beim Schließen des Fensters nicht beendet.

cs_ByteAlignClient wird gesetzt, damit das Scrolling beschleunigt wird.

4.31.26 TTextWindow.TabXpand

Deklaration

     function TabXpand(s: string): string; virtual;

Beschreibung

Wandelt Tabulatorzeichen in s in die entsprechende Anzahl Leerzeichen um, wenn TTextWindow.RealTabs true ist. Ansonsten wird s zurückgegeben.

4.31.27 TTextWindow.Read

Deklaration

     procedure Read(AFileName: string); virtual;

Beschreibung

Fügt die Textdatei AFileName an das Ende des Textes an, wenn die Datei existiert. Der alte Text wird also nicht gelöscht!

Anschließend wird das Fenster neu gezeichnet.

4.31.28 TTextWindow.Cut

Deklaration

     procedure Cut; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<X> drückt. Macht z.Z. noch nichts.

4.31.29 TTextWindow.Copy

Deklaration

     procedure Copy; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<C> drückt. Macht z.Z. noch nichts.

4.31.30 TTextWindow.Paste

Deklaration

     procedure Paste; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<V> drückt.

Wenn sich im Klemmbrett eine Datei SCRAP.TXT oder SCRAP.ASC befindet, wird diese an den Text im Fenster angehängt.

Wenn ws_ex_ReadOnly gesetzt ist, kann keine Paste-Operation durchgeführt werden.

4.31.31 TTextWindow.SelectAll

Deklaration

     procedure SelectAll; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<A> drückt. Macht z.Z. noch nichts.

4.31.32 TTextWindow.Clear

Deklaration

     procedure Clear; virtual;

Beschreibung

Löscht den gesamten Text des Fensters ohne Sicherheitsabfrage!

4.31.33 TTextWindow.Print

Deklaration

     procedure Print; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<P> drückt. Nach einer Sicherheitsabfrage wird der gesamte Text auf der parallelen Schnittstelle ausgedruckt.

4.31.34 TTextWindow.PrintFilter

Deklaration

     function PrintFilter(s: string): string; virtual;

Beschreibung

Wird von TTextWindow.Print für jede zu druckende Zeile aufgerufen. Hier können dann bestimmte Zeichen aus s ausgefiltert, geändert etc. werden. Standardmäßig wird der Atari-Zeichensatz auf den IBM- (bzw. Epson-) Druckerzeichensatz abgebildet.

4.32 TToolbar

TToolbar-Objekte werden mit Dialogelementen von Fenster-Toolbars verknüpft, die dem jeweiligen Fenster mit TWindow.LoadToolbar zugewiesen wurden. Sie sind in ihrer Funktionsweise den TKeyMenu-Objekten recht ähnlich.

Pointer

     PToolbar = ^TToolbar;

Felder

Methoden

Vorfahre

Nachfahren

-

4.32.1 TToolbar.ADialog

Deklaration

     ADialog: PDialog;

Beschreibung

Dies ist ein universeller Dialog-Pointer, der in TToolbar.Init zunächst auf nil gesetzt wird. So ist jedes TToolbar-Objekt bereits auf die Verwaltung eines Dialogs vorbereitet (was in der Praxis auch meistens genutzt wird).

In der Work-Methode kann der Dialog dann initialisiert bzw. abgearbeitet werden (siehe Beispielprogramme).

4.32.2 TToolbar.VGHnd

Deklaration

     VGHnd: boolean;

Beschreibung

Gibt an, ob TToolbar.VPipe^[3] unmittelbar vor dem Versenden auf das GEM-Handle des übergeordneten Fensters gesetzt werden soll (da sich diese Kennung ja ändern kann).

Wird von TToolbar.Init gesetzt.

4.32.3 TToolbar.VKey

Deklaration

     VKey: integer;

Beschreibung

Gibt zusammen mit TToolbar.VStat die Taste an, auf die TToolbar.TestKey positiv reagieren soll. Wird von TToolbar.Init gesetzt.

4.32.4 TToolbar.VPipe

Deklaration

     VPipe: PPipearray;  (nur lesen)

Beschreibung

Enthält einen Pointer auf eine komplette GEM-Nachricht, die von TToolbar.TestKey bzw. TToolbar.TestMessage bei positiver Anwahl verschickt wird.

Kann mit TToolbar.Init gesetzt werden.

4.32.5 TToolbar.VStat

Deklaration

     VStat: integer;

Beschreibung

Gibt zusammen mit TToolbar.VKey die Taste an, auf die TToolbar.TestKey positiv reagieren soll. Wird von TToolbar.Init gesetzt.

Wichtig: Wenn egal ist, ob die linke oder die rechte <Shift>-Taste gedrückt ist, sollte hier K_SHIFT eingetragen sein.

4.32.6 TToolbar.ObjAddr

Deklaration

     ObjAddr: PObj;  (nur lesen)

Beschreibung

TToolbar.Init setzt hier die zum Dialogelement TToolbar.ObjIndx gehörige Adresse ein.

4.32.7 TToolbar.ObjIndx

Deklaration

     ObjIndx: integer;  (nur lesen)

Beschreibung

Enthält die Nummer des Dialogelementobjekts, die an TToolbar.Init übergeben wird. Aus diesem Index kann TToolbar.ObjAddr berechnet werden.

4.32.8 TToolbar.ObjTree

Deklaration

     ObjTree: integer;  (nur lesen)

Beschreibung

Enthält den Index des Objektbaums der Toolbar, zu der das TToolbar-Objekt gehört. Wird für TToolbar.Paint und TToolbar.TestMessage benötigt und von TToolbar.Init gesetzt.

4.32.9 TToolbar.Init

Deklaration

     constructor TToolbar.Init(AParent: PWindow; ATree,
                            AnIndx,Stat,Key: integer; Msg: pointer;
                             GetHnd,Switch: boolean; Hlp: string);

Beschreibung

Ruft den Vorfahren TEvent.Init auf. Dann wird TToolbar.VStat auf Stat, TToolbar.VKey auf Key, TToolbar.VGHnd auf GetHnd und TToolbar.ADialog auf nil gesetzt sowie TToolbar.VPipe angelegt, wenn Msg<>nil ist.

ATree und AnIndx geben den Objektbaum und den Objektindex des Toolbar-Elements an, mit dem das TToolbar-Objekt verknüpft werden soll. Der Objektbaum muß deshalb angegeben werden, da eine Toolbar ja zur Laufzeit gewechselt werden kann, es aber recht umständlich wäre, dann auch jedesmal alle TToolbar-Objekte auszutauschen.

Switch legt fest, ob das Toolbar-Element ein Pushbutton (false) ist, der also eine Aktion auslöst, oder ob das Element einen Zustand darstellt (true).

Hlp enthält den Hilfstext für die BubbleHelp.

4.32.10 TToolbar.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Gibt eine evtl. in TToolbar.VPipe vorhandene GEM-Message frei und ruft den Vorfahren TEvent.Done auf.

4.32.11 TToolbar.TestMessage

Deklaration

     function TestMessage(Pipe: Pipearray): boolean; virtual;

Beschreibung

Wird von TWindow.WMToolbar aufgerufen, wenn ein Toolbar-Element angewählt wurde. Die Methode überprüft, ob es sich dabei um das eigene Objekt handelt, und gibt dann true zurück, ansonsten false.

Work wird in dieser Methode nicht aufgerufen, dies wird von WMToolbar erledigt!

Die übergebene Message hat folgendes Format:

     [0]: GO_PRIVATE ($1235)
     [1]: apID
     [2]: 0
     [3]: GOP_TOOLBAR (1)
     [4]: Objektbaum-Index der aktiven Toolbar
     [5]: Index des angewählten Elements
     [6]: Status der Umschalttasten
     [7]: Anzahl der Mausklicks

4.32.12 TToolbar.Check

Deklaration

     procedure Check; virtual;

Beschreibung

Ruft TToolbar.SetCheck(bf_Checked) auf und markiert damit das mit TToolbar.ObjIndx und TToolbar.ObjAddr angegebene Toolbar-Element.

4.32.13 TToolbar.Disable

Deklaration

     procedure Disable; virtual;

Beschreibung

Ruft TToolbar.SetState(bf_Disabled) auf und macht damit das zugehörige Toolbar-Element nicht anwählbar.

4.32.14 TToolbar.Enable

Deklaration

     procedure Enable; virtual;

Beschreibung

Ruft TToolbar.SetState(bf_Enabled) auf und macht damit das zugehörige Toolbar-Element wieder anwählbar.

4.32.15 TToolbar.GetCheck

Deklaration

     function GetCheck: integer; virtual;

Beschreibung

Gibt bf_Checked bzw. bf_Unchecked zurück, je nachdem ob das zugehörige Toolbar-Element markiert ist oder nicht.

4.32.16 TToolbar.GetState

Deklaration

     function GetState: integer; virtual;

Beschreibung

Gibt bf_Enabled bzw. bf_Disabled zurück, je nachdem ob das zugehörige Toolbar-Element anwählbar ist oder nicht.

4.32.17 TToolbar.SetCheck

Deklaration

     procedure SetCheck(CheckFlag: integer); virtual;

Beschreibung

Bestimmt die Markierung des zugehörigen Toolbar-Elements, d.h. bf_Checked oder bf_Unchecked.

4.32.18 TToolbar.SetState

Deklaration

     procedure SetState(StateFlag: integer); virtual;

Beschreibung

Setzt den Zustand des zugehörigen Toolbar-Elements, d.h. bf_Enabled oder bf_Disabled.

4.32.19 TToolbar.TestKey

Deklaration

     function TestKey(Stat,Key: integer): boolean; virtual;

Beschreibung

Wenn Stat=TToolbar.VStat, Key=TToolbar.VKey und TToolbar.GetState<>bf_Disabled ist, liefert TestKey true zurück. Außerdem werden dann folgende Aktionen ausgeführt: Das zugehörige Toolbar-Element wird entsprechend markiert, Work wird aufgerufen, und wenn TToolbar.VPipe<>nil ist, wird die darin enthaltene GEM-Message verschickt. Ansonsten gibt TestKey false zurück.

Wichtig: Wenn in VStat K_SHIFT eingetragen ist, werden beide <Shift>-Tasten gleichwertig behandelt!

4.32.20 TToolbar.Toggle

Deklaration

     procedure Toggle; virtual;

Beschreibung

Wechselt beim zugehörigen Toolbar-Element mit der Methode TToolbar.SetCheck den Zustand der Markierung.

4.32.21 TToolbar.Uncheck

Deklaration

     procedure Uncheck; virtual;

Beschreibung

Ruft TToolbar.SetCheck(bf_Unchecked) auf und nimmt damit eine evtl. vorhandene Markierung des zugehörigen Toolbar-Elements zurück.

4.32.22 TToolbar.Paint

Deklaration

     procedure Paint; virtual;

Beschreibung

Zeichnet das zugehörige Toolbar-Element neu, wenn die aktive Toolbar mit ObjTree übereinstimmt. Die Rechteckliste des Fensters wird automatisch beachtet.

4.32.23 TToolbar.IsHelpAvailable

Deklaration

     function IsHelpAvailable: boolean; virtual;

Beschreibung

Gibt true zurück, wenn das mit TToolbar.GetHelp ein Hilfstext für die BubbleHelp geliefert werden kann.

4.32.24 TToolbar.GetHelp

Deklaration

     function GetHelp: string; virtual;

Beschreibung

Gibt einen Hilfstext für die BubbleHelp zurück.

4.32.25 TToolbar.SetHelp

Deklaration

     procedure SetHelp(Hlp: string); virtual;

Beschreibung

Weist dem Toolbarelement-Objekt einen neuen Hilfstext für die BubbleHelp zu.

4.32.26 TToolbar.ClearMenuIndex

Deklaration

     procedure ClearMenuIndex; virtual;

Beschreibung

Ruft SetMenuIndex(0) auf und löscht damit eine evtl. bestehende Verknüpfung zu einem Menü-Eintrag.

4.32.27 TToolbar.GetMenuIndex

Deklaration

     function GetMenuIndex: byte; virtual;

Beschreibung

Liefert den Index des Menü-Eintrags zurück, mit dem dieses Objekt verknüpft ist. Null bedeutet, daß keine Verknüpfung besteht.

Die Rückgabe entspricht dem höherwertigen Byte des Objekttyps ob_type.

4.32.28 TToolbar.SetMenuIndex

Deklaration

     procedure SetMenuIndex(Indx: byte); virtual;

Beschreibung

Verknüpft das Objekt mit dem Menü-Eintrag Indx.

Hiermit können Anwender-konfigurierbare Toolbars realisiert werden, da statt des Aufrufs dieser Methode das höherwertige Byte von ob_type auch direkt geändert werden darf.

Wenn sich die Verknüpfung auf eine Fenster-Menüleiste im selben Fenster beziehen soll, muß cs_WindowMenuToolbar gesetzt werden.

4.33 TTriState

TTriState verhält sich genauso wie eine Checkbox. Zusätzlich gibt es allerdings noch einen dritten Zustand (bf_Grayed), der z.B. für "Wert nicht verändert" benutzt werden kann.

Pointer

     PTriState = ^TTriState;

Methoden

Vorfahre

Nachfahren

-

4.33.1 TTriState.Init

Deklaration

     constructor Init(AParent: PDialog; AnIndx: integer;
                                            Hlp: string);

Beschreibung

Ruft den Vorfahren TCheckBox.Init auf und setzt TControl.Style auf cs_3State.

4.33.2 TTriState.Gray

Deklaration

     procedure Gray; virtual;

Beschreibung

Ruft SetCheck(bf_Grayed) auf und versetzt die Checkbox damit in den "neutralen" Zustand.

4.34 TValidator

TValidator definiert ein weitestgehend abstraktes Validierungsobjekt. Es ist nicht sinnvoll, dieses Objekt zu instantiieren, außer man möchte nur verhindern, daß das zugehörige Eingabefeld leer ist (s. voNotEmpty). Jedoch bietet es die Basis für weiterreichende Validierungsobjekte, da es die wichtigsten dafür notwendigen Methoden vordefiniert.

Pointer

     PValidator = ^TValidator;

Felder

Methoden

Vorfahre

Nachfahren

4.34.1 TValidator.Options

Deklaration

     Options: word;

Beschreibung

Options ist ein Bitmap-Feld, das die Optionen für verschiedene Nachkommen von TValidator kontrolliert. Standardmäßig wird Options mit 0 initialisiert.

4.34.2 TValidator.Status

Deklaration

     Status: word;

Beschreibung

Bezeichnet den Status des Validierungsobjekts. Ist Status gleich vsOK, wurde das Objekt korrekt initialisiert. Jeder andere Wert bedeutet, daß ein Fehler aufgetreten ist.

4.34.3 TValidator.Window

Deklaration

     Window: PDialog;

Beschreibung

Wird zunächst mil nil initialisiert und dann von TEdit.SetValidator mit einem Zeiger auf den Dialog besetzt, zu dem das Eingabefeld gehört.

4.34.4 TValidator.Init

Deklaration

     constructor Init;

Beschreibung

Ruft TObject.Init auf und setzt danach Options auf Null, TValidator.Status auf vsOK und TValidator.Window auf nil.

4.34.5 TValidator.Error

Deklaration

     procedure Error; virtual;

Beschreibung

Error wird von Valid aufgerufen, wenn diese Methode feststellt, daß der Anwender ungültige Werte eingegeben hat. Diese Instanz vor Error zeigt eine Fehlermeldung an, wenn voNotEmpty gesetzt ist, die Eingabe aber leer ist.

4.34.6 TValidator.IsValid

Deklaration

     function IsValid(s: string): boolean; virtual;

Beschreibung

Gibt an, ob die in s übergebene Zeichenkette eine gültige Eingabe für das zugehörige Eingabefeld darstellt.

Normalerweise gibt IsValid true zurück, nur wenn voNotEmpty gesetzt ist, wird vorher noch geprüft, ob s nicht leer ist.

4.34.7 TValidator.IsValidInput

Deklaration

     function IsValidInput(var s: string;
               SuppressFill: boolean): boolean; virtual;

Beschreibung

Ein Eingabefeld, das mit einem Validierungsobjekt verbunden ist, ruft, wenn bei letzterem voOnEdit gesetzt ist, IsValidInput auf, während es in seiner TEdit.Edit-Methode die Eingabe eines Zeichens bearbeitet. Dadurch haben Validierungsobjekte die Möglichkeit, fehlerhafte Eingaben zu ermitteln (und zu korrigieren), bevor der Anwender die Eingabe abgeschlossen hat.

TValidator.IsValidInput selbst gibt immer true zurück. Um dieses Verhalten zu ändern, d.h. eine Überprüfung zu ermöglichen, muß die Methode überschrieben werden.

s ist der aktuelle Eingabestring. SuppressFill legt fest, ob das Validierungsobjekt vor der Überprüfung evtl. fehlende Zeichen ergänzen soll (z.B. Leerzeichen, Datumsformatierung etc.).

Ist SuppressFill true, wird s unverändert geprüft, ansonsten sollten vom Objekt - sofern dies vorgesehen ist - die entsprechenden Änderungen vorgenommen werden.

Da s ein var-Parameter ist, kann ihn IsValidInput verändern (z.B. Klein- in Großbuchstaben umwandeln). Es sollten jedoch niemals ungültige Zeichen aus dem String gelöscht werden. Dadurch, daß in diesem Fall false zurückgegeben wird, erfährt das Eingabefeld von der Existenz ungültiger Zeichen und kann sich selbst um deren Eliminierung kümmern.

4.34.8 TValidator.Valid

Deklaration

     function Valid(s: string): boolean; virtual;

Beschreibung

Gibt true zurück, wenn auch IsValid(s) true zurückgibt. Andernfalls wird TValidator.Error aufgerufen und false geliefert. Wird von TEdit.IsValid aufgerufen.

4.35 TWindow

TWindow definiert das grundlegende Fensterobjekt, das sich um die komplette GEM-Fensterverwaltung kümmert. Standardmäßig wird ein leeres Fenster erzeugt, das aber bereits auf Maus- und Tastaturereignisse reagiert. Durch Überschreiben der entsprechenden Methoden können Fenster für bestimmte Aufgaben spezialisiert werden.

Pointer

     PWindow = ^TWindow;

Felder

Methoden

Vorfahre

Nachfahren

4.35.1 TWindow.Attr

Deklaration

     Attr: TWindowAttr;

Beschreibung

Diverse Attribute und fensterspezifische Werte sind in diesem Record zusammengefaßt. Wird von TWindow.Init initialisiert.

     PWindowAttr = ^TWindowAttr;
     TWindowAttr = record
       Title,                (nur lesen)
       SubTitle  : PString;  (nur lesen)
       RBox      : GRECT;
       Handle    : HWnd;     (nur lesen)
       gemHandle,            (nur lesen)
       Status,               (nur lesen)
       Style,                (nur lesen)
       sysFonts,             (nur lesen)
       addFonts,             (nur lesen)
       charWidth,
       charHeight,
       boxWidth,
       boxHeight : integer;
       ExStyle   : longint
     end;

Title enthält einen Zeiger auf den Titel-String des Fensters (wird mit dem an TWindow.Init übergebenen Titel besetzt), SubTitle einen Zeiger auf die Infozeile (wird mit einem Leerstring initialisiert). RBox wird zunächst ausgenullt, hiermit kann der Bereich für eine evtl. unterstützte Rubbox beschränkt werden (s. TWindow.WMRubbox).

Handle enthält die ObjectGEM-interne Kennung für alle Fenster und Dialoge (d.h. auch modale Dialoge erhalten eine solche). Im Gegensatz dazu bekommt gemHandle von TWindow.Create die GEM-Kennung für ein Fenster bzw. einen nicht-modalen Dialog zugewiesen (initialisiert mit -1).

Status zeigt den Zustand des Fensters an, s. dazu die ws_XXXX-Konstanten; Anfangswert ist ws_NoWindow. In Style wird der GEM-Fensterstil gespeichert, der mit TWindow.GetStyle ermittelt wird.

ExStyle schließlich beschreibt speziellere Eigenschaften des Fensters. Bei TWindow wird mit ws_ex_Modeless initialisiert, bei TDialog mit ws_ex_TryModeless+ws_ex_CenterOnce. Wenn global as_MoveTransparent oder as_MoveDials gesetzt ist, dann wird zusätzlich noch ws_ex_MoveTransparent bzw. ws_ex_MoveDial gesetzt.

4.35.2 TWindow.Parent

Deklaration

     Parent: PWindow;  (nur lesen)

Beschreibung

Zeigt auf das übergeordnete Fenster, wenn dieses existiert. Das Fensterobjekt ist dann in der ChildList des übergeordneten Fensters eingetragen. Andernfalls ist Parent nil, und TApplication ist gewissermaßen das Elternobjekt, da das Fenster dann in der MainWindow-Liste zu finden ist. Wird von TWindow.Init gesetzt.

4.35.3 TWindow.vdiHandle

Deklaration

     vdiHandle: integer;  (nur lesen)

Beschreibung

Wird von TWindow.Init mit GetVDIHandle ermittelt. Für TWindow-Objekte enthält das Feld normalerweise das Handle einer eigenen VDI-Workstation! TDialog-Objekte verwenden stattdessen eine Kopie des TApplication.vdiHandle-Feldes.

4.35.4 TWindow.Work

Deklaration

     Work: GRECT;  (nur lesen)

Beschreibung

Enthält den aktuellen Arbeitsbereich des Fensters. Kann mit TWindow.GetWork neu berechnet werden; das sollte allerdings nicht notwendig sein, wenn zur Größenmanipulation des Fensters nut ObjectGEM-Methoden verwendet werden.

Wichtig: Der Arbeitsbereich sollte nie mittels wind_get() erfragt werden, da man sonst zu evtl. Erweiterungen (Toolbars, Menüleisten etc.) inkompatibel würde!

4.35.5 TWindow.ChildList

Deklaration

     ChildList: PWindow;  (nur lesen)

Beschreibung

ChildList ist eine verkettete Liste aller untergeordneten Fensterobjekte. ChildList ist nil, wenn keine Child-Fenster existieren, sonst zeigt der Pointer auf das erste Objekt in der Liste. Untergeordnete Fenster können relativ bequem mit TWindow.FirstWndThat und TWindow.ForEachWnd durchlaufen werden.

4.35.6 TWindow.IconClass

Deklaration

     IconClass: TIconWndClass;

Beschreibung

Mit diesem Record wird die Fensterklasse des Icon-Fensters festgelegt. Da ein solches Fenster sehr viel weniger Funktionen als ein "richtiges" Fenster hat, sind hier auch weniger Informationen als in TWindow.Class gespeichert.

     PIconWndClass         = ^TIconWndClass;
     TIconWndClass         = record
       hCursor      : HCursor;
       hbrBackground: HBrush
     end;

Mit hCursor wird die Mausform festgelegt, die verwendet wird, sobald die Maus den TWindow.Work-Bereich des Icon-Fensters betritt. Standardmäßig wird ARROW eingetragen. Ist der Wert größer als $7fff, wird er als Pointer auf eine selbstdefinierte MFORM-Struktur aufgefaßt. Soll der Mauscursor nicht verändert werden, muß id_No eingetragen werden. hbrBackground gibt die Farbe an, mit der der Arbeitsbereich des Icon-Fensters vor dem Aufruf der TWindow.Paint-Methode gelöscht wird. Dabei muß der VDI-Farbindex+1 eingetragen werden, da eine Null signalisiert, daß der Hintergrund nicht gelöscht werden soll. Wird auf White+1 gesetzt. Der Record wird von TWindow.Init mit der Methode GetIconWindowClass eingelesen.

Wichtig: Alle anderen Werte werden auch bei Icon-Fenster aus dem Feld TWindow.Class genommen - abgesehen von den cs_Align-Konstanten, die von Icon-Fenstern generell nicht beachtet werden.

4.35.7 TWindow.Class

Deklaration

     Class: TWndClass;

Beschreibung

Mit diesem Record werden sog. "Fensterklassen" festgelegt, d.h. die Struktur enthält allgemeinere Attribute als TWindow.Attr, von denen erwartet werden kann, daß sie für mehrere Fenster gelten. Wird von TWindow.Init mittels GetWindowClass initialisiert.

     PWndClass = ^TWndClass;
     TWndClass = record
       Style        : word;
       hCursor      : HCursor;
       hbrBackground: HBrush;
       MenuTree,               (nur lesen)
       ToolbarTree  : PTree;   (nur lesen)
       lpszClassName: PString  (nur lesen)
     end;

Style enthält eine der cs_XXXX-Konstanten (bzw. eine Kombination davon) und wird mit cs_DblClks+cs_CreateOnAccOpen+cs_AutoOpen+cs_QuitOnClose (bei TWindow) bzw. mit cs_DblClks+cs_WorkBackground+cs_SaveBits (bei TDialog) initialisiert. Mit hCursor wird die Mausform festgelegt, die verwendet wird, sobald die Maus den TWindow.Work-Bereich des Fensters betritt. Standardmäßig wird ARROW eingetragen. Ist der Wert größer als $7fff, wird er als Pointer auf eine selbstdefinierte MFORM- Struktur aufgefaßt. Soll der Mauscursor nicht verändert werden, muß id_No eingetragen werden. hbrBackground gibt die Farbe an, mit der der Arbeitsbereich des Fensters vor dem Aufruf der TWindow.Paint-Methode gelöscht wird. Dabei muß der VDI-Farbindex+1 eingetragen werden, da eine Null signalisiert, daß der Hintergrund nicht gelöscht werden soll. Wird auf White+1 gesetzt.

In MenuTree befindet sich der Zeiger auf den Menübaum des Fensters, wenn ein solches mit TWindow.LoadMenu installiert wurde. Ansonsten steht nil darin.

ToolbarTree wird mit nil initialisiert. Wenn dem Fenster mit LoadToolbar eine Toolbar zugewiesen wurde, steht in diesem Feld dann der Zeiger auf den Objektbaum.

lpszClassName gibt den Namen der Fensterklasse an, der mit GetClassName ermittelt wird. Dieser Name braucht bei "einfachen" Fenstern nicht geändert zu werden, wenn allerdings ein erheblicher Unterschied besteht (z.B. "Window" und "Dialog", "EditWindow", "HelpWindow", "FontDialog" etc.), sollte die Methode überschrieben werden.

4.35.8 TWindow.Clipboard

Deklaration

     Clipboard: PClipboard;  (nur lesen)

Beschreibung

Zeigt auf das mit dem Fenster-Objekt verknüpfte TClipboard-Objekt (oder ist nil, wenn ein solches nicht existiert).

Wird mit TWindow.GetClipboard gesetzt.

4.35.9 TWindow.Curr

Deklaration

     Curr: GRECT;  (nur lesen)

Beschreibung

Enthält den aktuellen Außenmaße des Fensters. Kann mit TWindow.GetCurr neu berechnet werden; das sollte allerdings nicht notwendig sein, wenn zur Größenmanipulation des Fensters nur ObjectGEM-Methoden verwendet werden.

4.35.10 TWindow.DlgTree

Deklaration

     DlgTree: PTree;  (nur lesen)

Beschreibung

Zeigt auf das im Fenster anzuzeigende Dialogformular. Wird von TWindow.Init mit nil belegt. Wenn DlgTree geändert werden soll, muß die Methode LoadDialog aufgerufen werden, die intern ihrerseits SetDlgTree aufruft.

Wenn in DlgTree ein Dialog angegeben ist, wird dieser von TWindow.Paint automatisch gezeichnet.

4.35.11 TWindow.Full

Deklaration

     Full: GRECT;  (nur lesen)

Beschreibung

Enthält die Maximalgröße dieses Fensters. Wird von TWindow.SetupSize zunächst auf die Größe des Desktop-Arbeitsbereichs initialisiert. Wenn das Fenster später evtl. auf volle Größe gebracht wird, wird intern GetFull aufgerufen, wodurch dann Full unter Beachtung von GetWorkMax neu gesetzt wird.

4.35.12 TWindow.Scroller

Deklaration

     Scroller: PScroller;

Beschreibung

Scroller enthält einen Zeiger auf ein TScroller-Objekt, wenn ein solches vorhanden ist. Soll einem Fenster ein Scroll-Objekt zugewiesen werden, sollte dies im TWindow.Init-Konstruktor geschehen.

4.35.13 TWindow.Icon

Deklaration

     Icon: PIcon;  (nur lesen)

Beschreibung

Enthält einen Zeiger auf ein TIcon-Objekt, wenn dem Fenster ein solches mit TWindow.LoadIcon zugewiesen wurde.

Wird von TWindow.Init auf nil gesetzt.

4.35.14 TWindow.workIn

Deklaration

     workIn: workin_ARRAY;

Beschreibung

Dieses Array wird von TWindow.Init zum Öffnen der VDI-Workstation benötigt. Danach kann es für eigene Zwecke verwendet werden.

4.35.15 TWindow.workOut

Deklaration

     workOut: workout_ARRAY;

Beschreibung

Dieses Array wird von TWindow.Init für die Rückgabewerte von v_opnvwk() benötigt. Danach kann es für eigene Zwecke verwendet werden, da alle wichtigen Werte anderweitig gespeichert werden.

4.35.16 TWindow.Init

Deklaration

     constructor Init(AParent: PWindow; ATitle: string);

Beschreibung

Ruft TEventObject.Init auf, setzt TWindow.Parent auf AParent und initialisiert TWindow.vdiHandle mit GetVDIHandle sowie Attr.

Wenn GetVDIHandle signalisiert, daß eine neue VDI-Workstation geöffnet werden soll, geschieht dies dann mit v_opnvwk().

ChildList, Scroller und DlgTree werden auf nil gesetzt und das Fensterobjekt in die ChildList des übergeordneten Fensters eingehängt.

Dann werden Class mittels GetWindowClass und IconClass mit GetIconWindowClass initialisiert, ATitle wird zum Fenstertitel, und die Infozeile wird gelöscht.

Wenn eine neue VDI-Workstation angelegt wurde, wird dann TWindow.SetupVDI aufgerufen.

Danach wird das Feld Scroller mit TWindow.GetScroller und TWindow.Clipboard mit TWindow.GetClipboard ermittelt.

Zum Schluß wird SetupWindow aufgerufen.

4.35.17 TWindow.Done

Deklaration

     destructor Done; virtual;

Beschreibung

Gibt alle untergeordneten Fenster frei, ruft die Methoden ShutdownWindow, TWindow.FreeIcon, FreeDialog, FreeToolbar und TWindow.FreeMenu auf, schließt das Fenster, gibt die Kennung frei (sofern dies noch nicht geschehen ist) und entfernt das Fensterobjekt aus der ChildList des übergeordneten Fensters.

Danach werden Scroller und TWindow.Clipboard freigegeben (letzteres nur, wenn ein neues Klemmbrett-Objekt installiert wurde).

Wenn TWindow.Init eine neue VDI-Workstation angefordert hat, wird diese hier mit v_clsvwk() wieder freigegeben.

Zum Schluß wird TEventObject.Done aufgerufen.

4.35.18 TWindow.GetVDIHandle

Deklaration

     function GetVDIHandle: integer; virtual;

Beschreibung

Wird von TWindow.Init aufgerufen, um TWindow.vdiHandle zu ermitteln.

Standardmäßig wird id_NewHandle geliefert, d.h. für jedes Fenster wird eine eigene VDI-Workstation geöffnet.

Wird ein Wert größer gleich Null übergeben, wird dieser als gültiges VDI-Handle interpretiert, es wird dann keine neue Workstation angefordert!

4.35.19 TWindow.SetupVDI

Deklaration

     procedure SetupVDI; virtual;

Beschreibung

Wird von TWindow.Init aufgerufen, wenn mit der Methode GetVDIHandle dem Fenster eine eigene VDI-Workstation zugewiesen wurde, damit hier die passenden Attribute eingestellt werden. Zunächst werden jedoch - wenn GDOSActive true und ws_ex_LoadFonts gesetzt ist - alle verfügbaren GEM-Fonts nachgeladen. Daraus folgt, daß - wenn das Fenster auf GEM-Zeichensätze zurückgreifen will - SetupVDI überschrieben werden muß und die geerbte Methode erst dann aufgerufen werden darf, wenn man ws_ex_LoadFonts gesetzt hat!

Danach werden folgende Werte gesetzt (Schreibweise abgekürzt): vswr_mode(MD_REPLACE), vsl_udsty($5555), vsl_type(LT_SOLID), vsf_perimeter(PER_ON), vsl_color(Black), vsl_ends(LE_SQUARED,LE_SQUARED), vsm_type(MT_DOT), vsm_height(1), vsm_color(Black), vst_rotation(0), vsf_style(4), vsf_color(Black), vst_alignment(TA_LEFT,TA_BASELINE), vsl_width(1), vst_color(Black), vsf_interior(FIS_HOLLOW), vst_effects(TF_NORMAL).

Außerdem werden das Clipping auf die Größe des gesamten Desktops, vst_font() auf den ersten verfügbaren Font (das ist normalerweise der Systemzeichensatz) und dieser Font auf die "normale" Höhe (d.h. die des "großen" Fonts auf dem Desktop) gesetzt.

4.35.20 TWindow.At

Deklaration

     function At(Index: integer): PWindow;

Beschreibung

Liefert einen Zeiger auf das Child-Fenster mit der fortlaufenden Nummer Index in der ChildList (begonnen wird bei Null).

Wenn Index negativ oder ChildList leer ist, wird nil zurückgegeben. Bei zu großen Werten wird die Liste zyklisch durchlaufen.

4.35.21 TWindow.IndexOf

Deklaration

     function IndexOf(Item: PWindow): integer;

Beschreibung

Liefert die fortlaufende Nummer des Fensterobjekts, auf das Item zeigt, wenn dieses in der ChildList vorkommt. Ansonsten wird -1 zurückgegeben.

4.35.22 TWindow.Calc

Deklaration

     procedure Calc(ctype: integer; ri: GRECT;
                               var ro: GRECT); virtual;

Beschreibung

Berechnet aus den Außenabmessungen des Fensters die Größe des Arbeitsbereichs und umgekehrt. Die Parameter entsprechen denen von wind_calc(), allerdings sollte immer nur Calc verwendet werden, um zu späteren Erweiterungen (Toolbars, Menüleisten) kompatibel zu bleiben!

4.35.23 TWindow.CanClose

Deklaration

     function CanClose: boolean; virtual;

Beschreibung

Gibt true zurück, wenn das Fenster geschlossen werden darf. Das ist standardmäßig dann der Fall, wenn alle offenen untergeordneten Fenster bei dieser Methode ebenfalls true liefern.

Durch Überschreiben kann man mit dieser Methode leicht Sicherheitsabfragen etc. in eigene Programme einbauen.

4.35.24 TWindow.ChkAlign

Deklaration

     procedure ChkAlign(var r: GRECT); virtual;

Beschreibung

Korrigiert die Position des Fensters, wenn eine der Konstanten cs_ByteAlignClient, cs_ByteAlignWindow, cs_VerAlignClient oder cs_VerAlignWindow gesetzt ist. Außerdem wird evtl. versucht, das Fenster durch Verschieben komplett im sichtbaren Bereich darzustellen.

Wird intern verwendet und braucht nicht direkt aufgerufen zu werden.

Wichtig: Bei Icon-Fenstern wird grundsätzlich kein Align durchgeführt!

4.35.25 TWindow.ChkSize

Deklaration

     procedure ChkSize(var r: GRECT); virtual;

Beschreibung

Achtet darauf, daß der Work-Bereich nicht zu groß bzw. zu klein wird. Zur Ermittlung der zulässigen Werte werden GetWorkMin und GetWorkMax verwendet. Wird intern verwendet und braucht nicht direkt aufgerufen zu werden.

4.35.26 TWindow.CloseWindow

Deklaration

     procedure CloseWindow; virtual;

Beschreibung

Schließt alle untergeordneten Fenster. Danach wird auch dieses Fenster - sofern es offen ist - geschlossen und Attr.Status auf ws_Created gesetzt, d.h. die GEM-Kennung wird nicht freigegeben (dies macht TWindow.Destroy).

4.35.27 TWindow.Create

Deklaration

     procedure Create; virtual;

Beschreibung

Wenn Attr.Status gleich ws_NoWindow ist, wird das Fenster erzeugt (d.h. eine GEM-Kennung erfragt), ansonsten werden nur evtl. vorhandene untergeordnete Fenster erzeugt.

Zunächst wird versucht, mittels wind_create() eine GEM-Kennung zu belegen. Mißlingt dies, gibt ChkError em_InvalidWindow zurück. Ansonsten wird Attr.Status auf ws_Created gesetzt, und abhängig vom Wert in TWindow.Attr.Style werden Fenstertitel und Infozeile festgelegt. Danach werden die untergeordneten Fenster erzeugt.

Bei modalen Dialogen hat Create keine Wirkung.

4.35.28 TWindow.CreateChildren

Deklaration

     procedure CreateChildren; virtual;

Beschreibung

Ruft für alle Fenster der ChildList, bei denen das Flag cs_AutoCreate gesetzt ist, Create auf.

4.35.29 TWindow.DDGetPath

Deklaration

     function DDGetPath: string; virtual;

Beschreibung

Wird von TWindow.WMDragDrop aufgerufen, wenn der Sender den Datentyp 'PATH' gewählt hat, d.h. wenn er den evtl. zum Fenster gehörigen Pfad (z.B. bei Editor-Fenstern) wissen möchte.

Im Moment wird hier ein Leerstring zurückgegeben, d.h. die Anfrage wird abgewiesen. Durch Überschreiben dieser Methode kann aber ein beliebiger Pfad zurückgegeben werden.

4.35.30 TWindow.DDGetPreferredTypes

Deklaration

     function DDGetPreferredTypes: string; virtual;

Beschreibung

Liefert die Extensions der "bevorzugten" Dateien zurück. Es dürfen maximal 8 Extensions geliefert werden, bei weniger Zeichen wird mit Nullbytes aufgefüllt.

Standardmäßig wird TApplication.DDGetPreferredTypes zurückgegeben. Eine speziellere Rückgabe könnte z.B. '.IMG.PCX.GIF.TIF' lauten.

4.35.31 TWindow.DDHeaderReply

Deklaration

     function DDHeaderReply(dType,dName,fName: string;
                         dSize: longint; OrgID,
                         mX,mY,KStat: integer): byte;
                                                virtual;

Beschreibung

Wird von TWindow.WMDragDrop aufgerufen, um dem Sender auf den vorgeschlagenen Dateityp zu antworten.

In dType erhält man die Extension des vorgeschlagenen Dateityps (z.B. '.TXT'), in fName den entsprechenden Dateinamen (ohne Pfadangabe). In dName kann noch optional ein Name für die Daten übergeben werden, der vom Empfänger z.B. zum Beschriften eines Icons benutzt werden kann. dSize gibt die Länge der zu übertragenden Datei an. OrgID bezeichnet die AES-Kennung des Senders, mX und mY die Position der Maus und KStat den Zustand der Umschalttasten beim Aufruf.

Standardmäßig wird DD_NAK zurückgegeben, folgende Werte sind z.Z. definiert:

DD_OKalles OK; die Daten werden dann mit
TWindow.DDReadData eingelesen
DD_NAKFehler, Abbruch der Kommunikation
DD_EXTder Sender soll einen anderen
Dateityp vorschlagen
DD_LENder Empfänger kann nicht so viele
Daten gleichzeitig verarbeiten
DD_TRASHDatei wurde auf den Mülleimer ge-
zogen; der Sender muß entsprechend
reagieren
DD_PRINTERDatei wurde auf das Drucker-Icon
gezogen; der Sender muß entsprechend
reagieren
DD_CLIPBOARDDatei wurde auf das Klemmbrett-Icon
gezogen; der Sender muß entsprechend
reagieren

4.35.32 TWindow.DDReadData

Deklaration

     function DDReadData(dType,dName,fName: string;
                          dSize: longint; PipeHnd,
                          OrgID,mX,mY,
                          KStat: integer): boolean;
                                              virtual;

Beschreibung

Wird von TWindow.WMDragDrop aufgerufen, wenn eine Drag&Drop-Anfrage positiv beantwortet werden konnte und nun die Daten eingelesen werden sollen.

In dType erhält man die Extension des vorgeschlagenen Dateityps (z.B. '.TXT'), in fName den entsprechenden Dateinamen (ohne Pfadangabe). In dName kann noch optional ein Name für die Daten übergeben werden, der vom Empfänger z.B. zum Beschriften eines Icons benutzt werden kann. dSize gibt die Länge der zu übertragenden Datei an. OrgID bezeichnet die AES-Kennung des Senders, mX und mY die Position der Maus und KStat den Zustand der Umschalttasten beim Aufruf. PipeHnd enthält das Dateihandle der geöffneten Pipe, auf die nun mit Fread() zugegriffen werden kann.

Wenn die Daten eingelesen werden konnten, sollte true zurückgegeben werden, damit die Methode DDFinished aufgerufen wird.

4.35.33 TWindow.DDReadArgs

Deklaration

     function DDReadArgs(dSize: longint; PipeHnd,OrgID,
                         mX,mY,KStat: integer): boolean;
                                                virtual;

Beschreibung

Wird von TWindow.WMDragDrop aufgerufen, wenn der Sender den 'ARGS'-Datentyp, also eine Kommandozeile verschickt hat. In dieser Methode kann diese nun (per Fread()) eingelesen werden. Abschließend muß noch die geerbte Methode mit dem um die Anzahl gelesener Zeichen verminderten dSize aufgerufen werden, damit die Pipe vollständig geleert wird. Wenn in der Kommandozeile mehrere Parameter übergeben werden, sind die einzelnen Parameter durch ein Leerzeichen getrennt. Wenn in einem Parameter ein Leerzeichen vorkommt, wird dieser Parameter in einfache Anführungszeichen gesetzt. Anführungszeichen innerhalb des Parameters werden dann verdoppelt (z.B. "'Eric''s file'").

Wenn die Daten eingelesen werden konnten, sollte true zurückgegeben werden, damit die Methode DDFinished aufgerufen wird.

4.35.34 TWindow.DDFinished

Deklaration

     procedure DDFinished(OrgID,mX,mY,KStat: integer);
                                                virtual;

Beschreibung

Wird von TApplication.APDragDrop aufgerufen, wenn TWindow.DDReadData oder TWindow.DDReadArgs true zurückgegeben hat. Der Aufruf erfolgt nach dem Drag&Drop-Protokoll, man hat also wieder volle Kontrolle über den Bildschirm.

In dieser Methode sollten die Eingelesenen Daten ausgewertet werden (Anzeige etc.).

4.35.35 TWindow.EnableAutoCreate

Deklaration

     procedure EnableAutoCreate;

Beschreibung

Setzt für das Fenster das Flag cs_AutoCreate. Wird von TWindow.Init aufgerufen.

4.35.36 TWindow.DisableAutoCreate

Deklaration

     procedure DisableAutoCreate;

Beschreibung

Löscht das Flag cs_AutoCreate aus Class.Style. Wird von TDialog.Init aufgerufen.

4.35.37 TWindow.Destroy

Deklaration

     procedure Destroy; virtual;

Beschreibung

Ruft zunächst die Destroy-Methode aller untergeordneten Fenster auf. Danach wird das Fenster geschlossen (sofern dies noch nicht geschehen ist) und die GEM-Kennung freigegeben. Schließlich wird Attr.Status auf ws_NoWindow und gemHandle auf -1 gesetzt.

Wenn beim Freigeben ein Fehler auftritt, gibt ChkError em_WDestroyFailure zurück.

4.35.38 TWindow.FirstWndThat

Deklaration

     function FirstWndThat
                  (Test: PIterationFunc): PWindow;

Beschreibung

FirstWndThat ruft für jedes untergeordnete Fenster die durch Test bestimmte boolesche Funktion auf, bis Test true zurückgibt. FirstWndThat gibt dann den Zeiger auf das Fensterobjekt zurück, für den Test true zurückgegeben hat, oder nil, falls Test immer false geliefert hat. Der Pointer Test sollte eine globale (Unterschied zu ObjectWindows!) Funktion sein, der ein pointer-Parameter übergeben wird und die boolean zurückgibt.

Achtung: Im Gegensatz zu ObjectWindows kann bei einer lokalen Test-Funktion nicht auf die Variablen der übergeordneten Routine zugegriffen werden!

Beispiel

     function IstOffen(p: pointer): boolean;
       { ... }

IstOffen sollte eine globale Funktion sein. Sei Fenster ein TWindow-Objekt:

     p:=Fenster.FirstWndThat(@IstOffen);

4.35.39 TWindow.ForEachWnd

Deklaration

     procedure ForEachWnd(Action: PIterationProc);

Beschreibung

ForEachWnd ruft für jedes untergeordnete Fenster die durch Action bestimmte Prozedur auf. Der Pointer Action sollte eine globale (Unterschied zu ObjectWindows!) Prozedur sein, der ein pointer-Parameter übergeben wird.

Achtung: Im Gegensatz zu ObjectWindows kann bei einer lokalen Prozedur nicht auf die Variablen der übergeordneten Routine zugegriffen werden!

Beispiel

     procedure MacheGross(p: pointer);
       { ... }

MacheGross sollte eine globale Prozedur sein. Sei Fenster ein TWindow-Objekt:

     Fenster.ForEachWnd(@MacheGross);

4.35.40 TWindow.ForceRedraw

Deklaration

     procedure ForceRedraw; virtual;

Beschreibung

Zeichnet das komplette Fenster neu. Dazu schickt das Fensterobjekt eine WM_REDRAW-Message an sich selbst. Soll das Zeichnen nicht über die GEM-Message-Queue abgewickelt werden (d.h. wenn sofort gezeichnet werden muß, der Zeitpunkt also nicht vom GEM bestimmt werden soll), muß TWindow.WMRedraw direkt aufgerufen werden.

4.35.41 TWindow.FirstWorkRect

Deklaration

     function FirstWorkRect(var Rect: GRECT): boolean;
                                                virtual;

Beschreibung

Diese Funktion liefert das erste Rechteck der Rechteckliste. Im Gegensatz zu wind_get(WF_FIRSTXYWH...) werden dabei auch evtl. vorhandene Toolbars, Menüleisten etc. berücksichtigt. Außerdem erhält man nur wirklich sichtbare Teile des Arbeitsbereichs (das Rechteck muß also nicht mehr mit dem Desktopbereich geschnitten werden).

Wenn der Arbeitsbereich des Fensters komplett verdeckt ist, ist die Rückgabe false, und Rect.W wird auf Null gesetzt.

4.35.42 TWindow.NextWorkRect

Deklaration

              function NextWorkRect(var Rect: GRECT): boolean;
                                                        virtual;

Beschreibung

Diese Funktion liefert das jeweils nächste Rechteck der Rechteckliste des Fensters. Im Gegensatz zu wind_get(WF_NEXTXYWH...) werden dabei auch evtl. vorhandene Toolbars, Menüleisten etc. berücksichtigt. Außerdem erhält man nur wirklich sichtbare Teile des Arbeitsbereichs (das Rechteck muß also nicht mehr mit dem Desktopbereich geschnitten werden).

Wenn kein weiteres Rechteck existiert, ist die Rückgabe false, und Rect.W wird auf Null gesetzt.

4.35.43 TWindow.FreeDialog

Deklaration

     procedure FreeDialog; virtual;

Beschreibung

Entfernt einen evtl. zuvor mit LoadDialog dem Fenster zugewiesenen Dialogbaum, d.h. dieser wird nun nicht mehr gezeichnet.

Wird von TWindow.Done aufgerufen.

4.35.44 TWindow.FullSize

Deklaration

     procedure FullSize; virtual;

Beschreibung

Bringt das Fenster auf volle Größe, oder - wenn es diese bereits hat - auf die ursprüngliche Größe. Wenn cs_FullRedraw gesetzt ist, wird anschließend noch TWindow.ForceRedraw aufgerufen.

4.35.45 TWindow.GetClassName

Deklaration

     function GetClassName: string; virtual;

Beschreibung

Gibt den Namen der Fensterklasse zurück. Abgeleitete Fensterobjekte, die wesentliche Veränderungen bzw. Erweiterungen gegenüber TWindow besitzen, sollten diese Methode überschreiben, um einen anderen Namen zu liefern. TWindow gibt 'Window' zurück.

4.35.46 TWindow.GetClipboard

Deklaration

     function GetClipboard: PClipboard; virtual;

Beschreibung

Liefert das TClipboard-Objekt, das mit dem Fenster-Objekt verknüpft wird.

Standardmäßig wird Application^.Clipboard zurückgegeben. Will man ein spezialisiertes Klemmbrett-Objekt installieren, muß man diese Methode überschreiben. Wichtig: Ein solches Objekt wird dann von TWindow.Done freigegeben!

4.35.47 TWindow.GetCurr

Deklaration

     procedure GetCurr; virtual;

Beschreibung

Füllt das Feld Curr mit den aktuellen Außenmaßen des Fensters aus. Wird intern verwendet und braucht nicht direkt aufgerufen zu werden, wenn zur Größenänderung des Fensters nur die ObjectGEM-Methoden verwendet werden.

4.35.48 TWindow.GetDC

Deklaration

     function GetDC: integer; virtual;

Beschreibung

Dies ist eine an Windows angelehnte "Quick-and-dirty"-Funktion, mit der sehr einfach in dem Fenster gezeichnet werden kann. Die Funktion reserviert das erste Rechteck der Rechteckliste des Fensters für die Ausgabe, was unter günstigen Umständen (die man auch schaffen kann, z.B. mit Top) der gesamte Arbeitsbereich ist. Im schlimmsten Fall sieht man allerdings gar nichts... Es findet eine Schachtelung mit wind_update() statt, die Maus wird unsichtbar gemacht und das Clipping gesetzt. Die Rückgabe entspricht TWindow.vdiHandle. Nun kann direkt (mit den VDI-Funktionen) gezeichnet werden, und am Schluß muß TWindow.ReleaseDC aufgerufen werden, um alle Blockierungen aufzuheben. Wichtig: Wird -1 zurückgegeben, ist die Funktion fehlgeschlagen; es darf weder gezeichnet noch ReleaseDC aufgerufen werden!

4.35.49 TWindow.GetFull

Deklaration

     procedure GetFull; virtual;

Beschreibung

Füllt das Feld Full mit der maximal möglichen Größe des Fensters aus, wobei GetWorkMax beachtet wird. Wird intern verwendet und braucht nicht direkt aufgerufen zu werden.

4.35.50 TWindow.GetScroller

Deklaration

     function GetScroller: PScroller; virtual;

Beschreibung

Wird von TWindow.Init aufgerufen, um das Scroller-Feld zu setzen. Wenn einem Fenster ein TScroller-Objekt zugewiesen werden soll, muß diese Methode überschrieben werden, damit das Objekt korrekt initialisiert werden kann.

Standardmäßig wird nil zurückgegeben.

4.35.51 TWindow.GetStyle

Deklaration

     function GetStyle: integer; virtual;

Beschreibung

Gibt eine Bitmap der GEM-Fensterkomponenten zurück, die für TWindow.Create benötigt wird. TWindow.GetStyle liefert NAME or INFO or CLOSER or MOVER or FULLER or SIZER. Sollen andere Fensterelemente benutzt werden, muß man diese Methode überschreiben.

Ab AES 4.10 wird zusätzlich SMALLER für die Iconification geliefert und, wenn der Backdrop-Mechanismus unterstützt wird, BACKDROP (z.Z. nur unter Mag!C).

Soll dem Fenster ein TScroller-Objekt zugeordnet werden, stehen als Rückgabewerte auch die Konstanten HSLIDER, VSLIDER und SLIDER zur Verfügung, die wie folgt definiert sind:

     type HSLIDER = LFARROW or RTARROW or HSLIDE;
          VSLIDER = UPARROW or DNARROW or VSLIDE;
          SLIDER  = HSLIDER or VSLIDER;

4.35.52 TWindow.GetIconWindowClass

Deklaration

     procedure GetIconWindowClass
                 (var AWndClass: TIconWndClass); virtual;

Beschreibung

Füllt das Feld IconClass aus, das die Icon-Fensterklasse beschreibt. Soll das Icon-Fenster andere Eigenschaften besitzen, muß diese Methode überschrieben werden. In diesem Fall sollte in der neuen Methode zuerst die ursprüngliche Methode aufgerufen werdem.

Beispiel

     procedure TW.GetIconWindowClass(var AWndClass: TIconWndClass);

       begin
         inherited GetIconWindowClass(AWndClass);
         { ... }
       end;

4.35.53 TWindow.GetWindowClass

Deklaration

     procedure GetWindowClass(var AWndClass: TWndClass);
                                                 virtual;

Beschreibung

Füllt das Feld Class aus, das die Fensterklasse beschreibt. Soll das Fenster andere grundlegende Eigenschaften besitzen, muß diese Methode überschrieben werden.

Wichtig: In diesem Fall muß in der neuen Methode zuerst die ursprüngliche Methode aufgerufen werden, da es sonst mit einiger Sicherheit einen Programmabsturz gibt...

Beispiel

     procedure TW.GetWindowClass(var AWndClass: TWndClass);

       begin
         inherited GetWindowClass(AWndClass);
         { ... }
       end;

4.35.54 TWindow.GetWork

Deklaration

     procedure GetWork; virtual;

Beschreibung

Füllt das Feld TWindow.Work mit den aktuellen Außenmaßen des Fensters aus. Wird intern verwendet und braucht nicht direkt aufgerufen zu werden, wenn zur Größenänderung des Fensters nur die ObjectGEM-Methoden verwendet werden.

4.35.55 TWindow.GetWorkMax

Deklaration

     procedure GetWorkMax(var maxX,maxY: integer);
                                             virtual;

Beschreibung

Gibt an, wie groß das Fenster maximal werden darf. Beide Werte werden mit maxint besetzt, d.h. die Größe wird nur durch den Arbeitsbereich des Desktops beschränkt.

Wird von TDialog.GetWorkMax sinnvoll eingesetzt.

4.35.56 TWindow.GetWorkMin

Deklaration

     procedure GetWorkMin(var minX,minY: integer);
                                             virtual;

Beschreibung

Gibt an, wie klein der Arbeitsbereich des Fensters minimal werden darf. Wird z.Z. mit 21 (minX) und 1 (minY) besetzt (experimentell ermittelt), da sich bei älteren GEM-Versionen sonst die Fensterelemente überschneiden können.

4.35.57 TWindow.GetTitle

Deklaration

     function GetTitle: string;

Beschreibung

GetTitle liefert die Zeichenkette aus Attr.Title, wobei allerdings Leerzeichen und ASCII #0 abgeschnitten werden.

4.35.58 TWindow.GetIconTitle

Deklaration

     function GetIconTitle: string; virtual;

Beschreibung

Wird von TWindow.WMIconify aufgerufen, wenn das Fenster ikonifiziert werden soll. Die Rückgabe dient als Fenstertitel des Icon-Fensters; standardmäßig wird TWindow.GetTitle geliefert.

Von der Rückgabe werden z.Z. allerdings nur die ersten 10 (bzw. mit ICFS nur 8) Zeichen beachtet!

4.35.59 TWindow.IconPaint

Deklaration

     procedure IconPaint(var PaintInfo: TPaintStruct);
                                                virtual;

Beschreibung

Wird von TWindow.WMRedraw aufgerufen, wenn das Icon-Fenster neu gezeichnet werden soll. Standardmäßig wird der Arbeitsbereich einfach nur weiß gefüllt. Die Verfahrensweise ist analog zu TWindow.Paint.

4.35.60 TWindow.InitPaint

Deklaration

     procedure InitPaint; virtual;

Beschreibung

Wird von TWindow.WMRedraw aufgerufen, bevor mit der TWindow.Paint-Methode gezeichnet wird. Hier können also für das Redraw nötige Initialisierungen vorgenommen werden.

4.35.61 TWindow.ExitPaint

Deklaration

     procedure ExitPaint; virtual;

Beschreibung

Wird von TWindow.WMRedraw aufgerufen, nachdem alle Rechtecke der Rechteckliste mit TWindow.Paint gezeichnet wurden. Hier können evtl. in TWindow.InitPaint vorgenommene Initialisierungen rückgängig gemacht werden.

4.35.62 TWindow.IsIconified

Deklaration

     function IsIconified: boolean;

Beschreibung

Gibt true zurück, wenn das Fenster ikonifiziert ist, d.h. wenn das Fenster zum "Icon" verkleinert wurde (erst ab AES 4.10 bzw. mit einem ICFS-Server möglich).

4.35.63 TWindow.WMIconify

Deklaration

     procedure WMIconify(iX,iY,iW,iH: integer); virtual;

Beschreibung

Wird von TApplication.MUMesag aufgerufen, wenn das Fenster ikonifiziert werden soll.

In iX,iY,iW,iH steht die Größe des Icon-Fensters, mit TWindow.GetIconTitle wird der neue Fenstertitel ermittelt.

4.35.64 TWindow.WMUniconify

Deklaration

     procedure WMUniconify(oX,oY,oW,oH: integer);
                                             virtual;

Beschreibung

Bringt ein ikonifiziertes Fenster auf seine ursprüngliche Größe, die in oX,oY,oW,oH übergeben wird. Außerdem wird wieder der alte Fenstertitel gesetzt.

Wird von TApplication.MUMesag aufgerufen.

4.35.65 TWindow.IsDialog

Deklaration

     function IsDialog: boolean; virtual;

Beschreibung

Gibt false zurück, d.h. das Fenster ist kein Dialogfenster. TDialog überschreibt diese Methode.

Wird intern benötigt, da TWindow- und TDialog-Objekte in den gleichen Listen (MainWindow bzw. ChildList) verwaltet werden.

4.35.66 TWindow.IsModeless

Deklaration

     function IsModeless: boolean;

Beschreibung

Gibt true zurück, wenn das Fenster eine GEM-Kennung besitzt, wenn es also bereits mit TWindow.Create erzeugt wurde.

Zur Unterscheidung von modalen und nicht-modalen Dialogen sollte allerdings TDialog.IsModal verwendet werden.

4.35.67 TWindow.IsTop

Deklaration

     function IsTop: boolean; virtual;

Beschreibung

Gibt true zurück, wenn das Fenster das oberste ist und wenn ansonsten auch keine modaler Dialog aktiv ist.

4.35.68 TWindow.LoadDialog

Deklaration

     procedure LoadDialog(Indx: integer); virtual;

Beschreibung

Setzt DlgTree mittels SetDlgTree auf den zum Index Indx gehörigen Objektbaum, wenn dieser existiert und dem Fenster bisher noch kein Dialog zugewiesen wurde.

Andernfalls gibt ChkError em_InvalidDialog zurück.

4.35.69 TWindow.LoadIcon

Deklaration

     procedure LoadIcon(Icn: PIcon); virtual;

Beschreibung

Setzt TWindow.Icon auf Icn. Das Fenster zeichnet dann ab sofort das übergebene Icon im ikonifizierten Fenster.

4.35.70 TWindow.FreeIcon

Deklaration

     procedure FreeIcon; virtual;

Beschreibung

Gibt das Feld TWindow.Icon frei, d.h. das Fenster zeichnet in ikonifiziertem Zustand kein Icon mehr.

4.35.71 TWindow.LoadToolbar

Deklaration

     procedure LoadToolbar(Indx: integer;
                            Opposite: boolean); virtual;

Beschreibung

Setzt Class.ToolbarTree auf den zum Index Indx gehörigen Objektbaum. Je nachdem, ob die Breite oder Höhe des Toolbar-ROOT-Objekts größer ist, wird die Toolbar horizontal oder vertikal gezeichnet. Normalerweise befindet sich die Toolbar am linken oder oberen Rand des Fensters. Wird allerdings in Opposite true übergeben, wird die Toolbar rechts bzw. unten gezeichnet. Dann werden außerdem die Flags cs_ToolbarOpposite und cs_FullRedraw gesetzt.

Anschließend wird noch der Arbeitsbereich neu gezeichnet.

Wenn Indx keinen gültigen Objektbaum bezeichnet oder das Fenster schon eine Toolbar besitzt, gibt ChkError em_InvalidToolbar zurück.

4.35.72 TWindow.FreeToolbar

Deklaration

     procedure FreeToolbar; virtual;

Beschreibung

Entfernt eine mit TWindow.LoadToolbar dem Fenster zugewiesene Toolbar. Der Arbeitsbereich wird anschließend neu gezeichnet, und cs_ToolbarOpposite wird gelöscht.

Wird von TWindow.Done aufgerufen.

4.35.73 TWindow.MakeWindow

Deklaration

     procedure MakeWindow; virtual;

Beschreibung

Ruft erst TWindow.Create und dann TWindow.OpenWindow auf, d.h. das Fenster wird erzeugt und geöffnet. Diese Methode kann immer dann aufgerufen werden, wenn das Fenster geöffnet und an oberste Position gebracht werden soll, da automatisch darauf geachtet wird, ob es bereits erzeugt wurde.

4.35.74 TWindow.Move

Deklaration

     procedure Move(r: GRECT); virtual;

Beschreibung

Bewegt das Fenster an die neue Position, die in den Feldern X,Y,W,H der GRECT-Struktur angegeben ist.

4.35.75 TWindow.Next

Deklaration

     function Next: PWindow;

Beschreibung

Gibt einen Pointer auf das nächste Fenster in der Liste des übergeordneten Fensters zurück bzw. nil, wenn das Fenster das letzte in der Liste ist.

4.35.76 TWindow.OpenWindow

Deklaration

     procedure OpenWindow; virtual;

Beschreibung

Wenn Attr.Status ws_Created enthält, wird das Fenster mit wind_open() geöffnet und ein evtl. vorhandenes TScroller-Objekt angepaßt. Wenn ws_ex_Disabled gesetzt und MultiTOS installiert ist, wird das Fenster anschließend in den Hintergrund gebracht. Danach werden alle vorhandenen untergeordneten Fenster geöffnet.

Tritt während des Öffnens ein Fehler auf, gibt ChkError em_WOpenFailure zurück.

Enthält Attr.Status allerdings bereits den Wert ws_Open, wird das Fenster nur an oberste Position gebracht (sofern ws_ex_Disabled nicht gesetzt ist), und die untergeordneten Fenster werden geöffnet.

4.35.77 TWindow.Paint

Deklaration

     procedure Paint(var PaintInfo: TPaintStruct);
                                             virtual;

Beschreibung

In dieser Methode sollten normalerweise alle Zeichenroutinen des Fensters zusammengefaßt sein, weshalb sie in eigentlich jedem ObjectGEM-Programm überschrieben wird. Man sollte nach Möglichkeit wirklich keine Zeichnungen im Fenster außerhalb dieser Methode vornehmen...

Standardmäßig macht Paint nichts, es sei denn, dem Fenster wurde mit TWindow.LoadDialog ein Dialogbaum zugewiesen. Dann wird der entsprechende Dialog gezeichnet.

Die Methode sollte nie direkt aufgerufen werden, sondern immer nur mittels ForceRedraw, WMRedraw oder TApplication.InvalidateRect. Wer meint, dies dennoch tun zu müssen, muß darauf achten, vor dem Aufruf von Paint die Methoden TWindow.UpdateDialog und InitPaint sowie nach dem Aufruf ExitPaint aufzurufen.

4.35.78 TWindow.Previous

Deklaration

     function Previous: PWindow;

Beschreibung

Gibt einen Pointer auf das vorhergehende Fenster in der Liste des übergeordneten Fensters zurück bzw. nil, wenn das Fenster das erste in der Liste ist.

4.35.79 TWindow.RawDestroy

Deklaration

     procedure RawDestroy; virtual;

Beschreibung

Ruft zunächst für alle untergeordneten Fenster RawDestroy auf. Dann wird Attr.Status auf ws_NoWindow und Attr.gemHandle auf -1 gesetzt, ohne irgendwelche GEM-Funktionen zum Schließen bzw. Freigeben des Fensters zu verwenden.

Wird z.B. benötigt, wenn ein Accessory geschlossen wird; in diesem Fall werden nämlich alle Fenster automatisch vom Betriebssystem freigegeben. RawDestroy braucht normalerweise nicht direkt aufgerufen zu werden, stattdessen sollte (bzw. muß) man TWindow.Destroy verwenden.

4.35.80 TWindow.ReleaseDC

Deklaration

     procedure ReleaseDC; virtual;

Beschreibung

Gibt einen zuvor mit TWindow.GetDC angeforderten "device context" frei, d.h. das Zeichnen ist beendet und die Bildschirm-Blockierung wird aufgehoben. Darf nur aufgerufen werden, wenn GetDC erfolgreich war!

4.35.81 TWindow.SetCurr

Deklaration

     procedure SetCurr(r: GRECT); virtual;

Beschreibung

Setzt die neuen Außenmaße des Fensters. Intern wird TWindow.WMSized(r.X,r.Y,r.W,r.H) aufgerufen.

4.35.82 TWindow.SetCursor

Deklaration

     procedure SetCursor(Crs: HCursor); virtual;

Beschreibung

Ändert das Feld Class.hCursor auf Crs. Wenn das Fenster gerade top ist, wird der Mauszeiger entsprechend neu gesetzt.

Wichtig: Das Feld IconClass.hCursor wird nicht verändert, dieses kann nur einmal beim Programmstart mit GetIconWindowClass gesetzt werden!

4.35.83 TWindow.SetDlgTree

Deklaration

     procedure SetDlgTree(tree: \#PTree\#); virtual;

Beschreibung

Setzt DlgTree auf den in tree übergebenen Objektbaum. Es findet keine Überprüfung statt, ob überhaupt ein neuer Dialog zugewiesen werden darf! Deshalb sollte man diese Methode nie direkt aufrufen, sondern stattdessen TWindow.LoadDialog verwenden.

4.35.84 TWindow.SetGadgets

Deklaration

     procedure SetGadgets(Style: integer); virtual;

Beschreibung

Weist dem Fenster andere Fensterelemente zu (CLOSER, MOVER, FULLER etc.). Wenn Style ungleich TWindow.Attr.Style ist, wird das Fenster dazu geschlossen und freigegeben und dann wieder komplett neu erzeugt und geöffnet.

4.35.85 TWindow.SetSubTitle

Deklaration

     procedure SetSubTitle(AnInfo: string); virtual;

Beschreibung

Gibt dem Fenster eine neue Infozeile und zeigt sie an, wenn in Attr.Style das Bit INFO gesetzt ist. Der String AnInfo darf max. 80 Zeichen lang sein.

4.35.86 TWindow.SetTitle

Deklaration

     procedure SetTitle(ATitle: string); virtual;

Beschreibung

Gibt dem Fenster einen neuen Titel und zeigt diesen an, wenn in Attr.Style das Bit NAME gesetzt ist. Der String ATitle darf max. 78 Zeichen lang sein, da vorne und hinten automatisch je ein Leerzeichen angefügt wird.

4.35.87 TWindow.SetupSize

Deklaration

     procedure SetupSize; virtual;

Beschreibung

In dieser Methode wird die Anfangsgröße des Fensters festgelegt. Full und Curr werden auf die Größe des Desktops gesetzt und daraus TWindow.Work berechnet. Wird von TWindow.SetupWindow aufgerufen.

4.35.88 TWindow.SetupWindow

Deklaration

     procedure SetupWindow; virtual;

Beschreibung

In dieser Methode sollten alle Einstellungen, die das Fenster (d.h. nicht nur das Fensterobjekt an sich) betreffen, vorgenommen werden.

Standardmäßig wird zunächst TWindow.SetupSize aufgerufen. Dann werden dem Fenster drei von TKey abgeleitete Objekte zugewiesen, die für das Schließen des Fensters (<Control>+<U>), das Ändern der Größe (<Control>+<*>) und das Wechseln des Fensters (<Control>+<W>) zuständig sind. Wurde das Programm nicht als Accessory gestartet und ist cs_AutoOpen gesetzt, wird zum Schluß noch TWindow.MakeWindow aufgerufen.

Wird diese Methode überschrieben, sollte die ursprüngliche Methode irgendwo am Ende der neuen Methode aufgerufen werden.

4.35.89 TWindow.SetWork

Deklaration

     procedure SetWork(r: GRECT); virtual;

Beschreibung

Bringt den Arbeitsbereich auf die neue Größe, die in den Feldern X,Y,W,H der GRECT-Struktur angegeben ist. Intern werden die Werte mit TWindow.Calc auf die Außenmaße umgerechnet und dann TWindow.WMSized aufgerufen.

4.35.90 TWindow.ShutdownWindow

Deklaration

     procedure ShutdownWindow; virtual;

Beschreibung

Wird von TWindow.Done aufgerufen, nachdem alle Child-Fenster geschlossen wurden. In dieser Methode kann also das Fenster "ausgewertet" werden, bevor es geschlossen wird.

ShutdownWindow ist damit das Gegenstück zu TWindow.SetupWindow.

4.35.91 TWindow.Size

Deklaration

     procedure Size(r: GRECT); virtual;

Beschreibung

Bringt die Außenmaße des Fensters auf die neue Größe, die in den Feldern X,Y,W,H der GRECT-Struktur angegeben ist.

Ist cs_FullRedraw gesetzt, wird anschließend TWindow.ForceRedraw aufgerufen.

4.35.92 TWindow.Top

Deklaration

     procedure Top; virtual;

Beschreibung

Wenn das Fenster offen ist, wird es an die oberste Position gebracht.

4.35.93 TWindow.UpdateDialog

Deklaration

     procedure UpdateDialog; virtual;

Beschreibung

Wenn dem Fenster mit TWindow.LoadDialog ein Dialogbaum zugewiesen wurde, wird in dieser Methode das ROOT-Objekt auf die neue X- und Y- Position des Fenster-Arbeitsbereichs gebracht. Außerdem wird hier eine evtl. verwendete Toolbar positioniert.

Die Methode wird intern verwendet und braucht nicht direkt aufgerufen zu werden.

4.35.94 TWindow.WMArrowed

Deklaration

     procedure WMArrowed(waA,SpeedA,waB,SpeedB: integer);
                                               virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer in den Sliderbereich klickt (Pfeile, grauer Bereich). Normalerweise enthält waA eine der WA_-Konstanten und SpeedA ist 1 (normale Scrollgeschwindigkeit), waB und SpeedB sind Null.

Wird allerdings unter WINX eine Scrollbox verwendet, kann in waB und SpeedB eine zweite (analog aufgebaute) Scrollanweisung übergeben werden.

Wenn ein Scroller vorhanden ist, wird der Fensterinhalt mit ScrollBy um die errechneten Werte verschoben.

4.35.95 TWindow.WMBottomed

Deklaration

     procedure WMBottomed; virtual;

Beschreibung

Wird ab AES 4.10 aufgerufen, wenn der Benutzer das Fenster "backdropped", d.h. per Klick auf den Titel in den Hintergrund bringt.

ObjectGEM reagiert darauf mit dem entsprechenden wind_set()-Befehl.

4.35.96 TWindow.WMClick

Deklaration

     procedure WMClick(mX,mY,KStat: integer); virtual;

Beschreibung

Wird von TWindow.WMButton aufgerufen, wenn der Benutzer in den Arbeitsbereich des Fensters klickt (Einfachklick). In mX und mY wird die Klickposition übergeben, KStat gibt den Zustand der Umschalttasten zum Zeitpunkt des Klicks an.

Standardmäßig werden hier nur evtl. vorhandene Icons mit IconSelect deselektiert.

4.35.97 TWindow.WMButton

Deklaration

     procedure WMButton(mX,mY,BStat,KStat,
                              Clicks: integer); virtual;

Beschreibung

Wird von TApplication.MUButton aufgerufen, wenn der Benutzer in den Arbeitsbereich des Fensters klickt. mX und mY geben die Klickposition an, BStat den Mausknopf (1=links, 2=rechts), Clicks die Anzahl der Klicks und KStat den Zustand der Umschalttasten.

Ist cs_DblClks gesetzt und Clicks=2, ruft WMButton TWindow.WMDblClick auf. Ist Clicks=1, wird zunächst überprüft, ob cs_Rubbox gesetzt ist. Ist dies der Fall und liegt die Klickposition im durch RBox angegebenen Bereich, wird TApplication.Rubbox aufgerufen und das Ergebnis an TWindow.WMRubbox weitergeleitet. Ansonsten wird TWindow.WMClick aufgerufen, oder - wenn mit der rechten Maustaste geklickt wurde - TWindow.WMRButton. Diese Methode wird normalerweise nicht überschrieben.

Wichtig: Ein Doppelklick rechts wird nicht weitergeleitet. Stattdessen wird das Fenster getoppt!

4.35.98 TWindow.WMClosed

Deklaration

     procedure WMClosed; virtual;

Beschreibung

Wenn TWindow.CanClose true zurückgibt, wird das Fenster mit TWindow.Destroy freigegeben. Ist dabei kein Fehler aufgetreten und cs_QuitOnClose gesetzt, wird das Programm mit TApplication.Quit beendet.

Wenn das Schließen eines Fensters also nicht zum Beenden der Applikation führen soll, muß diese Methode überschrieben werden.

4.35.99 TWindow.WMDblClick

Deklaration

     procedure WMDblClick(mX,mY,KStat: integer); virtual;

Beschreibung

Wird von TWindow.WMButton aufgerufen, wenn der Benutzer doppelt in den Arbeitsbereich des Fensters klickt. In mX und mY wird die Klickposition übergeben, KStat gibt den Zustand der Umschalttasten zum Zeitpunkt des Klicks an.

Standardmäßig werden hier nur evtl. vorhandene Icons mit IconSelect deselektiert.

4.35.100 TWindow.WMDragDrop

Deklaration

     procedure WMDragDrop(PipeHnd,OrgID,mX,mY,
                               KStat: integer); virtual;

Beschreibung

Wird von TApplication.APDragDrop aufgerufen, wenn der Benutzer unter MultiTOS ein Icon auf dieses Fenster gezogen hat.

Zunächst wird die Anfrage positiv beantwortet. Dann werden die von TWindow.DDGetPreferredTypes gelieferten Dateitypen übermittelt. Nachdem sich der Sender auf einen Dateityp festgelegt hat, wird darauf mit dem von TWindow.DDHeaderReply ermittelten Wert reagiert. Wenn sich Sender und Empfänger einigen konnten, werden dann mit TWindow.DDReadData die Daten gelesen, ansonsten wird die Drag&Drop-Anfrage abgewiesen oder ein neuer Dateityp verlangt.

Verschickt der Sender den 'ARGS'-Datentyp, wird automatisch die Methode TWindow.DDReadArgs aufgerufen. Wenn der Sender allerdings den Applikationspfad wissen möchte, wird dieser mit TWindow.DDGetPath zurückgeliefert.

PipeHnd ist das Dateihandle der geöffneten Pipe, auf die mit Fwrite(), Fread() etc. zugegriffen werden kann. OrgID ist die AES-Applikations-Kennung des Senders; mX, mY und KStat geben die Position der Maus und den Zustand der Umschalttasten beim Aufruf an.

4.35.101 TWindow.WMFulled

Deklaration

     procedure WMFulled; virtual;

Beschreibung

Ruft TWindow.FullSize auf. Wenn das Fenster ein TScroller-Objekt besitzt, wird dieses mit SetPageSize und SetSBarRange angepaßt.

4.35.102 TWindow.WMHSlid

Deklaration

     procedure WMHSlid(Value: integer); virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer den horizontalen Slider verschoben hat. In Value befindet sich die neue Sliderposition in Promille.

Wenn ein TScroller-Objekt existiert, wird dieses an die neue Position angepaßt.

4.35.103 TWindow.WMKeyDown

Deklaration

     function WMKeyDown(Stat,Key: integer): boolean;
                                               virtual;

Beschreibung

Wird von TApplication.HandleKeybd aufgerufen, wenn das Fenster an oberster Position ist und das Applikations-Objekt das aufgetretene Tastaturereignis nicht verarbeiten konnte.

In Stat steht der Zustand der Umschalttasten, in Key der Tastaturcode. Wenn das Fenster die Taste verarbeiten konnte, muß true zurückgegeben werden. Standardmäßig ist die Rückgabe false.

4.35.104 TWindow.WMMoved

Deklaration

     procedure WMMoved(X,Y,W,H: integer); virtual;

Beschreibung

Das Fenster wird mit TWindow.Move an die übergebene Position gebracht. Wenn ein TScroller-Objekt existiert, wird dieses mit SetPageSize und SetSBarRange evtl. angepaßt.

4.35.105 TWindow.WMNewTop

Deklaration

     procedure WMNewTop; virtual;

Beschreibung

Ruft TWindow.WMUntopped auf.

4.35.106 TWindow.WMOnTop

Deklaration

     procedure WMOnTop; virtual;

Beschreibung

Wird aufgerufen, wenn das Fenster vom AES (Screen-Manager) an oberste Position gebracht wurde. Intern wird die Cursorsteuerung angepaßt.

4.35.107 TWindow.WMRBoxChanged

Deklaration

     procedure WMRBoxChanged(r: GRECT); virtual;

Beschreibung

Wird von TApplication.Rubbox jedesmal dann aufgerufen, wenn sich die Größe der vom Benutzer im Fenster aufgezogenenen Rubbox ändert. Dies kann z.B. dazu verwendet werden, um die aktuelle Größe, die in r übergeben wird, anzuzeigen etc.

Während des Aufrufs ist die Maus unsichtbar, und es liegt eine wind_update()-Schachtelung sowohl mit BEG_UPDATE als auch mit BEG_MCTRL vor. Veränderte VDI-Attribute müssen zurückgesetzt werden.

4.35.108 TWindow.WMRBoxCheck

Deklaration

     procedure WMRBoxCheck(x,y,xmin,ymin,xmax,
                    ymax: integer; var mx,my: integer);
                                                virtual;

Beschreibung

Wird von TApplication.Rubbox jedesmal dann aufgerufen, wenn sich die Größe der vom Benutzer im Fenster aufgezogenenen Rubbox ändert. Im Gegensatz zu TWindow.WMRBoxChanged erfolgt der Aufruf noch vor dem Zeichnen. In x und y wird der feste Eckpunkt der Rubbox übergeben, in mx und my der variable. Letzterer kann mit dieser Methode an eigene Bedürfnisse angepaßt werden, aber Achtung: Der Aufruf erfolgt erst, nachdem der Punkt schon an die Werte von RBox angepaßt wurde. Wenn man also Änderungen vornimmt, sollte man danach mx und my mit Hilfe von xmin..ymax clippen.

4.35.109 TWindow.WMRButton

Deklaration

     procedure WMRButton(mX,mY,KStat,Clicks: integer);
                                                virtual;

Beschreibung

Wird von TWindow.WMButton aufgerufen, wenn mit der rechten Maustaste geklickt wurde. In mX und mY wird die Position übergeben, in Clicks die Anzahl der Klicks und in KStat der Status der Umschalttasten.

Wichtig: Bei einem Doppelklick rechts erfolgt kein Aufruf!

4.35.110 TWindow.WMRedraw

Deklaration

     procedure WMRedraw(X,Y,W,H: integer); virtual;

Beschreibung

Zeichnet die Teile des Arbeitsbereichs neu, die sich mit dem übergebenen Bereich überschneiden. Dazu wird für alle betroffenen Rechtecke der Fenster-Rechteckliste TWindow.Paint bzw. - wenn das Fenster ikonifiziert ist - TWindow.IconPaint aufgerufen.

Vorher wird jeweils der zu übergebende TPaintStruct-Record ausgefüllt und der Hintergrund mit der gewünschten Farbe gelöscht, wenn Class.hbrBackground einen Wert größer Null enthält.

Das Clipping wird jeweils korrekt gesetzt und die Maus ist unsichtbar. Wichtig: WMRedraw nimmt keine Blockierung des Bildschirms mit wind_update() vor, dies muß man - wenn die Methode "von Hand" aufgerufen wird - selbst durchführen. Bei allen internen Aufrufen (z.B. von TApplication.MUMesag) kümmert sich ObjectGEM allerdings automatisch darum.

Nach dem Abarbeiten der Rechteckliste werden alle vorhandenen Icons mit TIcon.Paint dargestellt. Bevor gezeichnet wird, ruft WMRedraw die Methoden UpdateDialog und InitPaint auf, nach dem Zeichnen dann ExitPaint.

4.35.111 TWindow.WMRubbox

Deklaration

     procedure WMRubbox(r: GRECT); virtual;

Beschreibung

Wird von TWindow.WMButton aufgerufen, wenn der Benutzer im Fenster eine Rubbox aufgezogen hat. In r wird der ausgewählte Bereich übergeben, der z.Z. nicht größer als der sichtbare Arbeitsbereich sein kann.

Der Bereich kann allerdings noch mit den Feldern X1,Y1,X2,Y2 von RBox eingeschränkt werden. Ist dort ein Wert ungleich Null eingetragen, wird dieser auf der entsprechenden Achse vom sichtbaren Arbeitsbereich abgezogen. Wenn also z.B. X2 den Wert 16 hat, kann die Rubbox bis maximal 16 Pixel vor dem rechten Rand des Arbeitsbereichs aufgezogen werden.

Wichtig: Die Veränderung von RBox sollte z.B. in TWindow.SetupWindow erfolgen. Außerdem dürfen die gewünschten Werte nicht direkt eingetragen werden, sondern müssen zum vorhandenen Wert addiert werden ("inc(RBox.X2,16);").

4.35.112 TWindow.WMSized

Deklaration

     procedure WMSized(X,Y,W,H: integer); virtual;

Beschreibung

Das Fenster wird mit TWindow.Size auf die übergebene Größe gebracht. Wenn ein TScroller-Objekt existiert, wird dieses mit SetPageSize und SetSBarRange angepaßt.

4.35.113 TWindow.WMShaded

Deklaration

     procedure WMShaded; virtual;

Beschreibung

Wird unter WINX ab Version 2.3 aufgerufen, wenn das Fenster mit einem Mausklick rechts eingeklappt wird.

Dient nur zur Information, hier passiert sonst nichts weiter.

4.35.114 TWindow.WMUnshaded

Deklaration

     procedure WMUnshaded; virtual;

Beschreibung

Wird unter WINX ab Version 2.3 aufgerufen, wenn das Fenster wieder aufgeklappt wird.

Dient nur zur Information, hier passiert sonst weiter nichts.

4.35.115 TWindow.WMToolbar

Deklaration

     procedure WMToolbar(Indx,BStat,KStat,
                            Clicks: integer); virtual;

Beschreibung

Wird von TApplication.MUButton aufgerufen, wenn auf ein Element der Toolbar geklickt wurde. WMToolbar versucht, mit TToolbar.TestMessage ein passendes TToolbar-Objekt zu finden. Ist die Suche erfolgreich, wird die zugehörige TEvent.Work-Methode aufgerufen bzw. - wenn die Anwahl mit der rechten Maustaste erfolgte - ein evtl. vorhandener BubbleHelp-Hilfstext angezeigt.

Wichtig: Bei einem Doppelklick rechts erfolgt kein Aufruf, stattdessen wird das Fenster getoppt!

4.35.116 TWindow.WMTopped

Deklaration

     procedure WMTopped; virtual;

Beschreibung

Ruft TWindow.Top auf und bringt das Fenster damit an oberste Position.

4.35.117 TWindow.WMUntopped

Deklaration

     procedure WMUntopped; virtual;

Beschreibung

Sollte vom GEM aufgerufen werden, wenn ein anderes Fenster an die oberste Position kommt. Intern wird dann die Mauscursor-Verwaltung angepaßt.

4.35.118 TWindow.WMVSlid

Deklaration

     procedure WMVSlid(Value: integer); virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer den vertikalen Slider verschoben hat. In Value befindet sich die neue Sliderposition in Promille.

Wenn ein TScroller-Objekt existiert, wird dieses an die neue Position angepaßt.

4.35.119 TWindow.Print

Deklaration

     procedure Print; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<P> drückt. Standardmäßig passiert hier nichts.

4.35.120 TWindow.Cut

Deklaration

     procedure Cut; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<X> drückt. Standardmäßig wird dann TApplication.Cut aufgerufen.

4.35.121 TWindow.Delete

Deklaration

     procedure Delete; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Delete> drückt. Standardmäßig wird dann TApplication.Delete aufgerufen.

4.35.122 TWindow.Copy

Deklaration

     procedure Copy; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<C> drückt. Standardmäßig wird dann TApplication.Copy aufgerufen.

4.35.123 TWindow.Paste

Deklaration

     procedure Paste; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<V> drückt. Standardmäig wird dann TApplication.Paste aufgerufen.

4.35.124 TWindow.SelectAll

Deklaration

     procedure SelectAll; virtual;

Beschreibung

Wird aufgerufen, wenn der Benutzer <Control>+<A> drückt. Im Moment werden dann alle Icons des Fensters mit TWindow.IconSelect(true,id_No) angewählt.

4.35.125 TWindow.IconSelect

Deklaration

     procedure IconSelect(OnOff: boolean;
                            OffExc: integer); virtual;

Beschreibung

Wenn OnOff true ist, werden alle Icons des Fensters selektiert. Andernfalls werden die Icons deselektiert (auch die der Fenster in der ChildList) - mit Ausnahme des Fensters mit dem GEM-Handle OffExc.

Sollen alle Icons deselektiert werden, muß für OffExc id_No übergeben werden.

4.35.126 TWindow.FirstIcon

Deklaration

     function FirstIcon(OnAll: boolean): PIcon; virtual;

Beschreibung

Ist OnAll true, wird ein Pointer auf das erste selektierte Icon geliefert. Ansonsten wird das erste von allen Icons zurückgegeben.

Existiert kein entsprechendes Icon, erhält man nil.

4.35.127 TWindow.LoadMenu

Deklaration

     procedure LoadMenu(Indx: integer); virtual;

Beschreibung

Installiert die Pulldown-Menüleiste im Objektbaum Indx. Zunächst wird geprüft, ob das Menü auf dem Bildschirm komplett dargestellt werden kann. Ist dies der Fall, wird das Menü gezeichnet, ansonsten gibt ChkError em_InvalidMenu zurück. Diese Methode sollte - falls ein Pulldown-Menü verwendet wird - in TWindow.SetupWindow aufgerufen werden.

Wenn das Menü korrekt installiert werden konnte, wird danach das "DESK"-Menü an Stelle der nicht benutzbaren Acessory-Einträge mit diversen Funktionen versehen.

4.35.128 TWindow.FreeMenu

Deklaration

     procedure FreeMenu; virtual;

Beschreibung

Entfernt ein mit TWindow.LoadMenu installiertes Pulldown-Menü. Wird von TWindow.Done automatisch aufgerufen.

4.35.129 TWindow.HandleMenu

Deklaration

     procedure HandleMenu(meNum: integer); virtual;

Beschreibung

Wird von TWindow.MNSelected aufgerufen, wenn für den Menüeintrag mit dem Index meNum kein zugehöriges TEvent-Objekt vorhanden ist. Innerhalb dieser Methode kann dann eine case-Abfrage durchgeführt werden. Nach Möglichkeit sollten allerdings TEvent-Objekte zum Einsatz kommen.

HandleMenu leitet die Anwahl des "Über..."-Menüeintrags an TApplication.MNSelected weiter, ansonsten passiert hier nichts.

4.35.130 TWindow.MNSelected

Deklaration

     procedure MNSelected(meNum,mtNum: integer;
                 Tree: PTree; PrIndx: integer); virtual;

Beschreibung

Wird von TApplication.MUButton aufgerufen, wenn der Benutzer einen Menüeintrag angewählt hat. In meNum wird der Index dieses Eintrags, in mtNum der Index des entsprechenden Menütitels übergeben.

In Tree wird der Zeiger auf den zugehörigen Objektbaum und in PrIndex der Index des dem Eintrag übergeordneten Objekts übergeben; wenn diese Werte nicht ermittelt werden können, wird stattdessen nil bzw. 0 übergeben.

Die Methode versucht, den Menüeintrag mit einem TKeyMenu-Objekt zu verknüpfen; ist für den Eintrag kein derartiges Objekt vorhanden, wird die Methode TWindow.HandleMenu aufgerufen.

4.35.131 TWindow.NextIcon

Deklaration

     function NextIcon: PIcon; virtual;

Beschreibung

Gibt das nächste selektiert Icon bzw. Icon überhaupt zurück, je nachdem, welche Parameter an TWindow.FirstIcon übergeben wurden.


Home Inhaltsverzeichnis Konstanten Objekthierarchie