entwicklerhandbuch - zeus.nyf.huzeus.nyf.hu/~bajalinov/my_special/sw/delphi ebooks/delphi 5/delphi...

1142
Entwicklerhandbuch Inprise GmbH, Robert-Bosch-Straße 11, D-63225 Langen Borland ® Delphi 5 für Windows 95, Windows 98 & Windows NT

Upload: others

Post on 31-Aug-2019

57 views

Category:

Documents


1 download

TRANSCRIPT

  • Entwicklerhandbuch

    Inprise GmbH, Robert-Bosch-Strae 11, D-63225 Langen

    Borland

    Delphi

    5fr Windows 95, Windows 98 & Windows NT

  • Copyright 1998, 1999 Inprise, Inc. Alle Rechte vorbehalten. Alle Produktnamen von Inprise sind eingetragene Warenzeichen der Inprise, Inc.

    Deutsche Ausgabe 1999 Inprise GmbH, Robert-Bosch-Strae 11, D-63225 Langen, Telefon 06103/979-0, Fax 06103/979-290

    Update/bertragung ins Deutsche: Krieger, Zander & Partner GmbH, Mnchen

    Satz: Krieger, Zander & Partner GmbH, Mnchen

    Hauptsitz: 100 Enterprise Way, P.O. Box 660001, Scotts Valley, CA 95067-0001, +1-(408)431-1000

    Niederlassungen in: Australien, Deutschland, Frankreich, Grobritannien, Hong Kong, Japan, Kanada, Lateinamerika, Mexiko, den Niederlanden und Taiwan

    HDA1350GE21001

  • i

    Kapitel 1Einfhrung 1-1Inhalt dieses Handbuchs . . . . . . . . . . . . . 1-1Typographische Konventionen . . . . . . . . . . 1-3Inprise Developer Support Services . . . . . . . 1-3Gedruckte Dokumentation . . . . . . . . . . . . 1-3

    Teil IProgrammieren mit Delphi

    Kapitel 2Object Pascal mit der VCL verwenden2-1

    Object Pascal und die VCL . . . . . . . . . . . . 2-1Das Objektmodell . . . . . . . . . . . . . . . . . 2-2

    Was ist ein Objekt? . . . . . . . . . . . . . . . 2-2Ein Delphi-Objekt untersuchen . . . . . . 2-3

    Daten und Quelltext von einem Objekt erben 2-5Objekte, Komponenten und Steuer-

    elemente . . . . . . . . . . . . . . . . . . 2-6Gltigkeitsbereich und Qualifizierer . . . . . 2-6

    private-, protected-, public- und published-Deklarationen. . . . . . . . . 2-7

    Objektvariablen verwenden. . . . . . . . . . 2-8Objekte erstellen, instantiieren und

    freigeben. . . . . . . . . . . . . . . . . . . . 2-9Komponenten und Eigentmer . . . . . . 2-10

    Komponenten verwenden . . . . . . . . . . . . 2-10Die Delphi-Standardkomponenten. . . . . . 2-10

    Eigenschaften aller visuellen Komponenten . . . . . . . . . . . . . . . 2-11

    Textkomponenten. . . . . . . . . . . . . . 2-13Spezialisierte Eingabekomponenten . . . 2-15Schaltflchen und hnliche

    Steuerelemente . . . . . . . . . . . . . . 2-17Mit Listen arbeiten . . . . . . . . . . . . . 2-19Komponenten gruppieren . . . . . . . . . 2-21Visuelle Rckmeldungen . . . . . . . . . 2-23Gitterkomponenten. . . . . . . . . . . . . 2-24Grafikkomponenten . . . . . . . . . . . . 2-25Windows-Standarddialogfelder . . . . . . 2-26

    Eigenschaften von Komponenten festlegen .2-26Den Objektinspektor verwenden . . . . . 2-27Eigenschaften zur Laufzeit festlegen . . . 2-27

    Methoden aufrufen. . . . . . . . . . . . . . . 2-28

    Mit Ereignissen und Ereignisbehandlungsroutinen arbeiten . . 2-28

    Eine neue Ereignisbehandlungsroutine erstellen . . . . . . . . . . . . . . . . . . 2-28

    Eine Behandlungsroutine fr das Standardereignis einer Komponente erstellen . . . . . . . . . . . . . . . . . . 2-29

    Ereignisbehandlungsroutinen suchen . . 2-29Ereignissen eine vorhandene

    Behandlungsroutine zuordnen . . . . . 2-29Menereignissen eine Behandlungsroutine

    zuordnen . . . . . . . . . . . . . . . . . 2-30Ereignisbehandlungsroutinen lschen . 2-31

    Hilfsobjekte verwenden . . . . . . . . . . . . . 2-31Mit Listen arbeiten . . . . . . . . . . . . . . 2-32Mit Stringlisten arbeiten . . . . . . . . . . . 2-32

    Stringlisten laden und speichern. . . . . 2-33Eine neue Stringliste erstellen . . . . . . 2-33Mit den Strings in einer Liste arbeiten. . 2-35Einer Stringliste Objekte zuordnen . . . 2-37

    Mit Registrierung und INI-Dateien arbeiten 2-38Streams verwenden . . . . . . . . . . . . . . 2-38

    Datenmodule und Remote-Datenmodule verwenden . . . . . . . . . . . . . . . . . . . . 2-38

    Datenmodule erstellen und bearbeiten . . . 2-39Business Rules in einem Datenmodul

    erstellen . . . . . . . . . . . . . . . . . . 2-39In einem Formular auf ein Datenmodul

    zugreifen . . . . . . . . . . . . . . . . . . . 2-40Ein Remote-Datenmodul einem

    Anwendungsserver hinzufgen . . . . . . 2-40Die Objektablage verwenden . . . . . . . . . . 2-40

    Elemente in einem Projekt gemeinsam verwenden . . . . . . . . . . . . . . . . . . 2-41

    Elemente in die Objektablage aufnehmen . 2-41Objekte in einer Team-Umgebung gemeinsam

    verwenden . . . . . . . . . . . . . . . . . . 2-41Ein Element der Objektablage in einem

    Projekt verwenden . . . . . . . . . . . . . 2-42Ein Objekt kopieren . . . . . . . . . . . . 2-42Ein Objekt vererben . . . . . . . . . . . . 2-42Ein Objekt verwenden. . . . . . . . . . . 2-42

    Projektvorlagen verwenden . . . . . . . . . 2-42Freigegebene Objekte ndern . . . . . . . . 2-43Ein Standardelement fr neue Projekte,

    Formulare und Hauptformulare angeben 2-43

    Inhalt

  • ii

    Benutzerdefinierte Komponenten der IDE hinzufgen . . . . . . . . . . . . . . . . . . . . 2-44

    Kapitel 3Typische Programmieraufgaben 3-1Exception-Behandlung . . . . . . . . . . . . . . 3-1

    Quelltextblcke schtzen . . . . . . . . . . . 3-2Auf Exceptions reagieren . . . . . . . . . 3-2Exceptions und die Ablaufsteuerung. . . 3-3Exception-Reaktionen verschachteln . . . 3-3

    Ressourcenzuweisungen schtzen . . . . . . 3-4Zu schtzende Ressourcen. . . . . . . . . 3-4Ressourcen-Schutzblcke erstellen . . . . 3-5

    RTL-Exceptions behandeln . . . . . . . . . . 3-6RTL-Exceptions . . . . . . . . . . . . . . . 3-6Exception-Behandlungsroutine erstellen. 3-7Exception-Behandlungsanweisungen . . 3-8Exception-Instanz verwenden. . . . . . . 3-9Gltigkeitsbereich von Exception-

    Behandlungsroutinen. . . . . . . . . . . 3-10Standard-Exception-Behandlungsroutinen

    bereitstellen . . . . . . . . . . . . . . . . 3-10Exception-Klassen verarbeiten . . . . . . 3-11Exception erneut auslsen . . . . . . . . . 3-11

    Komponenten-Exceptions behandeln . . . . 3-12TApplication.HandleException verwenden .3-13Stille Exceptions . . . . . . . . . . . . . . . . 3-13Exceptions definieren . . . . . . . . . . . . . 3-14

    Exception-Objekttyp deklarieren . . . . . 3-14Exception auslsen . . . . . . . . . . . . . 3-15

    Schnittstellen verwenden . . . . . . . . . . . . . 3-15Schnittstellen als Sprachmerkmal . . . . . . 3-16

    Schnittstellen in mehreren Klassen nutzen . . . . . . . . . . . . . . . . . . . 3-16

    Schnittstellen mit Prozeduren verwenden . . . . . . . . . . . . . . . . . 3-18

    IUnknown implementieren . . . . . . . . . . 3-18TInterfacedObject . . . . . . . . . . . . . . . 3-19Operator as verwenden . . . . . . . . . . . . 3-19Wiederverwendung von Quelltext und

    Delegation . . . . . . . . . . . . . . . . . . . 3-20implements fr die Delegation

    verwenden . . . . . . . . . . . . . . . . . 3-20Aggregation . . . . . . . . . . . . . . . . . 3-22

    Speicherverwaltung fr Schnittstellen-objekte . . . . . . . . . . . . . . . . . . . . . 3-22

    Referenzzhlung einsetzen . . . . . . . . 3-23Keine Referenzzhlung einsetzen . . . . . 3-24

    Schnittstellen in verteilten Anwendungen einsetzen . . . . . . . . . . . . . . . . . . . 3-24

    Mit Strings arbeiten. . . . . . . . . . . . . . . . 3-25Zeichentypen . . . . . . . . . . . . . . . . . 3-25String-Typen . . . . . . . . . . . . . . . . . . 3-26

    Kurze Strings . . . . . . . . . . . . . . . . 3-26Lange Strings . . . . . . . . . . . . . . . . 3-27WideString . . . . . . . . . . . . . . . . . 3-28PChar-Typen . . . . . . . . . . . . . . . . 3-28OpenString . . . . . . . . . . . . . . . . . 3-28

    Routinen der Laufzeitbibliothek zur String-Verarbeitung . . . . . . . . . . . . . . . . . 3-29

    Wide-Zeichenroutinen. . . . . . . . . . . 3-29Gebruchliche Routinen fr lange

    Strings . . . . . . . . . . . . . . . . . . . 3-30Strings deklarieren und initialisieren . . . . 3-32String-Typen mischen und konvertieren . . 3-33Konvertierungen von String in PChar . . . 3-33

    String-Abhngigkeiten . . . . . . . . . . 3-34Lokale PChar-Variable zurckgeben. . . 3-34Lokale Variable als PChar bergeben . . 3-34

    Compiler-Direktiven fr Strings . . . . . . . 3-35Strings und Zeichen: Verwandte Themen . 3-36

    Mit Dateien arbeiten . . . . . . . . . . . . . . . 3-36Dateien bearbeiten . . . . . . . . . . . . . . 3-37

    Datei lschen . . . . . . . . . . . . . . . . 3-37Datei suchen . . . . . . . . . . . . . . . . 3-37Dateiattribute ndern . . . . . . . . . . . 3-39Datei umbenennen. . . . . . . . . . . . . 3-39Datums-/Zeit-Routinen. . . . . . . . . . 3-40Datei kopieren . . . . . . . . . . . . . . . 3-40

    Dateitypen mit Datei-E/A . . . . . . . . . . 3-40Datei-Streams verwenden . . . . . . . . . . 3-41

    Dateien erstellen und ffnen . . . . . . . 3-42Datei-Handle verwenden . . . . . . . . . 3-42Dateien lesen und schreiben . . . . . . . 3-43Strings lesen und schreiben. . . . . . . . 3-43Datei durchsuchen. . . . . . . . . . . . . 3-44Dateiposition und -gre . . . . . . . . . 3-44Kopieren . . . . . . . . . . . . . . . . . . 3-45

    Neue Datentypen definieren. . . . . . . . . . . 3-45

    Kapitel 4Anwendungen, Komponenten und Bibliotheken erstellen 4-1

    Anwendungen erstellen . . . . . . . . . . . . . . 4-1Windows-Anwendungen. . . . . . . . . . . . 4-1

    Benutzeroberflchen. . . . . . . . . . . . . 4-2

  • iii

    IDE-, Projekt- und Compiler-Optionen festlegen . . . . . . . . . . . . . . . . . . 4-3

    Quelltextvorlagen . . . . . . . . . . . . . . . 4-3Konsolenanwendungen . . . . . . . . . . . . 4-3Service-Anwendungen . . . . . . . . . . . . 4-4

    Service-Threads . . . . . . . . . . . . . . . 4-6Service-Namenseigenschaften. . . . . . . 4-8Services testen. . . . . . . . . . . . . . . . 4-8

    Packages und DLLs erstellen . . . . . . . . . . . 4-9Unterschiede zwischen Packages und DLLs 4-9

    Datenbankanwendungen erstellen. . . . . . . . 4-9Verteilte Anwendungen erstellen . . . . . . . . 4-10

    Verteilte TCP/IP-Anwendungen erstellen. . 4-10Sockets in Anwendungen verwenden . . 4-11Web-Server-Anwendungen erstellen . . . 4-11

    Verteilte Anwendungen mit COM und DCOM erstellen. . . . . . . . . . . . . . . . 4-12

    COM und DCOM. . . . . . . . . . . . . . 4-12MTS . . . . . . . . . . . . . . . . . . . . . 4-12

    Verteilte CORBA-Anwendungen erstellen . 4-12Verteilte Datenbankanwendungen erstellen.4-13

    Kapitel 5Die Benutzeroberflche erstellen 5-1Die Klassen TApplication, TScreen und TForm 5-1

    Das Hauptformular . . . . . . . . . . . . . . 5-1Weitere Formulare hinzufgen . . . . . . . . 5-2

    Formulare verknpfen . . . . . . . . . . . 5-2Auf Anwendungsebene arbeiten . . . . . . . 5-3Mit dem Bildschirm arbeiten . . . . . . . . . 5-3Das Layout festlegen . . . . . . . . . . . . . . 5-3

    Mit Botschaften arbeiten . . . . . . . . . . . . . 5-5Weitere Informationen zu Formularen . . . . . 5-5

    Die Formularerstellung im Speicher steuern 5-5Automatisch erstellte Formulare anzeigen 5-6Formulare dynamisch erstellen . . . . . . 5-6Nichtmodale Formulare erstellen . . . . . 5-7Formularinstanzen mit lokalen Variablen

    erstellen . . . . . . . . . . . . . . . . . . 5-7Zustzliche Argumente an Formulare

    bergeben . . . . . . . . . . . . . . . . . . . 5-8Daten aus Formularen abrufen . . . . . . . . 5-9

    Daten aus nichtmodalen Formularen abrufen . . . . . . . . . . . . . . . . . . . 5-9

    Daten aus modalen Formularen abrufen.5-10Komponenten und Komponentengruppen wieder

    verwenden . . . . . . . . . . . . . . . . . . . . 5-12Komponentenvorlagen . . . . . . . . . . . . . . 5-12Frames. . . . . . . . . . . . . . . . . . . . . . . . 5-13

    Frames erstellen . . . . . . . . . . . . . . . . 5-14Frames in die Komponentenpalette

    einfgen . . . . . . . . . . . . . . . . . . 5-14Frames verwenden und ndern . . . . . . . 5-14Frames freigeben . . . . . . . . . . . . . . . 5-16

    Mens erstellen und verwalten . . . . . . . . . 5-16Den Men-Designer ffnen . . . . . . . . . 5-17Mens entwerfen . . . . . . . . . . . . . . . 5-18

    Mens benennen. . . . . . . . . . . . . . 5-19Meneintrge benennen . . . . . . . . . 5-19Meneintrge hinzufgen, einfgen und

    entfernen . . . . . . . . . . . . . . . . . 5-20Untermens erstellen . . . . . . . . . . . 5-21Das Men anzeigen . . . . . . . . . . . . 5-23

    Meneintrge im Objektinspektor bearbeiten . . . . . . . . . . . . . . . . . . 5-24

    Das lokale Men des Men-Designers verwenden . . . . . . . . . . . . . . . . . . 5-24

    Die Befehle des lokalen Mens . . . . . . 5-25Zur Entwurfszeit zwischen Mens

    wechseln . . . . . . . . . . . . . . . . . 5-25Menvorlagen verwenden . . . . . . . . . . 5-26Ein Men als Vorlage speichern . . . . . . . 5-27

    Namenskonventionen fr Meneintrge und Ereignisbehandlungsroutinen in Vorlagen. . . . . . . . . . . . . . . . . . 5-28

    Meneintrge zur Laufzeit bearbeiten . . . 5-29Mens kombinieren . . . . . . . . . . . . . . 5-29

    Das aktive Men festlegen: die Eigenschaft Menu . . . . . . . . . . . . . . . . . . . 5-29

    Die Reihenfolge der kombinierten Meneintrge festlegen: die Eigenschaft GroupIndex . . . . . . . . . . . . . . . . 5-29

    Ressourcen-Dateien importieren. . . . . . . 5-30ToolBar- und CoolBar-Komponenten erstellen 5-31

    Eine Panel-Komponente als Symbolleiste hinzufgen . . . . . . . . . . . . . . . . . . 5-32

    Einer Symbolleiste (TPanel) eine SpeedButton-Komponente hinzufgen 5-32

    Einer SpeedButton-Komponente eine Grafik zuweisen . . . . . . . . . . . . . . . . . 5-33

    Die Anfangseinstellungen einer SpeedButton-Komponente festlegen. . 5-33

    Eine Gruppe von SpeedButton-Komponenten erstellen . . . . . . . . . 5-33

    Eine SpeedButton-Komponente als Ein-/Ausschalter verwenden . . . . . . . . . 5-34

    Eine ToolBar-Komponente als Symbolleiste hinzufgen . . . . . . . . . . . . . . . . . . 5-34

  • iv

    Einer Symbolleiste (TToolBar) eine ToolButton-Komponente hinzufgen. . 5-35

    Einer ToolButton-Komponente eine Grafik zuweisen . . . . . . . . . . . . . . . . . . 5-35

    Die Anfangseinstellungen einer ToolButton-Komponente festlegen . . . . . . . . . . 5-35

    Eine Gruppe von ToolButton-Komponenten erstellen . . . . . . . . . . . . . . . . . . 5-36

    Eine ToolButton-Komponente als Ein-/Ausschalter verwenden . . . . . . . . . 5-36

    Eine CoolBar-Komponente hinzufgen . . . 5-36Die Anfangseinstellungen einer CoolBar-

    Komponente festlegen . . . . . . . . . . 5-37Auf Mausklicks reagieren . . . . . . . . . . . 5-37

    Einer ToolButton-Komponente ein Men zuweisen . . . . . . . . . . . . . . . . . . 5-38

    Verborgene Symbolleisten hinzufgen. . . . 5-38Symbolleisten ein- und ausblenden . . . . . 5-38

    Aktionslisten verwenden . . . . . . . . . . . . . 5-39Aktionsobjekte . . . . . . . . . . . . . . . . . 5-39Aktionen verwenden. . . . . . . . . . . . . . 5-40

    Quelltext zentral verwalten . . . . . . . . 5-41Eigenschaften verknpfen . . . . . . . . . 5-41Aktionen ausfhren . . . . . . . . . . . . 5-41Aktionen aktualisieren . . . . . . . . . . . 5-43

    Vordefinierte Aktionsklassen . . . . . . . . . 5-43Standard-Bearbeitungsaktionen. . . . . . 5-44Windows-Standardaktionen . . . . . . . . 5-44Datenmengenaktionen . . . . . . . . . . . 5-44

    Aktionskomponenten erstellen . . . . . . . . 5-45Wie Aktionen ihre Zielobjekte

    lokalisieren. . . . . . . . . . . . . . . . . 5-45Aktionen registrieren . . . . . . . . . . . . 5-47Einen Aktionslisten-Editor erstellen . . . 5-47

    Beispielprogramme . . . . . . . . . . . . . . 5-47

    Kapitel 6Mit Steuerelementen arbeiten 6-1Drag&Drop-Operationen in Steuerelementen

    implementieren. . . . . . . . . . . . . . . . . . 6-1Eine Drag-Operation beginnen . . . . . . . . 6-1Gezogene Elemente akzeptieren . . . . . . . 6-2Elemente ablegen. . . . . . . . . . . . . . . . 6-3Eine Drag-Operation beenden . . . . . . . . 6-3Drag&Drop-Operationen durch ein Drag-

    Objekt anpassen . . . . . . . . . . . . . . . 6-3Den Drag-Mauszeiger ndern . . . . . . . . 6-4

    Drag&Dock in Steuerelementen implementieren6-4

    Ein fensterorientiertes Steuerelement als Ziel einer Andock-Operation definieren . . . . . 6-5

    Ein Steuerelement als andockbares Steuerelement definieren . . . . . . . . . . . 6-5

    Andock-Operationen von Steuerelementen steuern . . . . . . . . . . . . . . . . . . . . . 6-6

    Steuerelemente vom Ziel einer Andock-Operation trennen . . . . . . . . . . . . . . . 6-6

    Die Behandlung von Drag&Dock-Operationen durch Steuerelemente festlegen . . . . . . . 6-7

    Text in Steuerelementen bearbeiten . . . . . . . . 6-7Die Textausrichtung festlegen . . . . . . . . . 6-8Bildlaufleisten zur Laufzeit hinzufgen . . . 6-8Das Clipboard-Objekt hinzufgen . . . . . . 6-9Text markieren . . . . . . . . . . . . . . . . . . 6-9Den gesamten Text markieren . . . . . . . . 6-10Text ausschneiden, kopieren und einfgen. 6-10Markierten Text lschen . . . . . . . . . . . 6-11Meneintrge deaktivieren. . . . . . . . . . 6-11Ein Popup-Men bereitstellen . . . . . . . . 6-12Das Ereignis OnPopup . . . . . . . . . . . . 6-12

    Grafiken zu Steuerelementen hinzufgen . . . 6-13Den Owner-Draw-Stil festlegen . . . . . . . 6-13Grafikobjekte zu einer Stringliste

    hinzufgen . . . . . . . . . . . . . . . . . . 6-14Grafiken zu einer Anwendung

    hinzufgen . . . . . . . . . . . . . . . . 6-14Grafiken zu einer Stringliste hinzufgen 6-14Owner-Draw-Elemente anzeigen . . . . 6-15

    Gre von Owner-Draw-Elementen festlegen . . . . . . . . . . . . . . . . . . . 6-15

    Alle Owner-Draw-Elemente anzeigen . . . 6-16

    Kapitel 7Mit Grafiken und Multimedia arbeiten 7-1Grafikprogrammierung im berblick . . . . . . 7-1

    Den Bildschirm aktualisieren . . . . . . . . . 7-2Grafikobjekt-Typen . . . . . . . . . . . . . . . 7-3Hufig verwendete Eigenschaften und

    Methoden des Objekts Canvas . . . . . . . . 7-4Eigenschaften des Objekts Canvas

    verwenden . . . . . . . . . . . . . . . . . . . 7-5Stifte verwenden . . . . . . . . . . . . . . . 7-5Pinsel verwenden . . . . . . . . . . . . . . 7-8Pixel lesen und setzen . . . . . . . . . . . 7-10

    Grafikobjekte zeichnen . . . . . . . . . . . . 7-10Linien und Linienzge zeichnen . . . . . 7-10Formen zeichnen. . . . . . . . . . . . . . 7-11

  • v

    Behandlung mehrerer Zeichenobjekte in einer Anwendung . . . . . . . . . . . . . . . . . . 7-13

    Bentigte Zeichenwerkzeuge ermitteln . 7-13Werkzeuge mit Hilfe von

    Mauspalettenschaltern wechseln . . . . 7-14Zeichenwerkzeuge verwenden . . . . . . 7-15

    In einer Grafik zeichnen . . . . . . . . . . . . 7-18Bildlauffhige Grafiken . . . . . . . . . . 7-18Bild-Steuerelemente hinzufgen . . . . . 7-18

    Grafikdateien laden und speichern. . . . . . 7-20Bilder aus Dateien laden . . . . . . . . . . 7-21Bilder in Dateien speichern . . . . . . . . 7-21Bilder ersetzen . . . . . . . . . . . . . . . 7-22

    Die Zwischenablage und Grafiken . . . . . . 7-23Grafiken in die Zwischenablage

    kopieren . . . . . . . . . . . . . . . . . . 7-23Grafiken in die Zwischenablage

    ausschneiden . . . . . . . . . . . . . . . 7-23Grafiken aus der Zwischenablage

    einfgen . . . . . . . . . . . . . . . . . . 7-24Der Gummiband-Effekt: Beispiel . . . . . . . 7-24

    Auf Mausaktionen reagieren . . . . . . . 7-25Felder einem Formularobjekt

    hinzufgen. . . . . . . . . . . . . . . . . 7-28Verbesserte Liniendarstellung . . . . . . . 7-29

    Mit Multimedia arbeiten . . . . . . . . . . . . . 7-31Einer Anwendung Videoclips ohne Ton

    hinzufgen . . . . . . . . . . . . . . . . . . 7-31Beispiel fr das Hinzufgen von Videoclips

    ohne Ton . . . . . . . . . . . . . . . . . . 7-32Einer Anwendung Audio- und/oder Videoclips

    hinzufgen . . . . . . . . . . . . . . . . . . 7-33Beispiel fr das Hinzufgen von Audio-

    und/oder Videoclips . . . . . . . . . . . 7-35

    Kapitel 8Multithread-Anwendungen entwickeln8-1

    Thread-Objekte definieren . . . . . . . . . . . . 8-2Den Thread initialisieren . . . . . . . . . . . 8-3

    Eine Standard-Prioritt zuweisen . . . . . 8-3Den Freigabezeitpunkt von Threads

    festlegen . . . . . . . . . . . . . . . . . . 8-3Die Thread-Funktion schreiben . . . . . . . . 8-4

    Der VCL-Haupt-Thread . . . . . . . . . . 8-4Lokale Thread-Variablen verwenden . . . 8-5Die Beendigung mit anderen Threads

    prfen . . . . . . . . . . . . . . . . . . . 8-6Clean-up-Quelltext schreiben . . . . . . . . . 8-6

    Threads koordinieren. . . . . . . . . . . . . . . . 8-7Gleichzeitigen Zugriff vermeiden . . . . . . . 8-7

    Objekte sperren . . . . . . . . . . . . . . . 8-7Kritische Abschnitte . . . . . . . . . . . . . 8-7TMultiReadExclusiveWriteSynchronizer-

    Objekte . . . . . . . . . . . . . . . . . . . 8-8Weitere Techniken fr die gemeinsame

    Nutzung von Speicher. . . . . . . . . . . 8-9Die Ausfhrung anderer Threads abwarten . 8-9

    Warten, bis ein Thread vollstndig ausgefhrt ist . . . . . . . . . . . . . . . . 8-9

    Warten, bis eine Aufgabe ausgefhrt ist. 8-10Thread-Objekte ausfhren . . . . . . . . . . . . 8-11

    Die Standard-Prioritt berschreiben . . . . 8-11Threads starten und stoppen. . . . . . . . . 8-12

    Threads in verteilten Anwendungen . . . . . . 8-12Threads und botschaftsbasierte Server . . . 8-13Threads und verteilte Objekte . . . . . . . . 8-13

    Anwendungen (EXE-Dateien) schreiben 8-13Bibliotheken schreiben . . . . . . . . . . 8-14

    Fehlersuche in Multithread-Anwendungen . . 8-15

    Kapitel 9Packages und Komponenten 9-1Packages sinnvoll einsetzen . . . . . . . . . . . . 9-2

    Packages und Standard-DLLs . . . . . . . . . 9-2Laufzeit-Packages. . . . . . . . . . . . . . . . . . 9-3

    Laufzeit-Packages in Anwendungen . . . . . 9-3Packages dynamisch laden . . . . . . . . . . . 9-4Bentigte Laufzeit-Packages auswhlen . . . 9-4Benutzerdefinierte Packages . . . . . . . . . . 9-5

    Entwurfszeit-Packages . . . . . . . . . . . . . . . 9-6Komponenten-Packages installieren . . . . . 9-6

    Packages erstellen und bearbeiten . . . . . . . . 9-8Ein Package erstellen . . . . . . . . . . . . . . 9-8Ein bestehendes Package bearbeiten . . . . . 9-9Quelldateien von Packages manuell

    bearbeiten . . . . . . . . . . . . . . . . . . . 9-9Die Struktur eines Package . . . . . . . . . . 9-10

    Packages benennen . . . . . . . . . . . . 9-10Die requires-Klausel . . . . . . . . . . . . 9-10Die contains-Klausel. . . . . . . . . . . . 9-11

    Packages compilieren . . . . . . . . . . . . . 9-11Spezielle Compiler-Direktiven fr

    Packages . . . . . . . . . . . . . . . . . 9-12Der Befehlszeilen-Compiler und -Linker 9-14Package-Dateien nach erfolgreicher

    Compilierung. . . . . . . . . . . . . . . 9-14Packages weitergeben . . . . . . . . . . . . . . 9-15

  • vi

    Anwendungen mit Packages weitergeben . 9-15Packages anderen Entwicklern zur Verfgung

    stellen . . . . . . . . . . . . . . . . . . . . . 9-15Package-Sammlungen . . . . . . . . . . . . . 9-15

    Kapitel 10Anwendungen fr den internationalen Markt10-1

    Internationalisierung und Lokalisierung . . . . 10-1Internationalisierung. . . . . . . . . . . . . . 10-1Lokalisierung . . . . . . . . . . . . . . . . . . 10-2

    Internationalisieren von Anwendungen . . . . 10-2Quelltext anpassen . . . . . . . . . . . . . . . 10-2

    Zeichenstze. . . . . . . . . . . . . . . . . 10-2OEM- und ANSI- Zeichensatz. . . . . . . 10-2Doppelbyte-Zeichenstze . . . . . . . . . 10-216-Bit-Zeichen . . . . . . . . . . . . . . . . 10-3Bidirektionale Sprachen . . . . . . . . . . 10-4Die Eigenschaft BiDiMode. . . . . . . . . 10-6Funktionen fr bestimmte

    Gebietsschemas . . . . . . . . . . . . . . 10-8Die Benutzeroberflche gestalten. . . . . . . 10-9

    Text . . . . . . . . . . . . . . . . . . . . . . 10-9Grafiken . . . . . . . . . . . . . . . . . . . 10-9Formate und Sortierreihenfolge . . . . . 10-10Tastenzuordnungen . . . . . . . . . . . 10-10

    Ressourcen auslagern . . . . . . . . . . . . 10-10Ressourcen-DLLs erstellen . . . . . . . . . 10-10Ressourcen-DLLs verwenden . . . . . . . . 10-12Ressourcen-DLLs dynamisch wechseln . . 10-13

    Anwendungen lokalisieren . . . . . . . . . . . 10-13Ressourcen lokalisieren . . . . . . . . . . . 10-13

    Kapitel 11Anwendungen weitergeben 11-1Allgemeine Anwendungen weitergeben . . . . 11-1

    Installationsprogramme verwenden . . . . . 11-2Anwendungsdateien identifizieren . . . . 11-2Anwendungsdateien nach Namens-

    erweiterung . . . . . . . . . . . . . . . . 11-3Package-Dateien . . . . . . . . . . . . . . 11-3ActiveX-Steuerelemente . . . . . . . . . . 11-3Hilfsanwendungen . . . . . . . . . . . . . 11-4Position von DLL-Dateien . . . . . . . . . 11-4

    Datenbankanwendungen weitergeben . . . . . 11-4Die Datenbank-Engine bereitstellen . . . . . 11-5

    Borland Database Engine . . . . . . . . . 11-5Datenbank-Engines von Fremd-

    herstellern . . . . . . . . . . . . . . . . . 11-6

    SQL Links. . . . . . . . . . . . . . . . . . 11-6MIDAS (Multi-tiered Distributed Application

    Services) . . . . . . . . . . . . . . . . . . . 11-7Web-Anwendungen weitergeben . . . . . . . . 11-8Unterschiedliche Host-Umgebungen

    bercksichtigen . . . . . . . . . . . . . . . . . 11-8Bildschirmauflsung und Farbtiefe . . . . . 11-9

    Anwendungen ohne dynamische Grenanpassung . . . . . . . . . . . . 11-9

    Anwendungen mit dynamischer Grenanpassung der Formulare und Steuerelemente . . . . . . . . . . . . . . 11-9

    Unterschiedliche Farbtiefen . . . . . . . 11-11Schriften . . . . . . . . . . . . . . . . . . . . 11-11Windows-Version . . . . . . . . . . . . . . .11-12

    Software-Lizenzvereinbarungen . . . . . . . .11-12DEPLOY.TXT . . . . . . . . . . . . . . . . .11-13README.TXT . . . . . . . . . . . . . . . . .11-13Lizenzvereinbarungen . . . . . . . . . . . .11-13Dokumentation zu Produkten von

    Fremdherstellern . . . . . . . . . . . . . .11-13

    Teil IIDatenbankanwendungen entwickeln

    Kapitel 12Datenbankanwendungen entwerfen 12-1Datenbanken . . . . . . . . . . . . . . . . . . . 12-1

    Datenbanktypen . . . . . . . . . . . . . . . . 12-2Lokale Datenbanken. . . . . . . . . . . . 12-2Remote-Datenbankserver . . . . . . . . . 12-3

    Datenbanksicherheit . . . . . . . . . . . . . 12-3Transaktionen . . . . . . . . . . . . . . . . . 12-4Das Daten-Dictionary . . . . . . . . . . . . . 12-5Referentielle Integritt, Stored Procedures und

    Trigger . . . . . . . . . . . . . . . . . . . . 12-6Datenbankarchitektur . . . . . . . . . . . . . . 12-6

    Skalierbarkeit planen . . . . . . . . . . . . . 12-7Einschichtige Datenbankanwendungen . . 12-9Zweischichtige Datenbankanwendungen . 12-9Mehrschichtige Datenbankanwendungen 12-10

    Benutzeroberflchen entwickeln . . . . . . . 12-12Einzelne Datenstze anzeigen . . . . . . . 12-12Mehrere Datenstze anzeigen . . . . . . . 12-13Daten analysieren . . . . . . . . . . . . . . 12-14Anzeige der Daten festlegen . . . . . . . . 12-14Berichte erstellen . . . . . . . . . . . . . . 12-17

  • vii

    Kapitel 13Ein- und zweischichtige Anwendunen erstellen 13-1

    BDE-Anwendungen . . . . . . . . . . . . . . . . 13-2BDE-Architektur . . . . . . . . . . . . . . . . 13-2

    Grundlagen von Datenbanken und Datenmengen . . . . . . . . . . . . . . . 13-3

    Sitzungen verwenden . . . . . . . . . . . 13-4Verbindung mit Datenbanken. . . . . . . . . 13-5Transaktionen . . . . . . . . . . . . . . . . . . 13-5

    Transaktionen explizit steuern . . . . . . 13-6Datenbank-Komponenten fr Transaktionen

    verwenden . . . . . . . . . . . . . . . . . 13-6Die Eigenschaft TransIsolation . . . . . . 13-7Passthrough-SQL . . . . . . . . . . . . . . 13-9Lokale Transaktionen. . . . . . . . . . . . 13-9

    Aktualisierungen zwischenspeichern . . . 13-10Datenbanktabellen erstellen und

    umstrukturieren . . . . . . . . . . . . . . 13-11ADO-basierte Anwendungen . . . . . . . . . 13-11

    ADO-basierte Architektur . . . . . . . . . . 13-12Grundlagen zu ADO-Datenbanken und -

    Datenmengen . . . . . . . . . . . . . . 13-12Verbindung zu ADO-Datenbanken

    herstellen . . . . . . . . . . . . . . . . . . 13-13Daten abrufen. . . . . . . . . . . . . . . . . 13-13ADO-Datenbanktabellen erstellen und

    umstrukturieren . . . . . . . . . . . . . . 13-14Datenbankanwendungen mit unstrukturierten

    Daten . . . . . . . . . . . . . . . . . . . . . . 13-15Datenmengen erstellen . . . . . . . . . . . 13-15

    Neue Datenmengen mit persistenten Feldern erstellen. . . . . . . . . . . . . 13-16

    Datenmengen mit Feld- und Indexdefinitionen erstellen . . . . . . 13-16

    Datenmengen auf Grundlage bestehender Tabellen erstellen . . . . . . . . . . . . 13-17

    Daten laden und speichern . . . . . . . . . 13-18Das Aktenkoffer-Modell . . . . . . . . . . . 13-19

    Skalierung auf eine dreischichtige Anwendung . . . . . . . . . . . . . . . . . . 13-20

    Kapitel 14Mehrschichtige Anwendungen erstellen14-1

    Vorteile des mehrschichtigen Datenbank-modells . . . . . . . . . . . . . . . . . . . . . . 14-2

    Grundlagen der MIDAS-Technologie . . . . . . 14-3

    Struktur einer mehrschichtigen MIDAS-Anwendung . . . . . . . . . . . . . . . . . 14-3

    Die Struktur der Client-Anwendung . . . . 14-4Die Struktur des Anwendungsservers . . . 14-5

    MTS verwenden . . . . . . . . . . . . . . 14-6Remote-Datenmodule verwalten . . . . 14-8Schnittstelle IAppServer verwenden . . 14-8

    Verbindungsprotokoll whlen . . . . . . . . 14-9DCOM-Verbindungen einsetzen . . . . . 14-9Socket-Verbindungen einsetzen . . . . 14-10Web-Verbindungen einsetzen. . . . . . .14-11OLEnterprise verwenden . . . . . . . . .14-11CORBA-Verbindungen einsetzen . . . 14-12

    Mehrschichtige Anwendungen erstellen . . . 14-12Anwendungsserver erstellen . . . . . . . . . 14-13

    Remote-Datenmodul einrichten . . . . . . 14-15TRemoteDataModule konfigurieren. . 14-15TMTSDataModule konfigurieren . . . 14-16TCorbaDataModule konfigurieren . . 14-17

    Daten-Provider fr Anwendungsserver erstellen . . . . . . . . . . . . . . . . . . . 14-18

    Schnittstelle des Anwendungsservers erweitern . . . . . . . . . . . . . . . . . . 14-19

    Callbacks der Schnittstelle des Anwendungsservers hinzufgen . . 14-20

    Schnittstelle des Anwendungsservers unter MTS erweitern. . . . . . . . . . 14-20

    Client-Anwendung erstellen. . . . . . . . . . 14-20Verbindung zum Anwendungsserver

    einrichten . . . . . . . . . . . . . . . . . . 14-21Verbindung ber DCOM angeben . . . 14-22Verbindung ber Sockets angeben . . . 14-23Verbindung ber HTTP angeben. . . . 14-24Verbindung ber OLEnterprise

    angeben . . . . . . . . . . . . . . . . . 14-24Verbindung ber CORBA angeben . . 14-25Broker-Verbindungen . . . . . . . . . . 14-25

    Server-Verbindungen verwalten . . . . . . 14-26Verbindung zum Server einrichten . . 14-26Server-Verbindung schlieen oder

    ndern . . . . . . . . . . . . . . . . . . 14-27Serverschnittstellen aufrufen. . . . . . . . 14-27

    Transaktionen in mehrschichtigen Anwendungen verwalten. . . . . . . . . . . . . . . . . . . . 14-28

    Haupt/Detail-Beziehungen untersttzen . . 14-29Statusinformationen in Remote-Datenmodulen

    untersttzen . . . . . . . . . . . . . . . . . . 14-30Web-basierte MIDAS-Anwendungen erstellen14-32

  • viii

    Client-Anwendung als ActiveX-Steuerelement weitergeben . . . . . . . . . . . . . . . . . 14-33

    ActiveX-Formular fr die Client-Anwendung erstellen. . . . . . . . . . 14-33

    Web-Anwendungen mit InternetExpress erstellen . . . . . . . . . . . . . . . . . . . 14-34

    InternetExpress-Anwendung erstellen . 14-35Javascript-Bibliotheken verwenden. . . 14-36Zugriffs- und Startberechtigung fr den

    Anwendungsserver gewhren. . . . . 14-37XML-Broker verwenden . . . . . . . . . . . 14-37

    XML-Datenpakete abrufen . . . . . . . 14-38Aktualisierung aus XML-

    Datenpaketen eintragen . . . 14-39Web-Seiten mit einem MIDAS-Seitengenerator

    erstellen . . . . . . . . . . . . . . . . . . . 14-40Web-Seiteneditor verwenden . . . . . . 14-41Eigenschaften von Web-Elementen

    festlegen . . . . . . . . . . . . . . . . . 14-42Vorlage des MIDAS-Seitengenerators

    anpassen . . . . . . . . . . . . . . . . . 14-43

    Kapitel 15Provider-Komponenten 15-1Die Datenquelle festlegen . . . . . . . . . . . . . 15-1Aktualisierungen eintragen. . . . . . . . . . . . 15-2Datenpakete zusammenstellen . . . . . . . . . . 15-2

    Felder fr Datenpakete festlegen . . . . . . . 15-3Optionen fr Datenpakete einstellen. . . . . 15-3Datenpaketen benutzerdefinierte Daten

    hinzufgen . . . . . . . . . . . . . . . . . . 15-4Auf Datenanforderungen des Client reagieren .15-5Auf Aktualisierungsanforderungen des Client

    reagieren . . . . . . . . . . . . . . . . . . . . . 15-6Delta-Pakete vor dem Aktualisieren der

    Datenbank bearbeiten . . . . . . . . . . . . 15-7Die Art der Aktualisierung steuern . . . . . 15-8Bestimmte Aktualisierungen berwachen. . 15-9Aktualisierungsfehler beheben . . . . . . . 15-10Aktualisierungen in Datenmengen mit

    mehreren Tabellen . . . . . . . . . . . . . 15-10Auf Client-Ereignisse reagieren . . . . . . . . 15-11Server-Beschrnkungen . . . . . . . . . . . . . 15-11

    Kapitel 16Datenbanksitzungen 16-1Mit einer Sitzungskomponente arbeiten . . . . 16-2

    Die Standardsitzung . . . . . . . . . . . . . . 16-2Zustzliche Sitzungen erzeugen . . . . . . . 16-3

    Sitzungsnamen zuweisen. . . . . . . . . . . 16-4Eine Sitzung aktivieren . . . . . . . . . . . . 16-5Den Start der Sitzung anpassen . . . . . . . 16-6Das Standardverhalten von

    Datenbankverbindungen festlegen . . . . 16-6Datenbankverbindungen erzeugen, ffnen und

    schlieen . . . . . . . . . . . . . . . . . . . 16-7Eine einzelne Datenbankverbindung

    schlieen . . . . . . . . . . . . . . . . . 16-7Alle Datenbankverbindungen schlieen 16-8

    Temporre Datenbankverbindungen trennen . . . . . . . . . . . . . . . . . . . . 16-8

    Nach einer Datenbankverbindung suchen . 16-9Informationen ber eine Sitzung abrufen . 16-9BDE-Aliase . . . . . . . . . . . . . . . . . . 16-10

    Die Sichtbarkeit von Aliasen festlegen .16-11Sitzungs-Aliase fr andere Sitzungen und

    Anwendungen sichtbar machen . . . .16-11Bekannte Aliase, Treiber und Parameter

    festlegen. . . . . . . . . . . . . . . . . .16-11Aliase erzeugen, ndern und lschen . 16-12

    Durch die Datenbank-Komponenten einer Sitzung iterieren . . . . . . . . . . . . . . 16-13

    Paradox-Verzeichnisse angeben . . . . . . 16-14Das Verzeichnis der Steuerdatei

    festlegen. . . . . . . . . . . . . . . . . 16-14Ein Verzeichnis fr temporre Dateien

    festlegen. . . . . . . . . . . . . . . . . 16-14Kennwortgeschtzte Paradox- und dBase-

    Tabellen . . . . . . . . . . . . . . . . . . . 16-15Die Methode AddPassword verwenden16-15Die Methoden RemovePassword und

    RemoveAllPasswords verwenden . . 16-16Die Methode GetPassword und das

    Ereignis OnPassword verwenden . . 16-16Mehrere Sitzungen verwalten . . . . . . . . . 16-17Sitzungskomponenten in Datenmodulen

    verwenden . . . . . . . . . . . . . . . . . . . 16-19

    Kapitel 17Datenbankverbindungen 17-1Persistente und temporre Datenbank-

    Komponenten . . . . . . . . . . . . . . . . . . 17-1Temporre Datenbank-Komponenten. . . . 17-2Datenbank-Komponenten zur Entwurfszeit

    erstellen . . . . . . . . . . . . . . . . . . . . 17-2Datenbank-Komponenten zur Laufzeit

    erstellen . . . . . . . . . . . . . . . . . . . . 17-3Verbindungen steuern . . . . . . . . . . . . . . 17-4

  • ix

    Eine Datenbank-Komponente mit einer Sitzung verbinden . . . . . . . . . . . . . . . . . . . 17-4

    Einen BDE-Alias angeben . . . . . . . . . . . 17-4BDE-Aliasparameter festlegen . . . . . . . . 17-5Server-Login steuern . . . . . . . . . . . . . . 17-6Mit einem Datenbankserver verbinden . . . 17-7Besonderheiten beim Verbinden mit einem

    Remote-Server . . . . . . . . . . . . . . . . 17-8Mit Netzwerkprotokollen arbeiten . . . . 17-8ODBC . . . . . . . . . . . . . . . . . . . . 17-8

    Eine Verbindung zu einem Datenbankserver trennen. . . . . . . . . . . . . . . . . . . . . 17-9

    Datenmengen ohne Trennen der Server-Verbindung schlieen . . . . . . . . . . . . 17-9

    Durch die Datenmengen einer Datenbank-Komponente iterieren . . . . . . . . . . . . 17-9

    Interaktionen zwischen Datenbank- und Sitzungs-komponenten . . . . . . . . . . . . . . . . . . 17-10

    Datenbank-Komponenten in Datenmodulen . 17-10SQL-Anweisungen mit einer TDatabase-

    Komponente ausfhren . . . . . . . . . . . . 17-10SQL-Anweisungen ohne Ergebnismengen

    ausfhren . . . . . . . . . . . . . . . . . . 17-11SQL-Anweisungen mit Ergebnismengen

    ausfhren . . . . . . . . . . . . . . . . . . 17-12SQL-Anweisungen mit Parametern

    ausfhren . . . . . . . . . . . . . . . . . . 17-13

    Kapitel 18Datenmengen 18-1Die Komponente TDataSet . . . . . . . . . . . . 18-2Arten von Datenmengen . . . . . . . . . . . . . 18-3Datenmengen ffnen und schlieen . . . . . . . 18-3Den Status von Datenmengen bestimmen und

    einstellen . . . . . . . . . . . . . . . . . . . . . 18-4Eine Datenmenge deaktivieren . . . . . . . . 18-6Datenmengen durchsuchen . . . . . . . . . . 18-7Die Bearbeitung von Datenmengen

    ermglichen . . . . . . . . . . . . . . . . . . 18-8Das Einfgen neuer Datenstze

    ermglichen . . . . . . . . . . . . . . . . . . 18-9Auf Indizes basierende Suchvorgnge und

    Bereiche in Tabellen . . . . . . . . . . . . 18-10Felder berechnen . . . . . . . . . . . . . . . 18-10Datenstze filtern. . . . . . . . . . . . . . . 18-11Datenstze aktualisieren. . . . . . . . . . . 18-11

    Durch Datenmengen navigieren . . . . . . . . 18-11Die Methoden First und Last . . . . . . . . 18-12Die Methoden Next und Prior . . . . . . . 18-12

    Die Methode MoveBy. . . . . . . . . . . . 18-13Die Eigenschaften EOF und BOF . . . . . 18-13

    EOF . . . . . . . . . . . . . . . . . . . . 18-14BOF . . . . . . . . . . . . . . . . . . . . 18-15

    Datenstze markieren und dorthin zurckkehren . . . . . . . . . . . . . . . 18-15

    Datenmengen durchsuchen . . . . . . . . . . 18-17Die Methode Locate . . . . . . . . . . . . . 18-17Die Methode Lookup . . . . . . . . . . . . 18-18

    Teilmengen von Daten mit Hilfe von Filtern anzeigen und bearbeiten . . . . . . . . . . . 18-19

    Filter aktivieren und deaktivieren . . . . . 18-19Filter erzeugen . . . . . . . . . . . . . . . . 18-20Die Eigenschaft Filter festlegen . . . . . . 18-20Eine Behandlungsroutine fr das Ereignis

    OnFilterRecord schreiben. . . . . . . . . 18-21Filterbehandlungsroutinen zur Laufzeit

    wechseln . . . . . . . . . . . . . . . . 18-22Filteroptionen festlegen. . . . . . . . . . . 18-22Durch Datenstze einer gefilterten Datenmenge

    navigieren . . . . . . . . . . . . . . . . . 18-23Daten bearbeiten . . . . . . . . . . . . . . . . 18-24

    Datenstze bearbeiten. . . . . . . . . . . . 18-24Neue Datenstze hinzufgen . . . . . . . 18-25

    Datenstze einfgen . . . . . . . . . . . 18-26Datenstze anhngen . . . . . . . . . . 18-26

    Datenstze lschen . . . . . . . . . . . . . 18-27Daten in die Datenbank eintragen. . . . . 18-27nderungen rckgngig machen . . . . . 18-28Komplette Datenstze bearbeiten . . . . . 18-28

    Ereignisse fr Datenmengen behandeln . . . 18-30Eine Methode abbrechen . . . . . . . . . . 18-30Das Ereignis OnCalcFields . . . . . . . . . 18-30

    BDE-Datenmengen . . . . . . . . . . . . . . . 18-31BDE-Datenmengen im berblick . . . . . 18-32Datenbank- und Sitzungsverbindungen

    verwalten . . . . . . . . . . . . . . . . . . 18-32Die Eigenschaften DatabaseName und

    SessionName . . . . . . . . . . . . . . 18-33BDE-Handle-Eigenschaften. . . . . . . 18-34

    Zwischengespeicherte Aktualisierungen . 18-34BLOBs zwischenspeichern . . . . . . . . . 18-35

    Kapitel 19Felder 19-1Was sind Feldkomponenten? . . . . . . . . . . 19-2

    Dynamische Feldkomponenten . . . . . . . 19-3Persistente Feldkomponenten . . . . . . . . 19-4

    Persistente Felder erstellen. . . . . . . . . . . . 19-6

  • x

    Persistente Felder anordnen . . . . . . . . . . . 19-7Neue persistente Felder erstellen . . . . . . . . 19-7

    Datenfelder definieren . . . . . . . . . . . . . 19-8Berechnete Felder definieren . . . . . . . . . 19-9Berechnete Felder programmieren . . . . . 19-10Lookup-Felder definieren . . . . . . . . . . 19-11Aggregatfelder definieren . . . . . . . . . . 19-13Persistente Feldkomponenten lschen . . . 19-13

    Eigenschaften und Ereignisse persistenter Felder . . . . . . . . . . . . . . . . . . . . . . 19-14

    Anzeige- und Bearbeitungseigenschaften zur Entwurfszeit festlegen . . . . . . . . . . . 19-14

    Die Eigenschaften von Feldkomponenten zur Laufzeit festlegen . . . . . . . . . . . . . . 19-16

    Attributstze fr Feldkomponenten erstellen . . . . . . . . . . . . . . . . . . . 19-16

    Attributstze mit Feldkomponenten verbinden . . . . . . . . . . . . . . . . . . 19-17

    Attributsatz-Zuordnungen lschen . . . . 19-17Benutzereingaben steuern . . . . . . . . . . 19-18Standardformate fr numerische, Datums- und

    Zeitfelder . . . . . . . . . . . . . . . . . . 19-18Ereignisse verarbeiten . . . . . . . . . . . . 19-19

    Zur Laufzeit mit Feldkomponentenmethoden arbeiten . . . . . . . . . . . . . . . . . . . . . 19-20

    Feldwerte anzeigen, konvertieren und abrufen . . . . . . . . . . . . . . . . . . . . . 19-20

    Werte in Standard-Steuerelementen anzeigen . . . . . . . . . . . . . . . . . . . 19-21

    Feldwerte konvertieren . . . . . . . . . . . 19-21Mit der Standard-Datenmengeneigenschaft

    auf Werte zugreifen. . . . . . . . . . . . . 19-22Mit der Datenmengeneigenschaft Fields auf

    Werte zugreifen . . . . . . . . . . . . . . . 19-23Mit der Datenmengenmethode FieldByName

    auf Werte zugreifen. . . . . . . . . . . . . 19-23Den aktuellen Wert eines Feldes berprfen . 19-24Einen Standardwert fr ein Feld festlegen . . 19-24Datenbeschrnkungen. . . . . . . . . . . . . . 19-24

    Selbstdefinierte Beschrnkungen . . . . . . 19-24Server-Beschrnkungen . . . . . . . . . . . 19-25

    Objektfelder . . . . . . . . . . . . . . . . . . . 19-26ADT- und Array-Felder anzeigen . . . . . 19-27ADT-Felder . . . . . . . . . . . . . . . . . . 19-27

    Auf Werte von ADT-Feldern zugreifen. 19-27Array-Felder . . . . . . . . . . . . . . . . . 19-29

    Auf Werte von Array-Feldern zugreifen 19-29Datenmengenfelder . . . . . . . . . . . . . 19-30

    Datenmengenfelder anzeigen . . . . . . 19-30

    Auf Daten in einer verschachtelten Datenmenge zugreifen . . . . . . . . 19-30

    Referenzfelder . . . . . . . . . . . . . . . . 19-31Referenzfelder anzeigen. . . . . . . . . 19-31Auf Daten in einem Referenzfeld

    zugreifen . . . . . . . . . . . . . . . . 19-31

    Kapitel 20Tabellen 20-1Tabellenkomponenten . . . . . . . . . . . . . . 20-1Tabellenkomponenten erstellen . . . . . . . . . 20-2

    Datenbankposition angeben . . . . . . . . . 20-2Tabellennamen festlegen . . . . . . . . . . . 20-3Tabellentypen fr lokale Tabellen festlegen 20-4Tabellen ffnen und schlieen . . . . . . . . 20-4

    Zugriff auf Tabellen steuern . . . . . . . . . . . 20-5Datenstze suchen . . . . . . . . . . . . . . . . 20-6

    Datenstze ber indizierte Felder suchen . 20-6Datenstze mit Goto-Methoden suchen . 20-7Datenstze mit Find-Methoden suchen . 20-8

    Aktuellen Datensatz nach einer erfolgreichen Suche bestimmen . . . . . . . . . . . . . . 20-8

    Datenstze ber Teilschlssel suchen . . . . 20-9Datenstze ber Sekundrindizes suchen . 20-9Suchoperationen wiederholen oder

    erweitern . . . . . . . . . . . . . . . . . . . 20-9Datenstze sortieren . . . . . . . . . . . . . . 20-10

    Verfgbare Indizes mit GetIndexNames abrufen . . . . . . . . . . . . . . . . . . . 20-10

    Sekundrindizes in IndexName festlegen 20-10dBASE-Indexdateien angeben . . . . . .20-11

    Sortierreihenfolge fr SQL-Tabellen. . . . .20-11Felder in IndexFieldNames angeben . .20-11

    Feldlisten nach einem Index durchsuchen 20-12Mit Teilmengen der Daten arbeiten . . . . . . 20-12

    Unterschiede zwischen Bereichen und Filtern . . . . . . . . . . . . . . . . . . . . 20-12

    Bereiche erstellen und zuweisen. . . . . . 20-13Bereichsanfang festlegen . . . . . . . . 20-13Bereichsende festlegen . . . . . . . . . 20-14Bereichsanfang und -ende festlegen . . 20-15Bereiche mit Teilschlsseln festlegen . 20-15Datenstze ein- oder ausschlieen, die mit

    Bereichsgrenzen bereinstimmen . . 20-16Bereiche zuweisen . . . . . . . . . . . . 20-16Bereiche entfernen . . . . . . . . . . . . 20-16

    Bereiche ndern . . . . . . . . . . . . . . . 20-17Bereichsanfang ndern . . . . . . . . . 20-17Bereichsende ndern . . . . . . . . . . 20-17

  • xi

    Alle Datenstze einer Tabelle lschen . . . . . 20-18Tabellen lschen . . . . . . . . . . . . . . . . . 20-18Tabellen umbenennen . . . . . . . . . . . . . . 20-18Tabellen erstellen. . . . . . . . . . . . . . . . . 20-19Daten aus einer anderen Tabelle importieren . 20-21TBatchMove verwenden . . . . . . . . . . . . 20-22

    Batch-Move-Komponenten erzeugen . . . 20-22Batch-Move-Modi . . . . . . . . . . . . . . 20-23

    Anhngen . . . . . . . . . . . . . . . . . 20-24Aktualisieren . . . . . . . . . . . . . . . 20-24Anhngen und Aktualisieren . . . . . . 20-24Kopieren . . . . . . . . . . . . . . . . . . 20-24Lschen . . . . . . . . . . . . . . . . . . 20-24

    Datentypen zuordnen . . . . . . . . . . . . 20-25Batch-Move-Operationen ausfhren . . . . 20-26Batch-Move-Fehler . . . . . . . . . . . . . . 20-26

    Mit einer Datenbanktabelle verknpfte Tabellenkomponenten synchronisieren . . . 20-27

    Haupt/Detail-Formulare erstellen . . . . . . . 20-28Beispiel fr ein Haupt/Detail-Formular . . 20-28

    Verschachtelte Tabellen . . . . . . . . . . . . . 20-29Verschachtelte Tabellenkomponenten

    einrichten . . . . . . . . . . . . . . . . . . 20-30

    Kapitel 21Abfragen 21-1Abfragen effektiv einsetzen. . . . . . . . . . . . 21-1

    Abfragen fr Desktop-Entwickler . . . . . . 21-2Abfragen fr Server-Entwickler . . . . . . . 21-3

    Datenbanken, auf die mit einer Abfragekomponente zugegriffen werden kann . . . . . . . . . . . . . . . . . . . . . . . . 21-4

    Abfragekomponenten im berblick . . . . . . . 21-4Die Eigenschaft SQL setzen. . . . . . . . . . . . 21-6

    Die Eigenschaft SQL zur Entwurfszeit setzen. . 21-7

    Die Eigenschaft SQL zur Laufzeit setzen . . 21-7Die Eigenschaft SQL direkt setzen . . . . 21-8Die Eigenschaft SQL aus einer Datei

    laden . . . . . . . . . . . . . . . . . . . . 21-8Die Eigenschaft SQL aus einem Stringlisten-

    Objekt laden . . . . . . . . . . . . . . . . 21-9Parameter setzen . . . . . . . . . . . . . . . . . . 21-9

    Parameter zur Entwurfszeit setzen. . . . . 21-10Parameter zur Laufzeit setzen . . . . . . . 21-11Datenquellen fr die Parameterbindung . 21-11

    Abfragen ausfhren . . . . . . . . . . . . . . . 21-13Abfragen zur Entwurfszeit ausfhren . . . 21-13Abfragen zur Laufzeit ausfhren. . . . . . 21-14

    Abfragen ausfhren, die Ergebnismengen liefern . . . . . . . . . . . . . . . . . . 21-14

    Abfragen ausfhren, die keine Ergebnismengen liefern . . . . . . . . 21-15

    Abfragen vorbereiten . . . . . . . . . . . . . . 21-15Abfragen zur Freigabe von Ressourcen

    zurcksetzen. . . . . . . . . . . . . . . . . . 21-15Heterogene Abfragen erstellen . . . . . . . . 21-16Die Ausfhrungsgeschwindigkeit von Abfragen

    erhhen. . . . . . . . . . . . . . . . . . . . . 21-17Bidirektionale Cursor deaktivieren . . . . 21-17

    Mit Ergebnismengen arbeiten . . . . . . . . . 21-18Die Bearbeitung einer Ergebnismenge

    ermglichen . . . . . . . . . . . . . . . . 21-18Local SQL-Syntax fr aktualisierbare

    Ergebnismengen . . . . . . . . . . . . . . 21-18Einschrnkungen fr Abfragen mit

    aktualisierbaren Ergebnismengen . . 21-18Remote-Server-SQL fr aktualisierbare

    Ergebnismengen . . . . . . . . . . . . . . 21-19Einschrnkungen bei der Bearbeitung von

    aktualisierbaren Ergebnismengen . . . . 21-19Nur-Lesen-Ergebnismengen aktualisieren 21-19

    Kapitel 22Stored Procedures 22-1Stored Procedures verwenden. . . . . . . . . . 22-2Mit Stored Procedures arbeiten . . . . . . . . . 22-3

    Stored-Procedure-Komponenten erstellen . 22-3Stored Procedures erstellen . . . . . . . . . 22-4Stored Procedures vorbereiten und

    ausfhren . . . . . . . . . . . . . . . . . . . 22-5Stored Procedures, die Ergebnismengen

    zurckgeben . . . . . . . . . . . . . . . . . 22-6Ergebnismengen mit einer TQuery-

    Komponente abrufen . . . . . . . . . . 22-6Ergebnismengen mit einer TStoredProc-

    Komponente abrufen . . . . . . . . . . 22-7Stored Procedures, die Daten mit Hilfe von

    Parametern zurckliefern. . . . . . . . . . 22-7Einzelne Werte mit einer TQuery-

    Komponente abrufen . . . . . . . . . . 22-7Einzelne Werte mit einer TStoredProc-

    Komponente abrufen . . . . . . . . . . 22-8Stored Procedures, die Aktionen an Daten

    vornehmen . . . . . . . . . . . . . . . . . . 22-9Stored Procedures, die Aktionen ausfhren,

    mit einer TQuery-Komponente aufrufen . . . . . . . . . . . . . . . . . . 22-9

  • xii

    Stored Procedures, die Aktionen ausfhren, mit einer TStoredProc-Komponente aufrufen . . . . . . . . . . . . . . . . . 22-10

    Parameter fr Stored Procedures. . . . . . . . 22-11Eingabeparameter verwenden . . . . . . . 22-12Ausgabeparameter verwenden . . . . . . . 22-12Eingabe-/Ausgabeparameter verwenden . 22-13Ergebnisparameter verwenden . . . . . . . 22-14Zur Entwurfszeit auf Parameter zugreifen 22-14Parameter whrend des Entwurfs

    einstellen. . . . . . . . . . . . . . . . . . . 22-14Parameter zur Laufzeit erstellen . . . . . . 22-16Parameterbindung . . . . . . . . . . . . . . 22-17

    Parameterinformationen whrend des Entwurfs anzeigen. . . . . . . . . . . . . . . . . . . . . 22-17

    berladene Stored Procedures in Oracle . . . 22-18

    Kapitel 23Mit ADO-Komponenten arbeiten 23-1ADO-Komponenten im berblick . . . . . . . . 23-2Verbindungen zu ADO-Datenspeichern

    einrichten . . . . . . . . . . . . . . . . . . . . . 23-3Mit TADOConnection eine Verbindung zu

    einem Datenspeicher einrichten . . . . . . 23-3TADOConnection im Vergleich mit der

    Eigenschaft ConnectionString einer Datenmenge . . . . . . . . . . . . . . . . 23-4

    Verbindungen festlegen . . . . . . . . . . 23-4Auf das Verbindungsobjekt zugreifen . . 23-5Verbindungen aktivieren und

    deaktivieren . . . . . . . . . . . . . . . . 23-5Den Status einer Verbindungskomponente

    abrufen . . . . . . . . . . . . . . . . . . . 23-6Verbindungen optimieren . . . . . . . . . . . 23-6

    Verbindungsattribute angeben . . . . . . 23-7Timeouts steuern . . . . . . . . . . . . . . 23-8Die Anmeldung fr eine Verbindung

    steuern . . . . . . . . . . . . . . . . . . . 23-8Tabellen und Stored Procedures abrufen . . 23-9

    Auf die Datenmengen einer Verbindung zugreifen . . . . . . . . . . . . . . . . . . 23-9

    Auf die Befehle einer Verbindung zugreifen . . . . . . . . . . . . . . . . . 23-10

    Verfgbare Tabellen abrufen. . . . . . . 23-11Verfgbare Stored Procedures abrufen . 23-12

    Mit Verbindungstransaktionen arbeiten . . 23-12Transaktionsmethoden verwenden . . . 23-12Transaktionsereignisse verwenden . . . 23-13

    ADO-Datenmengen verwenden . . . . . . . . 23-13

    Gemeinsame Merkmale aller ADO-Datenmengenkomponenten . . . . . . . 23-14

    Daten ndern . . . . . . . . . . . . . . . 23-14In Datenmengen navigieren . . . . . . 23-14Visuelle datensensitive Steuerelemente

    verwenden . . . . . . . . . . . . . . . 23-15Mit ADO-Datenmengenkomponenten

    Verbindungen zu Datenspeichern herstellen . . . . . . . . . . . . . . . . 23-15

    Mit Datensatzmengen arbeiten. . . . . 23-16Batch-Aktualisierungen verwenden . . 23-17Daten aus Dateien laden und in Dateien

    speichern . . . . . . . . . . . . . . . . 23-19Parameter in Befehlen verwenden . . . 23-20

    TADODataSet verwenden . . . . . . . . . 23-21Mit Befehlen auf Datenmengen

    zugreifen . . . . . . . . . . . . . . . . 23-22TADOTable verwenden. . . . . . . . . . . 23-22

    Zu verwendende Tabellen festlegen . . 23-23TADOQuery verwenden . . . . . . . . . . 23-24

    SQL-Anweisungen festlegen . . . . . . 23-24SQL-Anweisungen ausfhren . . . . . 23-25

    TADOStoredProc verwenden . . . . . . . 23-25Stored Procedures festlegen . . . . . . 23-26Stored Procedures ausfhren . . . . . . 23-27Parameter mit Stored Procedures

    verwenden . . . . . . . . . . . . . . . 23-27Befehle ausfhren . . . . . . . . . . . . . . . . 23-30

    Befehle festlegen. . . . . . . . . . . . . . . 23-30Die Methode Execute verwenden . . . . . 23-31Befehle abbrechen . . . . . . . . . . . . . . 23-31Mit Befehlen auf Ergebnismengen

    zugreifen . . . . . . . . . . . . . . . . . . 23-32Befehlsparameter verarbeiten . . . . . . . 23-32

    Kapitel 24Client-Datenmengen 24-1Client-Datenmengen . . . . . . . . . . . . . . . 24-2

    Durch die Daten einer Client-Datenmenge navigieren . . . . . . . . . . . . . . . . . . 24-2

    Datenstze einschrnken . . . . . . . . . . . 24-2Haupt/Detail-Beziehungen . . . . . . . . . 24-3Datenwerte beschrnken . . . . . . . . . . . 24-4Daten das Attribut Nur-Lesen zuweisen . . 24-4Daten bearbeiten . . . . . . . . . . . . . . . 24-5

    nderungen rckgngig machen . . . . 24-5nderungen speichern . . . . . . . . . . 24-6

    Sortieren und Indizieren . . . . . . . . . . . 24-6Einen neuen Index hinzufgen. . . . . . 24-7

  • xiii

    Indizes entfernen und wechseln . . . . . 24-8Daten mit Indizes gruppieren . . . . . . . 24-8Bei Bedarf indizieren . . . . . . . . . . . . 24-9

    Berechnete Felder hinzufgen . . . . . . . . 24-9Intern berechnete Felder in Client-

    Datenmengen verwenden . . . . . . . 24-10Gewartete Aggregate verwenden . . . . . 24-10

    Aggregate angeben . . . . . . . . . . . . 24-10Datensatzgruppen zusammenfassen . . 24-12Aggregatwerte abrufen. . . . . . . . . . 24-13

    Anwendungsspezifische Informationen zu den Daten hinzufgen . . . . . . . . . . . 24-13

    Daten aus einer anderen Datenmenge kopieren . . 24-13

    Daten direkt zuweisen . . . . . . . . . . . . 24-14Datenmengen replizieren . . . . . . . . . . 24-15

    Eine Client-Datenmenge mit einem Daten-Provider verwenden . . . . . . . . . . . . . . . . . . . 24-15

    Einen Daten-Provider festlegen. . . . . . . 24-16Parameter vom Anwendungsserver

    abrufen. . . . . . . . . . . . . . . . . . . . 24-16Parameter an den Anwendungsserver bergeben

    24-17Parameter fr Abfragen oder Stored

    Procedures senden . . . . . . . . . . . 24-18Datenstze durch Parameter

    einschrnken. . . . . . . . . . . . . . . 24-18Die Datenmenge auf dem Anwendungsserver

    berschreiben . . . . . . . . . . . . . . . . 24-18Daten von einem Anwendungsserver

    anfordern . . . . . . . . . . . . . . . . . . 24-19Beschrnkungen verarbeiten . . . . . . . . 24-21

    Server-Beschrnkungen verarbeiten . . 24-21Benutzerdefinierte Beschrnkungen

    hinzufgen. . . . . . . . . . . . . . . . 24-22Datenstze aktualisieren. . . . . . . . . . . 24-22Aktualisierungen eintragen . . . . . . . . . 24-23

    Aktualisierungsfehler bereinigen . . . . 24-24Daten aktualisieren. . . . . . . . . . . . . . 24-25Mit Provider-Komponenten

    kommunizieren . . . . . . . . . . . . . . . 24-25Eine Client-Datenmenge mit unstrukturierten

    Daten verwenden . . . . . . . . . . . . . . . 24-26Eine neue Datenmenge erstellen . . . . . . 24-27Daten aus einer Datei oder einem Stream

    laden . . . . . . . . . . . . . . . . . . . . . 24-27nderungen in die Daten schreiben . . . . 24-27Daten in einer Datei oder einem Stream

    speichern . . . . . . . . . . . . . . . . . . 24-28

    Kapitel 25Zwischengespeicherte Aktualisierungen25-1

    Wann werden zwischengespeicherte Aktualisierungen eingesetzt? . . . . . . . . . 25-1

    Die Realisierung im berblick. . . . . . . . . . 25-2Die Zwischenspeicherung aktivieren und

    deaktivieren . . . . . . . . . . . . . . . . . 25-3Datenstze abrufen . . . . . . . . . . . . . . 25-4Zwischengespeicherte Aktualisierungen

    zurckschreiben . . . . . . . . . . . . . . . 25-4Aktualisierungen mit Datenbank-

    Komponenten eintragen. . . . . . . . . 25-5Zurckschreiben bei Datenmengen-

    komponenten . . . . . . . . . . . . . . . 25-6Haupt/Detailtabellen aktualisieren . . . 25-7

    Anstehende Aktualisierungen verwerfen . 25-8Anstehende Aktualisierungen verwerfen

    und die Zwischenspeicherung deaktivieren. . . . . . . . . . . . . . . . 25-8

    Nur anstehende Aktualisierungen verwerfen . . . . . . . . . . . . . . . . . 25-8

    Aktualisierungen am aktuellen Datensatz verwerfen . . . . . . . . . . . . . . . . 25-9

    Gelschte Datenstze wiederherstellen . . . 25-9Die Datensatztypen fr die Datenmenge

    festlegen . . . . . . . . . . . . . . . . . . 25-10Aktualisierungsstatus prfen . . . . . . . .25-11

    Update-Objekte . . . . . . . . . . . . . . . . . 25-12Die Eigenschaft UpdateObject einer

    Datenmenge . . . . . . . . . . . . . . . . 25-12Ein einzelnes Update-Objekt verwenden . . .

    25-13Mehrere Update-Objekte verwenden . 25-13

    SQL-Anweisungen fr Update-Komponenten erstellen . . . . . . . . . . . . . . . . . . . 25-14

    SQL-Anweisungen zur Entwurfszeit erstellen . . . . . . . . . . . . . . . . . 25-15

    Parameterersetzung in SQL-Anweisungen. . . . . . . . . . . . . . 25-16

    SQL-Anweisungen schreiben. . . . . . 25-17Die Eigenschaft Query einer Update-

    Komponente . . . . . . . . . . . . . . 25-18Die Eigenschaften DeleteSQL, InsertSQL und

    ModifySQL . . . . . . . . . . . . . . . 25-19Update-Anweisungen ausfhren . . . . . 25-20

    Die Methode Apply . . . . . . . . . . . 25-20Die Methode SetParams. . . . . . . . . 25-21Die Methode ExecSQL . . . . . . . . . 25-21

  • xiv

    Eine Datenmenge mit Datenmengenkomponenten aktualisieren25-22

    Schreibgeschtzte Ergebnismengen aktualisieren . . . . . . . . . . . . . . . . . . 25-23

    Den Aktualisierungsvorgang steuern . . . . . 25-24Wann mu der Aktualisierungsproze

    berwacht werden? . . . . . . . . . . . . 25-24Eine Ereignisbehandlungsroutine fr

    OnUpdateRecord erzeugen . . . . . . . . 25-25Fehlerbehandlung . . . . . . . . . . . . . . . . 25-26

    Referenz auf die betroffene Datenmenge . 25-27Feststellen, wie der aktuelle Datensatz

    gendert wurde . . . . . . . . . . . . . . . 25-27Die durchzufhrende Aktion festlegen . . 25-28Eine Fehlermeldung definieren . . . . . . . 25-29Die Feldeigenschaften OldValue, NewValue

    und CurValue . . . . . . . . . . . . . . . . 25-29

    Kapitel 26Datensensitive Steuerelemente 26-1Datensensitive Steuerelemente im berblick . . 26-1

    Datensensitive Steuerelemente einer Datenmenge zuordnen. . . . . . . . . . . . 26-3

    Daten bearbeiten und aktualisieren . . . . . 26-3Den Bearbeitungsmodus aktivieren . . . 26-3Daten in einem Steuerelement bearbeiten26-4

    Die Datenanzeige aktivieren und deaktivieren . . . . . . . . . . . . . . . . . . 26-5

    Datenanzeige aktualisieren . . . . . . . . . . 26-6Maus-, Tastatur- und Timer-Ereignisse. . . . 26-6

    Datenquellen verwenden . . . . . . . . . . . . . 26-6TDataSource-Eigenschaften verwenden . . . 26-7

    Eigenschaft DataSet einstellen. . . . . . . 26-7Eigenschaft Name einstellen. . . . . . . . 26-7Eigenschaft Enabled einstellen . . . . . . 26-8Eigenschaft AutoEdit einstellen . . . . . . 26-8

    TDataSource-Ereignisse verwenden . . . . . 26-8Ereignis OnDataChange verwenden . . . 26-8Ereignis OnUpdateData verwenden . . . 26-9Ereignis OnStateChange verwenden . . . 26-9

    Steuerelemente zur Darstellung eines einzelnen Feldes . . . . . . . . . . . . . . . . . . . . . . 26-10

    Felder als Beschriftung anzeigen . . . . . . 26-10Feldinhalte in Eingabefeldern anzeigen und

    bearbeiten . . . . . . . . . . . . . . . . . . 26-10Textfelder in einem Memo-Steuerelement

    anzeigen und bearbeiten. . . . . . . . . . 26-11Text in einem RTF-Eingabefeld anzeigen und

    bearbeiten . . . . . . . . . . . . . . . . . . 26-12

    Grafikfelder in einem Bild-Steuerelement anzeigen und bearbeiten . . . . . . . . . 26-12

    Daten in Listen- und Kombinationsfeldern anzeigen und bearbeiten . . . . . . . . . 26-13

    Daten in Listenfeldern anzeigen und bearbeiten . . . . . . . . . . . . . . . . 26-13

    Daten in Kombinationsfeldern anzeigen und bearbeiten . . . . . . . . . . . . . . . . 26-14

    Daten in Lookup-Listen und -Kombinationsfeldern anzeigen und bearbeiten . . . . . . . . . . . . . . . . . 26-15

    Listen, die auf Lookup-Feldern basieren26-15Listen, die auf einer sekundren Datenquelle

    basieren . . . . . . . . . . . . . . . . . 26-16Eigenschaften von Lookup-Listen und

    Lookup-Kombinationsfeldern . . . . 26-17Inkrementelle Suche in Listen . . . . . 26-17

    Boolesche Feldwerte und Kontrollfelder . 26-18Feldwerte mit Optionsfeldern

    einschrnken . . . . . . . . . . . . . . . . 26-19Daten mit TDBGrid anzeigen und bearbeiten 26-20

    Gitter im Standardstatus verwenden . . . 26-21Angepate Gitter erstellen . . . . . . . . . 26-21

    Persistente Spalten Grundlagen . . . 26-22Quelle einer Spalteneigenschaft zur Laufzeit

    festlegen. . . . . . . . . . . . . . . . . 26-23Persistente Spalten erstellen . . . . . . 26-23Persistente Spalten lschen . . . . . . . 26-24Reihenfolge persistenter Spalten ndern26-24Lookup-Spalte definieren . . . . . . . . 26-25Auswahllistenspalte definieren . . . . 26-25Schaltflche in Spalte einfgen . . . . . 26-25Spalteneigenschaften beim Entwurf

    einstellen . . . . . . . . . . . . . . . . 26-26Standardwerte einer Spalte

    wiederherstellen . . . . . . . . . . . . 26-27ADT- und Array-Felder anzeigen . . . . . 26-27Gitteroptionen einstellen . . . . . . . . . . 26-29Daten im Gitter bearbeiten . . . . . . . . . 26-30Spaltenreihenfolge beim Entwurf ndern 26-31Spaltenreihenfolge zur Laufzeit ndern . 26-31

    Gitterdarstellung steuern . . . . . . . . 26-31Zur Laufzeit auf Benutzeraktionen

    reagieren . . . . . . . . . . . . . . . . . . 26-32Gitter mit anderen datensensitiven

    Steuerelementen erstellen . . . . . . . . . . 26-33Navigation und Bearbeitung von

    Datenmengen . . . . . . . . . . . . . . . . . 26-34

  • xv

    Navigator-Schaltflchen ein- und ausblenden . . . . . . . . . . . . . . . . . 26-35

    Navigator-Schaltflchen zur Entwurfszeit ein- und ausblenden . . . . . . . . . . 26-35

    Navigator-Schaltflchen zur Laufzeit ein- und ausblenden . . . . . . . . . . . . . 26-36

    Hilfehinweise anzeigen . . . . . . . . . . . 26-37Ein Navigator fr mehrere Datenmengen . 26-37

    Kapitel 27Entscheidungskomponenten 27-1berblick . . . . . . . . . . . . . . . . . . . . . . 27-1Kreuztabellen. . . . . . . . . . . . . . . . . . . . 27-2

    Eindimensionale Kreuztabellen. . . . . . . . 27-3Mehrdimensionale Kreuztabellen . . . . . . 27-3

    Entscheidungskomponenten verwenden . . . . 27-3Datenmengen und Entscheidungs-

    komponenten . . . . . . . . . . . . . . . . . . . 27-5Entscheidungsdatenmengen mit TQuery oder TTable erzeugen . . . . . . . . . . . . . 27-6Entscheidungsdatenmengen mit dem

    Entscheidungsabfragen-Editor erzeugen . 27-6Der Editor fr Entscheidungsabfragen . . 27-6

    Eigenschaften von TDecisionQuery . . . . . 27-7Mit Entscheidungswrfeln arbeiten . . . . . . . 27-8

    Eigenschaften und Ereignisse . . . . . . . . . 27-8Der Editor fr den Entscheidungswrfel . . 27-8

    Dimensionseinstellungen anzeigen und ndern . . . . . . . . . . . . . . . . . . . 27-9

    Grenzwerte fr Dimensionen und Zusammenfassungen . . . . . . . . . . . 27-9

    Gestaltungsoptionen anzeigen und ndern . . . . . . . . . . . . . . . . . . . 27-10

    Mit Entscheidungsquellen arbeiten . . . . . . 27-10Eigenschaften und Ereignisse . . . . . . . . 27-10

    Mit Entscheidungspivots arbeiten . . . . . . . 27-11Eigenschaften von Entscheidungspivots. . 27-11

    Entscheidungsgitter erstellen und verwenden 27-12Entscheidungsgitter erstellen . . . . . . . . 27-12Mit Entscheidungsgittern arbeiten . . . . . 27-12

    Felder im Entscheidungsgitter ffnen und schlieen . . . . . . . . . . . . . . . . . . 27-13Entscheidungsgitter reorganisieren. . . 27-13Detaildaten in Entscheidungsgittern anzeigen . . . . . . . . . . . . . . . . . . 27-13Die Dimensionszahl in Entscheidungsgittern

    begrenzen . . . . . . . . . . . . . . . . 27-13Eigenschaften von Entscheidungsgittern . 27-14

    Entscheidungsgraphen erstellen und verwenden . . . . . . . . . . . . . . . . . . . 27-15

    Entscheidungsgraphen erstellen. . . . . . 27-15Mit Entscheidungsgraphen arbeiten . . . 27-15Der Informationsgehalt von Entscheidungs-

    graphen . . . . . . . . . . . . . . . . . . . 27-17Entscheidungsgraphen gestalten . . . . . 27-17

    Standardwerte fr Entscheidungsgraphen als Schablonen . . . . . . . . . . . . . 27-18

    Reihen in Entscheidungsgraphen gestalten. . . . . . . . . . . . . . . . . 27-19

    Entscheidungskomponenten zur Laufzeit . . 27-20Entscheidungspivots zur Laufzeit . . . . . 27-20Entscheidungsgitter zur Laufzeit . . . . . 27-21Entscheidungsgraphen zur Laufzeit . . . 27-21

    Entscheidungskomponenten und Speicher-verwaltung. . . . . . . . . . . . . . . . . . . 27-22

    Maximalwerte fr Dimensionen, Zusammenfassungen und Zellen . . . . 27-22

    Den Status der Dimensionen einstellen . . 27-22Permanent ausgelagerte Dimensionen . . 27-23

    Teil IIIVerteilte Anwendungen entwickeln

    Kapitel 28CORBA-Anwendungen 28-1CORBA-Anwendungen im berblick . . . . . 28-2

    Stubs und Skeletons. . . . . . . . . . . . . . 28-3Smart Agents. . . . . . . . . . . . . . . . . . 28-3Server-Anwendungen aktivieren . . . . . . 28-4Dynamisches Binden von Schnittstellen

    aufrufen. . . . . . . . . . . . . . . . . . . . 28-4CORBA-Server schreiben . . . . . . . . . . . . 28-5

    CORBA-Experten . . . . . . . . . . . . . . . 28-5Objektschnittstellen definieren. . . . . . . . 28-6Automatisch generierter Code . . . . . . . . 28-8Server-Schnittstellen registrieren . . . . . . 28-9

    Schnittstellen bei der Schnittstellenablage registrieren . . . . . . . . . . . . . . . . 28-9

    Schnittstellen beim Object Activation Daemon registrieren . . . . . . . . . . .28-11

    CORBA-Clients schreiben . . . . . . . . . . . 28-13Stubs verwenden . . . . . . . . . . . . . . 28-13Die dynamische Aufrufschnittstelle

    verwenden . . . . . . . . . . . . . . . . . 28-14Schnittstelle abrufen . . . . . . . . . . . 28-15Schnittstellen mit der DII aufrufen. . . 28-15

    CORBA-Anwendungen anpassen . . . . . . 28-17

  • xvi

    Objekte in der Benutzeroberflche anzeigen . . . . . . . . . . . . . . . . . . . 28-17

    CORBA-Objekte bereitstellen und deaktivieren . . . . . . . . . . . . . . . . . 28-18

    Client-Informationen an Server-Objekte bergeben . . . . . . . . . . . . . . . . . . 28-18

    CORBA-Anwendungen weitergeben . . . . . 28-18Smart Agents konfigurieren. . . . . . . . . 28-19

    Einen Smart Agent starten . . . . . . . . 28-20ORB-Domnen konfigurieren . . . . . . 28-20Smart Agents in verschiedenen lokalen

    Netzwerken verbinden . . . . . . . . . 28-21

    Kapitel 29Internet-Server-Anwendungen 29-1Terminologie und Standards . . . . . . . . . . . 29-1

    Bestandteile einer URL . . . . . . . . . . . . 29-2URI und URL . . . . . . . . . . . . . . . . 29-3

    Informationen in den Headern von HTTP-Anforderungen . . . . . . . . . . . . . . . . 29-3

    HTTP-Server-Aktivitten . . . . . . . . . . . . . 29-3Client-Anforderungen zusammenstellen . . 29-4Client-Anforderungen bedienen . . . . . . . 29-4Auf Client-Anforderungen antworten . . . . 29-5

    Web-Server-Anwendungen . . . . . . . . . . . . 29-5Arten von Web-Server-Anwendungen. . . . 29-6

    ISAPI und NSAPI . . . . . . . . . . . . . . 29-6CGI-Programme . . . . . . . . . . . . . . 29-6Win-CGI-Programme. . . . . . . . . . . . 29-6

    Web-Server-Anwendungen erstellen. . . . . 29-7Das Web-Modul . . . . . . . . . . . . . . . . 29-7Das Web-Anwendungsobjekt . . . . . . . . . 29-8

    Die Struktur einer Web-Server-Anwendung . . 29-8Der Web-Dispatcher . . . . . . . . . . . . . . . 29-10

    Aktionen zum Dispatcher hinzufgen. . . 29-10Anforderungsbotschaften verteilen . . . . 29-10

    Aktionselemente . . . . . . . . . . . . . . . . . 29-11Das Auslsen von Aktionselementen

    festlegen . . . . . . . . . . . . . . . . . . . 29-11Die Ziel-URL . . . . . . . . . . . . . . . 29-11Der Anforderungsmethodentyp . . . . 29-12Aktionselemente aktivieren und

    deaktivieren . . . . . . . . . . . . . . . 29-12Ein Standard-Aktionselement festlegen 29-13

    Mit Aktionselementen auf Anforderungsbotschaften antworten. . . 29-13

    Die Antwort senden . . . . . . . . . . . 29-14Mehrere Aktionselemente verwenden . 29-14

    Auf Client-Anforderungsinformationen zugreifen . . . . . . . . . . . . . . . . . . . . 29-14

    Eigenschaften, die Header-Informationen zur Anforderung enthalten . . . . . . . . . . 29-15

    Eigenschaften, die das Ziel bezeichnen 29-15Eigenschaften, die den Web-Client

    beschreiben . . . . . . . . . . . . . . . 29-15Eigenschaften, die auf den Zweck der

    Anforderung hinweisen . . . . . . . . 29-16Eigenschaften, die die erwartete Antwort

    beschreiben . . . . . . . . . . . . . . . 29-16Eigenschaften, die den Inhalt

    beschreiben . . . . . . . . . . . . . . . 29-16Der Inhalt von HTTP-Anforderungs-

    botschaften . . . . . . . . . . . . . . . . . 29-17HTTP-Anwortbotschaften erzeugen . . . . . 29-17

    Den Antwort-Header fllen . . . . . . . . 29-17Den Antwortstatus anzeigen . . . . . . 29-18Auf eine erforderliche Client-Aktion

    hinweisen . . . . . . . . . . . . . . . . 29-18Die Server-Anwendung beschreiben . 29-18Den Inhalt beschreiben . . . . . . . . . 29-19

    Den Antwortinhalt festlegen . . . . . . . . 29-19Die Antwort senden. . . . . . . . . . . . . 29-19

    Den Inhalt von Antwortbotschaften generieren . . . . . . . . . . . . . . . . . . . 29-20

    Seitengeneratoren einsetzen . . . . . . . . 29-20HTML-Vorlagen . . . . . . . . . . . . . 29-20Vordefinierte HTML-transparente Tag-

    Namen verwenden. . . . . . . . . . . 29-21Die HTML-Vorlage definieren . . . . . 29-22HTML-transparente Tags konvertieren 29-22Seitengeneratoren und Aktions-

    elemente. . . . . . . . . . . . . . . . . 29-22Seitengeneratoren verketten . . . . . . 29-23

    Datenbankinformationen in Antworten integrieren . . . . . . . . . . . . . . . . . . . 29-24

    Eine Sitzung zum Web-Modul hinzufgen 29-25Datenbankinformationen in HTML

    darstellen . . . . . . . . . . . . . . . . . . 29-25Datenmengen-Seitengeneratoren

    verwenden . . . . . . . . . . . . . . . 29-25Tabellengeneratoren verwenden . . . . 29-26Die Tabellenattribute festlegen . . . . . 29-26Die Zeilenattribute festlegen . . . . . . 29-27Die Spalten festlegen . . . . . . . . . . 29-27Tabellen in HTML-Dokumente einbetten . . . . . . . . . . . . . . . . . 29-27

  • xvii

    Einen Datenmengen-Tabellengenerator einrichten . . . . . . . . . . . . . . . . 29-28

    Einen Abfrage-Tabellengenerator einrichten . . . . . . . . . . . . . . . . 29-28

    Server-Anwendungen testen . . . . . . . . . . 29-28ISAPI- und NSAPI-Anwendungen testen . 29-29

    Unter Windows NT testen . . . . . . . . 29-29Mit einem Microsoft IIS-Server testen . 29-29Unter MTS testen . . . . . . . . . . . . . 29-30Mit einem Windows 95 Personal-Web-Server testen . . . . . . . . . . . . . . . . . . . . 29-31Mit Netscape Server 2.0 testen . . . . . 29-32

    CGI- und Win-CGI-Anwendungen testen . 29-33Den Server simulieren . . . . . . . . . . 29-33Als DLL testen . . . . . . . . . . . . . . 29-33

    Kapitel 30Arbeiten mit Sockets 30-1Dienste implementieren . . . . . . . . . . . . . . 30-1

    Was sind Dienstprotokolle? . . . . . . . . . . 30-2Mit Anwendungen kommunizieren . . . 30-2

    Dienste und Schnittstellen. . . . . . . . . . . 30-2Typen von Socket-Verbindungen. . . . . . . . . 30-3

    Client-Verbindungen. . . . . . . . . . . . . . 30-3Empfangende Verbindungen . . . . . . . . . 30-3Server-Verbindungen . . . . . . . . . . . . . 30-3

    Die Sockets beschreiben . . . . . . . . . . . . . . 30-4Den Host beschreiben . . . . . . . . . . . . . 30-4

    Zwischen einem Host-Namen und einer IP-Adresse whlen . . . . . . . . . . . . . . 30-5

    Schnittstellen verwenden . . . . . . . . . . . 30-5Socket-Komponenten . . . . . . . . . . . . . . . 30-6

    Client-Sockets. . . . . . . . . . . . . . . . . . 30-6Den gewnschten Server angeben . . . . 30-6Die Verbindung aufbauen . . . . . . . . . 30-7Informationen ber die Verbindung ermitteln . . . . . . . . . . . . . . . . . . . 30-7Die Verbindung beenden. . . . . . . . . . 30-7

    Server-Sockets . . . . . . . . . . . . . . . . . 30-7Die Schnittstelle angeben . . . . . . . . . 30-8Client-Anforderungen empfangen . . . . 30-8Verbindungen zu Clients aufbauen . . . . 30-8Informationen ber Verbindungen

    ermitteln . . . . . . . . . . . . . . . . . . 30-8Die Server-Verbindung beenden . . . . . 30-9

    Auf Socket-Ereignisse antworten . . . . . . . . 30-9Fehlerereignisse. . . . . . . . . . . . . . . . . 30-9Client-Ereignisse . . . . . . . . . . . . . . . 30-10Server-Ereignisse . . . . . . . . . . . . . . . 30-10

    Ereignisse bei empfangenden Verbindungen . . . . . . . . . . . . . .30-11

    Ereignisse bei Client-Verbindungen . . .30-11Informationen ber Socket-Verbindungen lesen

    und schreiben . . . . . . . . . . . . . . . . . 30-12Nicht-blockierende Verbindungen . . . . 30-12

    Lese- und Schreib-Ereignisse . . . . . . 30-12Blockierende Verbindungen . . . . . . . . 30-13

    Verwenden von Threads bei blockierenden Verbindungen . . . . . . . . . . . . . 30-13

    Verwenden von TWinSocketStream . . 30-14Client-Threads schreiben . . . . . . . . 30-14Server-Threads schreiben . . . . . . . . 30-15

    Teil IVBenutzerdefinierte Komponenten erzeugen

    Kapitel 31Die Komponentenentwicklung im berblick 31-1

    Die Bibliothek visueller Komponenten . . . . . 31-1Komponenten und Klassen . . . . . . . . . . . 31-2Wie werden Komponenten erzeugt? . . . . . . 31-3

    Vorhandene Steuerelemente modifizieren . 31-3Fensterorientierte Steuerelemente erzeugen 31-4Grafische Steuerelemente erzeugen . . . . . 31-4Unterklassen von Windows-Steuerelementen

    erzeugen . . . . . . . . . . . . . . . . . . . 31-5Nichtvisuelle Komponenten erzeugen . . . 31-5

    Was zeichnet Komponenten aus? . . . . . . . . 31-5Abhngigkeiten vermeiden . . . . . . . . . 31-6Eigenschaften, Ereignisse und Methoden . 31-6

    Eigenschaften. . . . . . . . . . . . . . . . 31-6Ereignisse . . . . . . . . . . . . . . . . . . 31-7Methoden . . . . . . . . . . . . . . . . . . 31-7

    Grafik kapseln . . . . . . . . . . . . . . . . . 31-8Registrierung. . . . . . . . . . . . . . . . . . 31-8

    Eine neue Komponente erzeugen . . . . . . . . 31-9Der Komponentenexperte . . . . . . . . . 31-10Eine Komponente manuell erzeugen . . . 31-12

    Eine Unit erzeugen . . . . . . . . . . . 31-12Die Komponente ableiten . . . . . . . . 31-12Beispiel fr die Ableitung einer

    Komponente . . . . . . . . . . . . . . 31-13Die Komponente registrieren . . . . . . 31-13

    Komponenten vor der Installation testen . . 31-14

  • xviii

    Kapitel 32Objektorientierte Programmierung fr Komponentenentwickler 32-1

    Neue Klassen definieren . . . . . . . . . . . . . 32-2Neue Klassen ableiten . . . . . . . . . . . . . 32-2

    ndern der Voreinstellungen einer Klasse zur Vermeidung von Wiederholung . . 32-2

    Einer Klasse neue Fhigkeiten hinzufgen. . . . . . . . . . . . . . . . . 32-3

    Eine neue Komponentenklasse deklarieren .32-3Vorfahren, Nachkommen und Klassen-

    hierarchien . . . . . . . . . . . . . . . . . . . . 32-4Zugriffssteuerung . . . . . . . . . . . . . . . . . 32-4

    Implementierungsdetails verbergen . . . . . 32-5Die Schnittstelle des Komponentenentwicklers

    definieren . . . . . . . . . . . . . . . . . . . 32-6Die Laufzeit-Schnittstelle definieren . . . . . 32-7Die Entwurfszeit-Schnittstelle definieren . . 32-7

    Dispatch-Methoden . . . . . . . . . . . . . . . . 32-8Statische Methoden . . . . . . . . . . . . . . 32-8Virtuelle Methoden. . . . . . . . . . . . . . . 32-9

    Methoden berschreiben. . . . . . . . . . 32-9Dynamische Methoden. . . . . . . . . . 32-10

    Abstrakte Klassenelemente . . . . . . . . . . . 32-10Klassen und Zeiger . . . . . . . . . . . . . . . 32-11

    Kapitel 33Eigenschaften erstellen 33-1Wozu dienen Eigenschaften? . . . . . . . . . . . 33-1Typen von Eigenschaften . . . . . . . . . . . . . 33-2Geerbte Eigenschaften als published

    deklarieren . . . . . . . . . . . . . . . . . . . . 33-3Eigenschaften definier