1. Trang chủ
  2. » Công Nghệ Thông Tin

delphi 5 - entwicklerhandbuch

1,1K 2,2K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 1.142
Dung lượng 5,54 MB

Nội dung

Entwicklerhandbuch Inprise GmbH, Robert-Bosch-Straße 11, D-63225 Langen Borland ® Delphi5 für 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-Straße 11, D-63225 Langen, Telefon 06103/979-0, Fax 06103/979-290 Update/Übertragung ins Deutsche: Krieger, Zander & Partner GmbH, München Satz: Krieger, Zander & Partner GmbH, München Hauptsitz: 100 Enterprise Way, P.O. Box 660001, Scotts Valley, CA 95067-0001, +1-(408)431-1000 Niederlassungen in: Australien, Deutschland, Frankreich, Großbritannien, Hong Kong, Japan, Kanada, Lateinamerika, Mexiko, den Niederlanden und Taiwan HDA1350GE21001 i Kapitel 1 Einführung 1-1 Inhalt dieses Handbuchs . . . . . . . . . . . . . 1-1 Typographische Konventionen . . . . . . . . . . 1-3 Inprise Developer Support Services . . . . . . . 1-3 Gedruckte Dokumentation . . . . . . . . . . . . 1-3 Teil I Programmieren mit Delphi Kapitel 2 Object Pascal mit der VCL verwenden 2-1 Object Pascal und die VCL . . . . . . . . . . . . 2-1 Das Objektmodell . . . . . . . . . . . . . . . . . 2-2 Was ist ein Objekt? . . . . . . . . . . . . . . . 2-2 Ein Delphi-Objekt untersuchen . . . . . . 2-3 Daten und Quelltext von einem Objekt erben 2-5 Objekte, Komponenten und Steuer- elemente . . . . . . . . . . . . . . . . . . 2-6 Gültigkeitsbereich und Qualifizierer. . . . . 2-6 private-, protected-, public- und published-Deklarationen. . . . . . . . . 2-7 Objektvariablen verwenden. . . . . . . . . . 2-8 Objekte erstellen, instantiieren und freigeben. . . . . . . . . . . . . . . . . . . . 2-9 Komponenten und Eigentümer . . . . . .2-10 Komponenten verwenden . . . . . . . . . . . .2-10 Die Delphi-Standardkomponenten. . . . . .2-10 Eigenschaften aller visuellen Komponenten . . . . . . . . . . . . . . .2-11 Textkomponenten. . . . . . . . . . . . . .2-13 Spezialisierte Eingabekomponenten . . . 2-15 Schaltflächen und ähnliche Steuerelemente . . . . . . . . . . . . . .2-17 Mit Listen arbeiten . . . . . . . . . . . . .2-19 Komponenten gruppieren . . . . . . . . .2-21 Visuelle Rückmeldungen . . . . . . . . .2-23 Gitterkomponenten. . . . . . . . . . . . .2-24 Grafikkomponenten . . . . . . . . . . . .2-25 Windows-Standarddialogfelder. . . . . .2-26 Eigenschaften von Komponenten festlegen .2-26 Den Objektinspektor verwenden . . . . .2-27 Eigenschaften zur Laufzeit festlegen . . .2-27 Methoden aufrufen. . . . . . . . . . . . . . .2-28 Mit Ereignissen und Ereignisbehandlungsroutinen arbeiten . . 2-28 Eine neue Ereignisbehandlungsroutine erstellen . . . . . . . . . . . . . . . . . . 2-28 Eine Behandlungsroutine für das Standardereignis einer Komponente erstellen . . . . . . . . . . . . . . . . . . 2-29 Ereignisbehandlungsroutinen suchen . . 2-29 Ereignissen eine vorhandene Behandlungsroutine zuordnen . . . . . 2-29 Menüereignissen eine Behandlungsroutine zuordnen . . . . . . . . . . . . . . . . . 2-30 Ereignisbehandlungsroutinen löschen . 2-31 Hilfsobjekte verwenden . . . . . . . . . . . . . 2-31 Mit Listen arbeiten . . . . . . . . . . . . . . 2-32 Mit Stringlisten arbeiten . . . . . . . . . . . 2-32 Stringlisten laden und speichern. . . . . 2-33 Eine neue Stringliste erstellen . . . . . . 2-33 Mit den Strings in einer Liste arbeiten. . 2-35 Einer Stringliste Objekte zuordnen . . . 2-37 Mit Registrierung und INI-Dateien arbeiten 2-38 Streams verwenden . . . . . . . . . . . . . . 2-38 Datenmodule und Remote-Datenmodule verwenden . . . . . . . . . . . . . . . . . . . . 2-38 Datenmodule erstellen und bearbeiten . . . 2-39 Business Rules in einem Datenmodul erstellen . . . . . . . . . . . . . . . . . . 2-39 In einem Formular auf ein Datenmodul zugreifen . . . . . . . . . . . . . . . . . . . 2-40 Ein Remote-Datenmodul einem Anwendungsserver hinzufügen . . . . . . 2-40 Die Objektablage verwenden . . . . . . . . . . 2-40 Elemente in einem Projekt gemeinsam verwenden . . . . . . . . . . . . . . . . . . 2-41 Elemente in die Objektablage aufnehmen . 2-41 Objekte in einer Team-Umgebung gemeinsam verwenden . . . . . . . . . . . . . . . . . . 2-41 Ein Element der Objektablage in einem Projekt verwenden . . . . . . . . . . . . . 2-42 Ein Objekt kopieren . . . . . . . . . . . . 2-42 Ein Objekt vererben . . . . . . . . . . . . 2-42 Ein Objekt verwenden. . . . . . . . . . . 2-42 Projektvorlagen verwenden . . . . . . . . . 2-42 Freigegebene Objekte ändern . . . . . . . . 2-43 Ein Standardelement für neue Projekte, Formulare und Hauptformulare angeben 2-43 Inhalt ii Benutzerdefinierte Komponenten der IDE hinzufügen . . . . . . . . . . . . . . . . . . . . 2-44 Kapitel 3 Typische Programmieraufgaben 3-1 Exception-Behandlung . . . . . . . . . . . . . . 3-1 Quelltextblöcke schützen . . . . . . . . . . . 3-2 Auf Exceptions reagieren . . . . . . . . . 3-2 Exceptions und die Ablaufsteuerung. . . 3-3 Exception-Reaktionen verschachteln . . . 3-3 Ressourcenzuweisungen schützen . . . . . . 3-4 Zu schützende Ressourcen. . . . . . . . . 3-4 Ressourcen-Schutzblöcke erstellen . . . . 3-5 RTL-Exceptions behandeln . . . . . . . . . . 3-6 RTL-Exceptions . . . . . . . . . . . . . . . 3-6 Exception-Behandlungsroutine erstellen. 3-7 Exception-Behandlungsanweisungen . . 3-8 Exception-Instanz verwenden. . . . . . . 3-9 Gültigkeitsbereich von Exception- Behandlungsroutinen. . . . . . . . . . .3-10 Standard-Exception-Behandlungsroutinen bereitstellen . . . . . . . . . . . . . . . .3-10 Exception-Klassen verarbeiten . . . . . . 3-11 Exception erneut auslösen . . . . . . . . . 3-11 Komponenten-Exceptions behandeln . . . .3-12 TApplication.HandleException verwenden .3-13 Stille Exceptions . . . . . . . . . . . . . . . .3-13 Exceptions definieren . . . . . . . . . . . . .3-14 Exception-Objekttyp deklarieren . . . . .3-14 Exception auslösen . . . . . . . . . . . . .3-15 Schnittstellen verwenden . . . . . . . . . . . . .3-15 Schnittstellen als Sprachmerkmal . . . . . .3-16 Schnittstellen in mehreren Klassen nutzen . . . . . . . . . . . . . . . . . . .3-16 Schnittstellen mit Prozeduren verwenden . . . . . . . . . . . . . . . . .3-18 IUnknown implementieren . . . . . . . . . .3-18 TInterfacedObject . . . . . . . . . . . . . . .3-19 Operator as verwenden . . . . . . . . . . . .3-19 Wiederverwendung von Quelltext und Delegation . . . . . . . . . . . . . . . . . . .3-20 implements für die Delegation verwenden . . . . . . . . . . . . . . . . .3-20 Aggregation . . . . . . . . . . . . . . . . .3-22 Speicherverwaltung für Schnittstellen- objekte . . . . . . . . . . . . . . . . . . . . .3-22 Referenzzählung einsetzen . . . . . . . .3-23 Keine Referenzzählung einsetzen. . . . .3-24 Schnittstellen in verteilten Anwendungen einsetzen . . . . . . . . . . . . . . . . . . . 3-24 Mit Strings arbeiten. . . . . . . . . . . . . . . . 3-25 Zeichentypen . . . . . . . . . . . . . . . . . 3-25 String-Typen . . . . . . . . . . . . . . . . . . 3-26 Kurze Strings . . . . . . . . . . . . . . . . 3-26 Lange Strings. . . . . . . . . . . . . . . . 3-27 WideString . . . . . . . . . . . . . . . . . 3-28 PChar-Typen . . . . . . . . . . . . . . . . 3-28 OpenString . . . . . . . . . . . . . . . . . 3-28 Routinen der Laufzeitbibliothek zur String- Verarbeitung . . . . . . . . . . . . . . . . . 3-29 Wide-Zeichenroutinen. . . . . . . . . . . 3-29 Gebräuchliche Routinen für lange Strings . . . . . . . . . . . . . . . . . . . 3-30 Strings deklarieren und initialisieren . . . . 3-32 String-Typen mischen und konvertieren . . 3-33 Konvertierungen von String in PChar . . . 3-33 String-Abhängigkeiten . . . . . . . . . . 3-34 Lokale PChar-Variable zurückgeben. . . 3-34 Lokale Variable als PChar übergeben . . 3-34 Compiler-Direktiven für Strings. . . . . . . 3-35 Strings und Zeichen: Verwandte Themen . 3-36 Mit Dateien arbeiten . . . . . . . . . . . . . . . 3-36 Dateien bearbeiten . . . . . . . . . . . . . . 3-37 Datei löschen . . . . . . . . . . . . . . . . 3-37 Datei suchen . . . . . . . . . . . . . . . . 3-37 Dateiattribute ändern . . . . . . . . . . . 3-39 Datei umbenennen. . . . . . . . . . . . . 3-39 Datums-/Zeit-Routinen. . . . . . . . . . 3-40 Datei kopieren . . . . . . . . . . . . . . . 3-40 Dateitypen mit Datei-E/A . . . . . . . . . . 3-40 Datei-Streams verwenden . . . . . . . . . . 3-41 Dateien erstellen und öffnen . . . . . . . 3-42 Datei-Handle verwenden . . . . . . . . . 3-42 Dateien lesen und schreiben . . . . . . . 3-43 Strings lesen und schreiben. . . . . . . . 3-43 Datei durchsuchen. . . . . . . . . . . . . 3-44 Dateiposition und -größe . . . . . . . . . 3-44 Kopieren . . . . . . . . . . . . . . . . . . 3-45 Neue Datentypen definieren. . . . . . . . . . . 3-45 Kapitel 4 Anwendungen, Komponenten und Bibliotheken erstellen 4-1 Anwendungen erstellen . . . . . . . . . . . . . . 4-1 Windows-Anwendungen. . . . . . . . . . . . 4-1 Benutzeroberflächen. . . . . . . . . . . . . 4-2 iii IDE-, Projekt- und Compiler-Optionen festlegen . . . . . . . . . . . . . . . . . . 4-3 Quelltextvorlagen . . . . . . . . . . . . . . . 4-3 Konsolenanwendungen . . . . . . . . . . . . 4-3 Service-Anwendungen . . . . . . . . . . . . 4-4 Service-Threads . . . . . . . . . . . . . . . 4-6 Service-Namenseigenschaften. . . . . . . 4-8 Services testen. . . . . . . . . . . . . . . . 4-8 Packages und DLLs erstellen . . . . . . . . . . . 4-9 Unterschiede zwischen Packages und DLLs 4-9 Datenbankanwendungen erstellen. . . . . . . . 4-9 Verteilte Anwendungen erstellen . . . . . . . .4-10 Verteilte TCP/IP-Anwendungen erstellen. .4-10 Sockets in Anwendungen verwenden . . 4-11 Web-Server-Anwendungen erstellen . . . 4-11 Verteilte Anwendungen mit COM und DCOM erstellen. . . . . . . . . . . . . . . .4-12 COM und DCOM. . . . . . . . . . . . . .4-12 MTS . . . . . . . . . . . . . . . . . . . . .4-12 Verteilte CORBA-Anwendungen erstellen .4-12 Verteilte Datenbankanwendungen erstellen.4-13 Kapitel 5 Die Benutzeroberfläche erstellen 5-1 Die Klassen TApplication, TScreen und TForm 5-1 Das Hauptformular . . . . . . . . . . . . . . 5-1 Weitere Formulare hinzufügen . . . . . . . . 5-2 Formulare verknüpfen . . . . . . . . . . . 5-2 Auf Anwendungsebene arbeiten . . . . . . . 5-3 Mit dem Bildschirm arbeiten . . . . . . . . . 5-3 Das Layout festlegen. . . . . . . . . . . . . . 5-3 Mit Botschaften arbeiten . . . . . . . . . . . . . 5-5 Weitere Informationen zu Formularen . . . . . 5-5 Die Formularerstellung im Speicher steuern 5-5 Automatisch erstellte Formulare anzeigen5-6 Formulare dynamisch erstellen . . . . . . 5-6 Nichtmodale Formulare erstellen. . . . . 5-7 Formularinstanzen mit lokalen Variablen erstellen . . . . . . . . . . . . . . . . . . 5-7 Zusätzliche Argumente an Formulare übergeben . . . . . . . . . . . . . . . . . . . 5-8 Daten aus Formularen abrufen . . . . . . . . 5-9 Daten aus nichtmodalen Formularen abrufen . . . . . . . . . . . . . . . . . . . 5-9 Daten aus modalen Formularen abrufen.5-10 Komponenten und Komponentengruppen wieder verwenden . . . . . . . . . . . . . . . . . . . .5-12 Komponentenvorlagen . . . . . . . . . . . . . .5-12 Frames. . . . . . . . . . . . . . . . . . . . . . . .5-13 Frames erstellen . . . . . . . . . . . . . . . . 5-14 Frames in die Komponentenpalette einfügen. . . . . . . . . . . . . . . . . . 5-14 Frames verwenden und ändern . . . . . . . 5-14 Frames freigeben . . . . . . . . . . . . . . . 5-16 Menüs erstellen und verwalten . . . . . . . . . 5-16 Den Menü-Designer öffnen . . . . . . . . . 5-17 Menüs entwerfen . . . . . . . . . . . . . . . 5-18 Menüs benennen. . . . . . . . . . . . . . 5-19 Menüeinträge benennen . . . . . . . . . 5-19 Menüeinträge hinzufügen, einfügen und entfernen . . . . . . . . . . . . . . . . . 5-20 Untermenüs erstellen . . . . . . . . . . . 5-21 Das Menü anzeigen . . . . . . . . . . . . 5-23 Menüeinträge im Objektinspektor bearbeiten . . . . . . . . . . . . . . . . . . 5-24 Das lokale Menü des Menü-Designers verwenden . . . . . . . . . . . . . . . . . . 5-24 Die Befehle des lokalen Menüs. . . . . . 5-25 Zur Entwurfszeit zwischen Menüs wechseln . . . . . . . . . . . . . . . . . 5-25 Menüvorlagen verwenden . . . . . . . . . . 5-26 Ein Menü als Vorlage speichern . . . . . . . 5-27 Namenskonventionen für Menüeinträge und Ereignisbehandlungsroutinen in Vorlagen. . . . . . . . . . . . . . . . . . 5-28 Menüeinträge zur Laufzeit bearbeiten . . . 5-29 Menüs kombinieren. . . . . . . . . . . . . . 5-29 Das aktive Menü festlegen: die Eigenschaft Menu . . . . . . . . . . . . . . . . . . . 5-29 Die Reihenfolge der kombinierten Menüeinträge festlegen: die Eigenschaft GroupIndex. . . . . . . . . . . . . . . . 5-29 Ressourcen-Dateien importieren. . . . . . . 5-30 ToolBar- und CoolBar-Komponenten erstellen 5-31 Eine Panel-Komponente als Symbolleiste hinzufügen . . . . . . . . . . . . . . . . . . 5-32 Einer Symbolleiste (TPanel) eine SpeedButton-Komponente hinzufügen 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 hinzufügen . . . . . . . . . . . . . . . . . . 5-34 iv Einer Symbolleiste (TToolBar) eine ToolButton-Komponente hinzufügen. .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 hinzufügen . . .5-36 Die Anfangseinstellungen einer CoolBar- Komponente festlegen . . . . . . . . . .5-37 Auf Mausklicks reagieren . . . . . . . . . . .5-37 Einer ToolButton-Komponente ein Menü zuweisen . . . . . . . . . . . . . . . . . .5-38 Verborgene Symbolleisten hinzufügen. . . .5-38 Symbolleisten ein- und ausblenden . . . . .5-38 Aktionslisten verwenden . . . . . . . . . . . . .5-39 Aktionsobjekte . . . . . . . . . . . . . . . . .5-39 Aktionen verwenden. . . . . . . . . . . . . .5-40 Quelltext zentral verwalten . . . . . . . .5-41 Eigenschaften verknüpfen . . . . . . . . .5-41 Aktionen ausführen . . . . . . . . . . . .5-41 Aktionen aktualisieren . . . . . . . . . . . 5-43 Vordefinierte Aktionsklassen . . . . . . . . .5-43 Standard-Bearbeitungsaktionen. . . . . .5-44 Windows-Standardaktionen. . . . . . . .5-44 Datenmengenaktionen . . . . . . . . . . .5-44 Aktionskomponenten erstellen . . . . . . . .5-45 Wie Aktionen ihre Zielobjekte lokalisieren. . . . . . . . . . . . . . . . .5-45 Aktionen registrieren. . . . . . . . . . . .5-47 Einen Aktionslisten-Editor erstellen . . .5-47 Beispielprogramme . . . . . . . . . . . . . .5-47 Kapitel 6 Mit Steuerelementen arbeiten 6-1 Drag&Drop-Operationen in Steuerelementen implementieren. . . . . . . . . . . . . . . . . . 6-1 Eine Drag-Operation beginnen . . . . . . . . 6-1 Gezogene Elemente akzeptieren . . . . . . . 6-2 Elemente ablegen. . . . . . . . . . . . . . . . 6-3 Eine Drag-Operation beenden . . . . . . . . 6-3 Drag&Drop-Operationen durch ein Drag- Objekt anpassen . . . . . . . . . . . . . . . 6-3 Den 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-7 Die Textausrichtung festlegen . . . . . . . . . 6-8 Bildlaufleisten zur Laufzeit hinzufügen . . . 6-8 Das Clipboard-Objekt hinzufügen . . . . . . 6-9 Text markieren . . . . . . . . . . . . . . . . . . 6-9 Den gesamten Text markieren . . . . . . . . 6-10 Text ausschneiden, kopieren und einfügen. 6-10 Markierten Text löschen . . . . . . . . . . . 6-11 Menüeinträge deaktivieren. . . . . . . . . . 6-11 Ein Popup-Menü bereitstellen . . . . . . . . 6-12 Das Ereignis OnPopup . . . . . . . . . . . . 6-12 Grafiken zu Steuerelementen hinzufügen . . . 6-13 Den Owner-Draw-Stil festlegen . . . . . . . 6-13 Grafikobjekte zu einer Stringliste hinzufügen . . . . . . . . . . . . . . . . . . 6-14 Grafiken zu einer Anwendung hinzufügen . . . . . . . . . . . . . . . . 6-14 Grafiken zu einer Stringliste hinzufügen 6-14 Owner-Draw-Elemente anzeigen . . . . 6-15 Größe von Owner-Draw-Elementen festlegen . . . . . . . . . . . . . . . . . . . 6-15 Alle Owner-Draw-Elemente anzeigen . . . 6-16 Kapitel 7 Mit Grafiken und Multimedia arbeiten 7-1 Grafikprogrammierung im Überblick . . . . . . 7-1 Den Bildschirm aktualisieren . . . . . . . . . 7-2 Grafikobjekt-Typen . . . . . . . . . . . . . . . 7-3 Häufig verwendete Eigenschaften und Methoden des Objekts Canvas . . . . . . . . 7-4 Eigenschaften des Objekts Canvas verwenden . . . . . . . . . . . . . . . . . . . 7-5 Stifte verwenden . . . . . . . . . . . . . . . 7-5 Pinsel verwenden . . . . . . . . . . . . . . 7-8 Pixel lesen und setzen . . . . . . . . . . . 7-10 Grafikobjekte zeichnen . . . . . . . . . . . . 7-10 Linien und Linienzüge zeichnen . . . . . 7-10 Formen zeichnen. . . . . . . . . . . . . . 7-11 v Behandlung mehrerer Zeichenobjekte in einer Anwendung. . . . . . . . . . . . . . . . . .7-13 Benötigte Zeichenwerkzeuge ermitteln . 7-13 Werkzeuge mit Hilfe von Mauspalettenschaltern wechseln . . . .7-14 Zeichenwerkzeuge verwenden . . . . . .7-15 In einer Grafik zeichnen . . . . . . . . . . . .7-18 Bildlauffähige Grafiken . . . . . . . . . .7-18 Bild-Steuerelemente hinzufügen . . . . .7-18 Grafikdateien laden und speichern. . . . . .7-20 Bilder aus Dateien laden . . . . . . . . . .7-21 Bilder in Dateien speichern . . . . . . . .7-21 Bilder ersetzen . . . . . . . . . . . . . . .7-22 Die Zwischenablage und Grafiken . . . . . .7-23 Grafiken in die Zwischenablage kopieren . . . . . . . . . . . . . . . . . .7-23 Grafiken in die Zwischenablage ausschneiden . . . . . . . . . . . . . . .7-23 Grafiken aus der Zwischenablage einfügen . . . . . . . . . . . . . . . . . .7-24 Der Gummiband-Effekt: Beispiel . . . . . . .7-24 Auf Mausaktionen reagieren . . . . . . .7-25 Felder einem Formularobjekt hinzufügen. . . . . . . . . . . . . . . . .7-28 Verbesserte Liniendarstellung . . . . . . . 7-29 Mit Multimedia arbeiten . . . . . . . . . . . . .7-31 Einer Anwendung Videoclips ohne Ton hinzufügen . . . . . . . . . . . . . . . . . .7-31 Beispiel für das Hinzufügen von Videoclips ohne Ton . . . . . . . . . . . . . . . . . .7-32 Einer Anwendung Audio- und/oder Videoclips hinzufügen . . . . . . . . . . . . . . . . . .7-33 Beispiel für das Hinzufügen von Audio- und/oder Videoclips . . . . . . . . . . .7-35 Kapitel 8 Multithread-Anwendungen entwickeln 8-1 Thread-Objekte definieren . . . . . . . . . . . . 8-2 Den Thread initialisieren . . . . . . . . . . . 8-3 Eine Standard-Priorität zuweisen. . . . . 8-3 Den Freigabezeitpunkt von Threads festlegen . . . . . . . . . . . . . . . . . . 8-3 Die Thread-Funktion schreiben. . . . . . . . 8-4 Der VCL-Haupt-Thread . . . . . . . . . . 8-4 Lokale Thread-Variablen verwenden . . . 8-5 Die Beendigung mit anderen Threads prüfen . . . . . . . . . . . . . . . . . . . 8-6 Clean-up-Quelltext schreiben . . . . . . . . . 8-6 Threads koordinieren. . . . . . . . . . . . . . . . 8-7 Gleichzeitigen Zugriff vermeiden . . . . . . . 8-7 Objekte sperren . . . . . . . . . . . . . . . 8-7 Kritische Abschnitte . . . . . . . . . . . . . 8-7 TMultiReadExclusiveWriteSynchronizer- Objekte . . . . . . . . . . . . . . . . . . . 8-8 Weitere Techniken für die gemeinsame Nutzung von Speicher. . . . . . . . . . . 8-9 Die Ausführung anderer Threads abwarten . 8-9 Warten, bis ein Thread vollständig ausgeführt ist . . . . . . . . . . . . . . . . 8-9 Warten, bis eine Aufgabe ausgeführt ist. 8-10 Thread-Objekte ausführen . . . . . . . . . . . . 8-11 Die Standard-Priorität überschreiben . . . . 8-11 Threads starten und stoppen. . . . . . . . . 8-12 Threads in verteilten Anwendungen . . . . . . 8-12 Threads und botschaftsbasierte Server . . . 8-13 Threads und verteilte Objekte . . . . . . . . 8-13 Anwendungen (EXE-Dateien) schreiben 8-13 Bibliotheken schreiben . . . . . . . . . . 8-14 Fehlersuche in Multithread-Anwendungen . . 8-15 Kapitel 9 Packages und Komponenten 9-1 Packages sinnvoll einsetzen . . . . . . . . . . . . 9-2 Packages und Standard-DLLs . . . . . . . . . 9-2 Laufzeit-Packages. . . . . . . . . . . . . . . . . . 9-3 Laufzeit-Packages in Anwendungen . . . . . 9-3 Packages dynamisch laden. . . . . . . . . . . 9-4 Benötigte Laufzeit-Packages auswählen . . . 9-4 Benutzerdefinierte Packages . . . . . . . . . . 9-5 Entwurfszeit-Packages . . . . . . . . . . . . . . . 9-6 Komponenten-Packages installieren . . . . . 9-6 Packages erstellen und bearbeiten . . . . . . . . 9-8 Ein Package erstellen . . . . . . . . . . . . . . 9-8 Ein bestehendes Package bearbeiten . . . . . 9-9 Quelldateien von Packages manuell bearbeiten . . . . . . . . . . . . . . . . . . . 9-9 Die Struktur eines Package. . . . . . . . . . 9-10 Packages benennen . . . . . . . . . . . . 9-10 Die requires-Klausel . . . . . . . . . . . . 9-10 Die contains-Klausel. . . . . . . . . . . . 9-11 Packages compilieren . . . . . . . . . . . . . 9-11 Spezielle Compiler-Direktiven für Packages . . . . . . . . . . . . . . . . . 9-12 Der Befehlszeilen-Compiler und -Linker 9-14 Package-Dateien nach erfolgreicher Compilierung. . . . . . . . . . . . . . . 9-14 Packages weitergeben . . . . . . . . . . . . . . 9-15 vi Anwendungen mit Packages weitergeben .9-15 Packages anderen Entwicklern zur Verfügung stellen . . . . . . . . . . . . . . . . . . . . .9-15 Package-Sammlungen . . . . . . . . . . . . .9-15 Kapitel 10 Anwendungen für den internationalen Markt 10-1 Internationalisierung und Lokalisierung . . . .10-1 Internationalisierung. . . . . . . . . . . . . .10-1 Lokalisierung . . . . . . . . . . . . . . . . . .10-2 Internationalisieren von Anwendungen . . . .10-2 Quelltext anpassen . . . . . . . . . . . . . . .10-2 Zeichensätze. . . . . . . . . . . . . . . . .10-2 OEM- und ANSI- Zeichensatz. . . . . . .10-2 Doppelbyte-Zeichensätze . . . . . . . . .10-2 16-Bit-Zeichen . . . . . . . . . . . . . . . .10-3 Bidirektionale Sprachen . . . . . . . . . . 10-4 Die Eigenschaft BiDiMode. . . . . . . . .10-6 Funktionen für bestimmte Gebietsschemas . . . . . . . . . . . . . .10-8 Die Benutzeroberfläche gestalten. . . . . . .10-9 Text . . . . . . . . . . . . . . . . . . . . . .10-9 Grafiken . . . . . . . . . . . . . . . . . . . 10-9 Formate und Sortierreihenfolge. . . . . 10-10 Tastenzuordnungen . . . . . . . . . . . 10-10 Ressourcen auslagern . . . . . . . . . . . . 10-10 Ressourcen-DLLs erstellen . . . . . . . . . 10-10 Ressourcen-DLLs verwenden. . . . . . . . 10-12 Ressourcen-DLLs dynamisch wechseln . . 10-13 Anwendungen lokalisieren . . . . . . . . . . . 10-13 Ressourcen lokalisieren . . . . . . . . . . . 10-13 Kapitel 11 Anwendungen weitergeben 11-1 Allgemeine Anwendungen weitergeben . . . . 11-1 Installationsprogramme verwenden . . . . . 11-2 Anwendungsdateien identifizieren. . . . 11-2 Anwendungsdateien nach Namens- erweiterung . . . . . . . . . . . . . . . . 11-3 Package-Dateien . . . . . . . . . . . . . . 11-3 ActiveX-Steuerelemente . . . . . . . . . . 11-3 Hilfsanwendungen . . . . . . . . . . . . . 11-4 Position von DLL-Dateien . . . . . . . . . 11-4 Datenbankanwendungen weitergeben . . . . . 11-4 Die Datenbank-Engine bereitstellen . . . . . 11-5 Borland Database Engine . . . . . . . . . 11-5 Datenbank-Engines von Fremd- herstellern . . . . . . . . . . . . . . . . . 11-6 SQL Links. . . . . . . . . . . . . . . . . . 11-6 MIDAS (Multi-tiered Distributed Application Services) . . . . . . . . . . . . . . . . . . . 11-7 Web-Anwendungen weitergeben . . . . . . . . 11-8 Unterschiedliche Host-Umgebungen berücksichtigen . . . . . . . . . . . . . . . . . 11-8 Bildschirmauflösung und Farbtiefe . . . . . 11-9 Anwendungen ohne dynamische Größenanpassung . . . . . . . . . . . . 11-9 Anwendungen mit dynamischer Größenanpassung der Formulare und Steuerelemente . . . . . . . . . . . . . . 11-9 Unterschiedliche Farbtiefen . . . . . . .11-11 Schriften . . . . . . . . . . . . . . . . . . . .11-11 Windows-Version . . . . . . . . . . . . . . .11-12 Software-Lizenzvereinbarungen . . . . . . . .11-12 DEPLOY.TXT . . . . . . . . . . . . . . . . .11-13 README.TXT . . . . . . . . . . . . . . . . .11-13 Lizenzvereinbarungen . . . . . . . . . . . .11-13 Dokumentation zu Produkten von Fremdherstellern . . . . . . . . . . . . . .11-13 Teil II Datenbankanwendungen entwickeln Kapitel 12 Datenbankanwendungen entwerfen 12-1 Datenbanken . . . . . . . . . . . . . . . . . . . 12-1 Datenbanktypen. . . . . . . . . . . . . . . . 12-2 Lokale Datenbanken. . . . . . . . . . . . 12-2 Remote-Datenbankserver . . . . . . . . . 12-3 Datenbanksicherheit . . . . . . . . . . . . . 12-3 Transaktionen . . . . . . . . . . . . . . . . . 12-4 Das Daten-Dictionary. . . . . . . . . . . . . 12-5 Referentielle Integrität, Stored Procedures und Trigger . . . . . . . . . . . . . . . . . . . . 12-6 Datenbankarchitektur . . . . . . . . . . . . . . 12-6 Skalierbarkeit planen . . . . . . . . . . . . . 12-7 Einschichtige Datenbankanwendungen . . 12-9 Zweischichtige Datenbankanwendungen . 12-9 Mehrschichtige Datenbankanwendungen 12-10 Benutzeroberflächen entwickeln . . . . . . . 12-12 Einzelne Datensätze anzeigen . . . . . . . 12-12 Mehrere Datensätze anzeigen . . . . . . . 12-13 Daten analysieren . . . . . . . . . . . . . . 12-14 Anzeige der Daten festlegen . . . . . . . . 12-14 Berichte erstellen . . . . . . . . . . . . . . 12-17 vii Kapitel 13 Ein- und zweischichtige Anwendunen erstellen 13-1 BDE-Anwendungen . . . . . . . . . . . . . . . .13-2 BDE-Architektur . . . . . . . . . . . . . . . .13-2 Grundlagen von Datenbanken und Datenmengen . . . . . . . . . . . . . . .13-3 Sitzungen verwenden . . . . . . . . . . .13-4 Verbindung mit Datenbanken. . . . . . . . .13-5 Transaktionen. . . . . . . . . . . . . . . . . . 13-5 Transaktionen explizit steuern . . . . . .13-6 Datenbank-Komponenten für Transaktionen verwenden . . . . . . . . . . . . . . . . .13-6 Die Eigenschaft TransIsolation . . . . . .13-7 Passthrough-SQL . . . . . . . . . . . . . .13-9 Lokale Transaktionen. . . . . . . . . . . .13-9 Aktualisierungen zwischenspeichern . . . 13-10 Datenbanktabellen erstellen und umstrukturieren . . . . . . . . . . . . . . 13-11 ADO-basierte Anwendungen . . . . . . . . . 13-11 ADO-basierte Architektur. . . . . . . . . . 13-12 Grundlagen zu ADO-Datenbanken und - Datenmengen . . . . . . . . . . . . . . 13-12 Verbindung zu ADO-Datenbanken herstellen . . . . . . . . . . . . . . . . . . 13-13 Daten abrufen. . . . . . . . . . . . . . . . . 13-13 ADO-Datenbanktabellen erstellen und umstrukturieren . . . . . . . . . . . . . . 13-14 Datenbankanwendungen mit unstrukturierten Daten . . . . . . . . . . . . . . . . . . . . . . 13-15 Datenmengen 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-18 Das Aktenkoffer-Modell. . . . . . . . . . . 13-19 Skalierung auf eine dreischichtige Anwendung . . . . . . . . . . . . . . . . . . 13-20 Kapitel 14 Mehrschichtige Anwendungen erstellen 14-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-4 Die Struktur des Anwendungsservers . . . 14-5 MTS verwenden . . . . . . . . . . . . . . 14-6 Remote-Datenmodule verwalten . . . . 14-8 Schnittstelle IAppServer verwenden . . 14-8 Verbindungsprotokoll wählen . . . . . . . . 14-9 DCOM-Verbindungen einsetzen . . . . . 14-9 Socket-Verbindungen einsetzen . . . . 14-10 Web-Verbindungen einsetzen. . . . . . .14-11 OLEnterprise verwenden . . . . . . . . .14-11 CORBA-Verbindungen einsetzen . . . 14-12 Mehrschichtige Anwendungen erstellen. . . 14-12 Anwendungsserver erstellen . . . . . . . . . 14-13 Remote-Datenmodul einrichten . . . . . . 14-15 TRemoteDataModule konfigurieren. . 14-15 TMTSDataModule konfigurieren . . . 14-16 TCorbaDataModule konfigurieren . . 14-17 Daten-Provider für Anwendungsserver erstellen. . . . . . . . . . . . . . . . . . . 14-18 Schnittstelle des Anwendungsservers erweitern . . . . . . . . . . . . . . . . . . 14-19 Callbacks der Schnittstelle des Anwendungsservers hinzufügen . . 14-20 Schnittstelle des Anwendungsservers unter MTS erweitern. . . . . . . . . . 14-20 Client-Anwendung erstellen. . . . . . . . . . 14-20 Verbindung zum Anwendungsserver einrichten . . . . . . . . . . . . . . . . . . 14-21 Verbindung über DCOM angeben . . . 14-22 Verbindung über Sockets angeben . . . 14-23 Verbindung über HTTP angeben. . . . 14-24 Verbindung über OLEnterprise angeben . . . . . . . . . . . . . . . . . 14-24 Verbindung über CORBA angeben . . 14-25 Broker-Verbindungen . . . . . . . . . . 14-25 Server-Verbindungen verwalten. . . . . . 14-26 Verbindung zum Server einrichten . . 14-26 Server-Verbindung schließen oder ändern. . . . . . . . . . . . . . . . . . 14-27 Serverschnittstellen aufrufen. . . . . . . . 14-27 Transaktionen in mehrschichtigen Anwendungen verwalten. . . . . . . . . . . . . . . . . . . . 14-28 Haupt/Detail-Beziehungen unterstützen . . 14-29 Statusinformationen in Remote-Datenmodulen unterstützen . . . . . . . . . . . . . . . . . . 14-30 Web-basierte MIDAS-Anwendungen erstellen14-32 viii Client-Anwendung als ActiveX-Steuerelement weitergeben . . . . . . . . . . . . . . . . . 14-33 ActiveX-Formular für die Client- Anwendung erstellen. . . . . . . . . . 14-33 Web-Anwendungen mit InternetExpress erstellen . . . . . . . . . . . . . . . . . . . 14-34 InternetExpress-Anwendung erstellen . 14-35 Javascript-Bibliotheken verwenden. . . 14-36 Zugriffs- und Startberechtigung für den Anwendungsserver gewähren. . . . . 14-37 XML-Broker verwenden. . . . . . . . . . . 14-37 XML-Datenpakete abrufen . . . . . . . 14-38 Aktualisierung aus XML- Datenpaketen eintragen . . . 14-39 Web-Seiten mit einem MIDAS-Seitengenerator erstellen . . . . . . . . . . . . . . . . . . . 14-40 Web-Seiteneditor verwenden . . . . . . 14-41 Eigenschaften von Web-Elementen festlegen . . . . . . . . . . . . . . . . . 14-42 Vorlage des MIDAS-Seitengenerators anpassen . . . . . . . . . . . . . . . . . 14-43 Kapitel 15 Provider-Komponenten 15-1 Die Datenquelle festlegen. . . . . . . . . . . . .15-1 Aktualisierungen eintragen. . . . . . . . . . . .15-2 Datenpakete zusammenstellen . . . . . . . . . .15-2 Felder für Datenpakete festlegen . . . . . . .15-3 Optionen für Datenpakete einstellen. . . . . 15-3 Datenpaketen benutzerdefinierte Daten hinzufügen . . . . . . . . . . . . . . . . . .15-4 Auf Datenanforderungen des Client reagieren .15-5 Auf Aktualisierungsanforderungen des Client reagieren . . . . . . . . . . . . . . . . . . . . .15-6 Delta-Pakete vor dem Aktualisieren der Datenbank bearbeiten . . . . . . . . . . . .15-7 Die Art der Aktualisierung steuern . . . . .15-8 Bestimmte Aktualisierungen überwachen. .15-9 Aktualisierungsfehler beheben . . . . . . . 15-10 Aktualisierungen in Datenmengen mit mehreren Tabellen . . . . . . . . . . . . . 15-10 Auf Client-Ereignisse reagieren . . . . . . . . 15-11 Server-Beschränkungen . . . . . . . . . . . . . 15-11 Kapitel 16 Datenbanksitzungen 16-1 Mit einer Sitzungskomponente arbeiten . . . .16-2 Die Standardsitzung . . . . . . . . . . . . . .16-2 Zusätzliche Sitzungen erzeugen . . . . . . .16-3 Sitzungsnamen zuweisen. . . . . . . . . . . 16-4 Eine Sitzung aktivieren . . . . . . . . . . . . 16-5 Den Start der Sitzung anpassen . . . . . . . 16-6 Das Standardverhalten von Datenbankverbindungen festlegen . . . . 16-6 Datenbankverbindungen erzeugen, öffnen und schließen . . . . . . . . . . . . . . . . . . . 16-7 Eine einzelne Datenbankverbindung schließen . . . . . . . . . . . . . . . . . 16-7 Alle Datenbankverbindungen schließen 16-8 Temporäre Datenbankverbindungen trennen . . . . . . . . . . . . . . . . . . . . 16-8 Nach einer Datenbankverbindung suchen . 16-9 Informationen über eine Sitzung abrufen . 16-9 BDE-Aliase . . . . . . . . . . . . . . . . . . 16-10 Die Sichtbarkeit von Aliasen festlegen .16-11 Sitzungs-Aliase für andere Sitzungen und Anwendungen sichtbar machen . . . .16-11 Bekannte Aliase, Treiber und Parameter festlegen. . . . . . . . . . . . . . . . . .16-11 Aliase erzeugen, ändern und löschen . 16-12 Durch die Datenbank-Komponenten einer Sitzung iterieren . . . . . . . . . . . . . . 16-13 Paradox-Verzeichnisse angeben . . . . . . 16-14 Das Verzeichnis der Steuerdatei festlegen. . . . . . . . . . . . . . . . . 16-14 Ein Verzeichnis für temporäre Dateien festlegen. . . . . . . . . . . . . . . . . 16-14 Kennwortgeschützte Paradox- und dBase- Tabellen . . . . . . . . . . . . . . . . . . . 16-15 Die Methode AddPassword verwenden16-15 Die Methoden RemovePassword und RemoveAllPasswords verwenden . . 16-16 Die Methode GetPassword und das Ereignis OnPassword verwenden . . 16-16 Mehrere Sitzungen verwalten . . . . . . . . . 16-17 Sitzungskomponenten in Datenmodulen verwenden . . . . . . . . . . . . . . . . . . . 16-19 Kapitel 17 Datenbankverbindungen 17-1 Persistente und temporäre Datenbank- Komponenten . . . . . . . . . . . . . . . . . . 17-1 Temporäre Datenbank-Komponenten. . . . 17-2 Datenbank-Komponenten zur Entwurfszeit erstellen. . . . . . . . . . . . . . . . . . . . 17-2 Datenbank-Komponenten zur Laufzeit erstellen. . . . . . . . . . . . . . . . . . . . 17-3 Verbindungen steuern . . . . . . . . . . . . . . 17-4 [...]... 50 - 25 Gültige Typen 50 - 25 Sichere Arrays 50 -2 7 Object-Pascal- oder IDL-Syntax verwenden 50 -2 7 Attribute-Spezifikationen 50 -2 7 Schnittstellen-Syntax 50 -2 9 Syntax von Dispatch-Schnittstellen 50 -2 9 CoClass-Syntax 50 -3 0 Enum-Syntax 50 -3 1 Alias-Syntax 50 -3 1 Record-Syntax 50 -3 1... 3 8-3 3 8-1 8 3 8-1 8 3 8-1 8 3 8-1 9 3 8-2 0 3 8-2 0 3 8-2 1 3 9-1 Die Komponente erstellen und registrieren 3 9-1 Die Komponentenklasse ändern 3 9-2 Den Konstruktor überschreiben 3 9-2 Den neuen Standardwert für die Eigenschaft festlegen 3 9-3 3 8-1 3 8-7 3 8-7 3 8-7 3 8-8 3 8-9 3 8-9 3 8-1 0 3 8-1 1 3 8-1 2 3 8-1 3 3 8-1 3 3 8-1 4 3 8-1 4 3 8- 15 3 8- 15 3 8-1 6 3 8-1 6 3 8-1 7 Kapitel 39 Kapitel... 2 1-1 9 Einschränkungen bei der Bearbeitung von aktualisierbaren Ergebnismengen 2 1-1 9 Nur-Lesen-Ergebnismengen aktualisieren 2 1-1 9 2 0-1 8 2 0-1 8 2 0-1 8 2 0-1 9 2 0-2 1 2 0-2 2 2 0-2 2 2 0-2 3 2 0-2 4 2 0-2 4 2 0-2 4 2 0-2 4 2 0-2 4 2 0- 25 2 0-2 6 2 0-2 6 2 0-2 7 2 0-2 8 2 0-2 8 2 0-2 9 2 0-3 0 Kapitel 21 Abfragen Kapitel 22 2 1-1 Stored Procedures Abfragen effektiv einsetzen 2 1-1 Abfragen für Desktop-Entwickler 2 1-2 ... 51 -2 Anforderungen an eine MTS-Komponente 51 -4 Verwalten von Ressourcen durch Just-in-timeAktivierung und Ressourcen-Pooling 51 -5 Just-in-time-Aktivierung 51 -5 Ressourcen-Pooling 51 -6 Ressourcen freigeben 51 -6 Objekt-Pooling 51 -7 Auf den Objektkontext zugreifen 51 -7 Unterstützung von Transaktionen in MTS 51 -8 Transaktionsattribute... Dialogfelder als Komponenten 4 1-1 4 1-1 4 1-2 4 1-3 4 1-4 41 -5 41 -5 4 1-6 COM-Anwendungen entwickeln Kapitel 44 4 1-8 4 1-1 0 4 1-1 0 4 1-1 1 4 1-1 1 4 1-1 2 4 1-1 3 COM-Technologien im Überblick 4 4-1 COM als Spezifikation und Implementierung 4 4-2 COM-Erweiterungen 4 4-2 Elemente einer COM-Anwendung 4 4-3 COM-Schnittstellen 4 4-3 Die grundlegende COM-Schnittstelle IUnknown... 2 9-3 HTTP-Server-Aktivitäten 2 9-3 Client-Anforderungen zusammenstellen 2 9-4 Client-Anforderungen bedienen 2 9-4 Auf Client-Anforderungen antworten 29 -5 Web-Server-Anwendungen 29 -5 Arten von Web-Server-Anwendungen 2 9-6 ISAPI und NSAPI 2 9-6 CGI-Programme 2 9-6 Win-CGI-Programme 2 9-6 Web-Server-Anwendungen erstellen 2 9-7 ... erstellen 4 9-1 Ein ASP-Objekt erstellen ASP-Objekte für In-Process- oder Out-ofProcess-Server erstellen Eine Anwendung als ASP-Objekt registrieren Einen In-Process-Server registrieren Einen Out-of-Process-Server registrieren Die ASP-Anwendung testen 4 9-2 4 9-3 4 9-4 4 9-4 4 9-4 49 -5 Kapitel 50 Mit Typbibliotheken arbeiten 50 -1 Der Typbibliothekseditor 50 -3 Die... 50 -2 1 Record-Elemente 50 -2 2 Union-Typinformationen 50 -2 2 Die Registerkarte Attribute für UnionObjekte 50 -2 2 Union-Elemente 50 -2 3 Modul-Typinformationen 50 -2 3 Die Registerkarte Attribute für Modul 50 -2 3 Modul-Elemente 50 -2 4 Modulmethoden 50 -2 4 Modulkonstanten 50 -2 4 Typbibliotheken... Standardwert angeben Array-Eigenschaften erstellen Eigenschaften speichern und laden Der Speicher- und Lademechanismus Standardwerte festlegen Was soll gespeichert werden? Initialisieren nach dem Laden 3 3-1 3 3-1 3 3-2 3 3-3 3 3-4 3 3-4 33 -5 33 -5 3 3-6 3 3-7 3 3-7 3 3-8 3 3-8 3 3-9 3 3-1 0 3 3-1 0 3 3-1 1 3 3-1 2 3 3-1 2 Kapitel 34 Ereignisse... 4 5- 2 Ein COM-Objekt mit dem COM-Objekt-Experten entwerfen 4 5- 2 Instantiierungstypen für COM-Objekte 4 5- 3 Ein Threading-Modell auswählen 4 5- 3 Ein Objekt schreiben, das das freie ThreadingModell unterstützt 4 5- 5 Ein Objekt schreiben, das das ApartmentThreading-Modell unterstützt 4 5- 6 Ein COM-Objekt registrieren 4 5- 6 Ein COM-Objekt . hinzufügen 6-1 4 Owner-Draw-Elemente anzeigen . . . . 6- 15 Größe von Owner-Draw-Elementen festlegen . . . . . . . . . . . . . . . . . . . 6- 15 Alle Owner-Draw-Elemente anzeigen . . . 6-1 6 Kapitel. .2 9-4 Client-Anforderungen bedienen . . . . . . .2 9-4 Auf Client-Anforderungen antworten . . . .29 -5 Web-Server-Anwendungen . . . . . . . . . . . .29 -5 Arten von Web-Server-Anwendungen. . . . 2 9-6 ISAPI. . 5- 35 Eine Gruppe von ToolButton-Komponenten erstellen . . . . . . . . . . . . . . . . . . 5- 36 Eine ToolButton-Komponente als Ein-/ Ausschalter verwenden . . . . . . . . . 5- 36 Eine CoolBar-Komponente

Ngày đăng: 16/04/2014, 11:15