Delphi 6 in Team: Anwendungsentwicklung mit VCL und API (eBook)
920 Seiten
C & L Computer- und Literaturverlag GmbH
978-3-932311-85-7 (ISBN)
Herausgegeben von der Redaktion Toolbox
Delphi 6 in Team
Anwendungsentwicklung mit VCL und API
Delphi ist mit der Version 6 von einem reinen Windows-Entwicklungswerkzeug zu einem plattformübergreifenden Programmiertool geworden. Durch die neue Klassenbibliothek CLX wird die Cross-Plattform-Entwicklung für Windows und Linux entscheidend vereinfacht.
Dieses Buch wendet speziell an den Anwendungsentwickler, der mit der neuen Compilerversion arbeitet. Aus diesem Grund enthält dieses Buch ausführliche Kapitel zum Umgang mit Dateien, zur Multimedia-Programmierung auch mit DirectX, zum Einsatz der Internet-Komponenten inklusive des neuen Indy-Systems und zu SOAP. Als besondere Bonbons finden Sie unter anderem die jetzt aktualisierten und erweiterten Komponenten zur Drucker- und Schnittstellenansprache von Rainer Reusch und die Entwicklung eines Add-Ons für den InstallShield Express. Dort, wo es angebracht ist, gehen die Autoren auch auf Unterschiede zwischen der VCL und CLX ein. Weiterhin widmet sich ein Abschnitt den Grundlagen des komplett von Borland überarbeiteten, unzureichend dokumentierten und in Teilen nicht mehr zu früheren Delphi-Versionen kompatiblen Tools API, mit dem die Entwicklung von Experten ermöglicht wird.
Die Kapitel zur Komponentenentwicklung, zum Schreiben von DLLs, zu Konsolenprogrammen und zur Assemblerprogrammierung sind in diesem Buch nicht abgedruckt und wurden auf die CD-ROM ausgelagert. Sie sind für die erfolgreiche Anwendungsentwicklung nicht unbedingt notwendig, sollen aber als weiterführende Literatur zur Delphi-Programmierung den interessierten Lesern nicht vorenthalten werden.
Die Themen:
-- VCL und CLX
-- Dateibehandlung
-- Drucken
-- Prozeßverwaltung
-- Exception Handling
-- Multimedia
-- Internet und SOAP
-- Open Tools API
Inhaltsverzeichnis 6
Vorwort des Herausgebers 16
Die VCL und CLX 18
1.1 Ein Euro-Umrechner 18
1.1.1 Umrechnungskurse und -regeln 19
1.1.2 Logik und Oberfläche trennen 21
1.1.3 Die Umrechnung implementieren 22
1.1.4 Control-Gruppen wiederverwenden mit Frames 24
1.1.5 Bilder aus Ressourcen laden 29
1.1.6 Komponenten im Quelltext erzeugen 32
1.1.7 Exkurs: Frames visuell bearbeiten 35
1.1.8 Umgerechnete Beträge anzeigen 36
1.1.9 Bessere Tastaturbedienung 38
1.2 Portierung nach Linux 39
Laufwerke, Verzeichnisse und Dateien 42
2.1 Standarddialoge 44
2.1.1 Der Standarddialog zum Öffnen von Dateien 44
2.1.2 Der nächste Standarddialog – Dateien speichern unter 51
2.1.3 TOpenPictureDialog, TSavePictureDialog 52
2.2 Datei- und Laufwerkskomponenten (File, Directory, Drive, Filter) 52
2.2.1 TDriveComboBox 53
2.2.2 TDirectoryListBox 57
2.2.3 TFileListBox 62
2.2.4 TFilterComboBox 63
2.3 Funktionen zum Bearbeiten und Verwalten von Laufwerken, Verzeichnissen und Dateien 71
2.3.1 Laufwerke 71
2.3.2 Verzeichnisse 76
2.3.3 Dateien 76
2.3.4 Arbeiten mit den Inhalten einer Datei 88
2.3.5 Fehlerbehandlung 107
2.3.6 Routinen für Textdateien 108
2.4 Dateihandles und Dateivariablen 109
2.5 Direkte API-Aufrufe 112
2.6 Suchen von Dateien mit API-Funktionen – Vergleich mit den Delphi-Funktionen 115
2.7 Rekursives Suchen im Dateibaum 118
2.7.1 Rekursive Dateibearbeitung – Ein etwas aufwendigeres Beispielprojekt 122
2.8 Diskussion der unterschiedlichen Funktionsgruppen 133
2.9 Shell-Programmierung 135
2.10 Des Rätsels Lösung 136
Docking 138
3.1 Die erstenVersuche 139
3.2 Docking Manager 140
3.3 Andocken unerwünscht 143
3.4 Ein Konzept mit Schwachstellen 144
TApplication, die etwas andere Komponente 146
4.1 Das Fundament im Bauwerk 147
4.2 Wozu TApplication? 148
4.3 Die Eigenschaften 151
4.3.1 Die wichtigsten Eigenschaften im Überblick 152
4.4 Die Methoden 155
4.4.1 Die wichtigsten Methoden im Überblick 156
4.5 Ereignisse 159
4.5.1 Die wichtigsten Ereignisse im Überblick 160
4.6 TApplication im Griff 161
4.7 Angriffsziel Projektdatei 162
4.8 Das unsichtbare Programm 163
4.9 Ein Programm für die Taskleiste 164
4.10 Botschaften auf Irrwegen 165
4.11 Läuft sie schon? 168
4.12 Schongang 170
4.13 Freiräume 173
Exception Handling – Ausnahmebehandlung 176
5.1 Syntax des Exception Handling in Delphi 177
5.1.1 Der Stoff, aus dem die Ausnahmen gemacht sind 181
5.1.2 Die Reihenfolge der Bearbeitung 184
5.2 Spezifische Informationen über die Instanz der Ausnahme 187
5.2.1 Die »Stapelabwicklung« 188
5.2.2 Exit, Break, Continue 190
5.2.3 »At« – eine Rarität 196
5.3 Hilfsroutinen 201
5.3.1 Assertions 202
Ressourcen 204
6.1 Der Resource Workshop 206
6.1.1 Benutzerdefinierte Ressourcen 208
6.2 Mehrsprachige Programme 209
Die Registry 212
7.1 Vor- und Nachteile 213
7.2 Der Registrierungseditor 215
7.2.1 Struktur der Registry 216
7.2.2 Datentypen der Schlüsseleinträge 222
7.2.3 Die Dateien »System.dat« und »User.dat« 223
7.3 Registry-Funktionen in Win32 224
7.3.1 Unicode- und ANSI-Format 224
7.3.2 Verwendete Datenstrukturen 225
7.3.3 Einige wichtige Win32-Funktionen 226
7.4 Anwendungen und Beispiele 230
7.4.1 Durchzuführende Eintragungen 230
7.4.2 Dateinamenerweiterungen (Dateiextension) 232
7.4.3 DDE-Verknüpfung mit dem Explorer 238
7.4.4 Anwendungsverzeichnis 243
7.4.5 Automatischer Programmstart 244
7.5 Die Bibliothek »Registry.pas« 246
7.5.1 Verfügbare Klassen 246
7.5.2 Datenstrukturen 246
7.5.3 Ausnahmebehandlung 248
7.5.4 Die Klasse TRegistry 249
7.5.5 Die Klasse TRegIniFile 258
7.5.6 Die Klasse TRegistryIniFile 260
Hooks 266
8.1 Dynamic Link Libraries (DLLs) 267
8.1.1 Statisches und dynamisches Einbinden 268
8.1.2 Wohin mit der DLL? 270
8.1.3 Fehlersuche in DLLs 272
8.1.4 Erstellen von DLLs 275
8.1.5 Fenster in DLLs 278
8.1.6 Datenaustausch zwischen Anwendungen über DLLs 281
8.2 Eingehakt : Hooks 286
8.2.1 Die Parameter hmod und dwThreadId 288
8.2.2 Die Callback-Funktion 290
8.2.3 Auswerten der Parameter 291
8.3 Endspurt 293
Einführung in das Open ools API 296
9.1 Hello World! 299
9.2 Verwendung von Services 302
9.3 Den Editor beeinflussen 305
9.4 Notifiers 309
9.5 Über die Experten hinaus... 311
9.6 Übersicht: IOTAMessageServices 312
9.7 Übersicht: IOTAActionServices 315
9.8 Übersicht: IOTAPackageServices 315
9.9 Übersicht: IOTAToDoServices 316
9.10 Übersicht: IOTAWizardServices 317
9.11 Übersicht: IOTAEditorServices 318
9.12 Übersicht: IOTADebuggerServices 319
9.12.1 Referenzen, Quellen und weitere nützliche Ressourcen 320
Prozeßverwaltung 322
10.1 Prozesse 322
10.1.1 Kernel-Objekte 325
10.1.2 Prozeßerzeugung 326
10.1.3 Prozeßverwaltung 332
10.2 Threads 333
10.2.1 Threaderzeugung 336
10.2.2 Threadverwaltung 338
10.2.3 Stack eines Threads 340
10.2.4 Deadlocks 342
10.2.5 Prioritäten 345
10.3 Synchronisation 349
10.3.1 Kritische Bereiche 354
10.3.2 Mutexe 357
10.3.3 Semaphoren 359
10.3.4 Ereignisse 363
10.3.5 Named Pipes 366
10.3.6 Verzögerung von Threads 373
10.3.7 Synchrone Zähler 375
10.3.8 Synchronisation in verteilten Anwendungen 377
10.3.9 Beeinflussung anderer Prozesse 377
10.4 Die Klasse TThread 381
10.4.1 Eigenschaften (Properties) 383
10.4.2 Methoden 385
10.5 Synchronisation 387
10.5.1 Die Klasse TCriticalSection 387
10.5.2 Die Klasse TEvent 387
10.5.3 Klasse TMultiReadExclusiveWriteSynchronizer 388
10.5.4 Anmerkungen 389
10.6 Entwurfsmuster 389
10.7 Beispiele 391
10.7.1 Beispiel 1: Lagersimulation 391
10.8 Beispiel 2: Producer/Consumer 393
10.9 Beispiel 3: Lagersimulation 395
10.10 Beispiel 4: Interlocked-Zähler 398
10.11 Beispiel 5: Supermarkt 400
Drucken 406
11.1 Die Unit Printers 406
11.2 Dialoge für den Anwender 412
11.3 Drucken mit Hindernissen 414
11.4 Der Weg zur Unabhängigkeit 415
11.5 Bis zum Äußersten 417
11.6 Eine Komponente für die Druckerausgabe 419
11.7 XPrint in der Praxis 428
11.8 Offene Wünsche 443
Die serielle Schnittstelle 444
12.1 Der Anschluß, das Kabel 444
12.2 Technische Betrachtungen 450
12.3 Handshake 453
12.4 Die Schnittstellen im PC 454
12.5 Serielle Datenkommunikation mit dem Windows-API 455
12.6 Ein Konfigurationsdialog 470
12.7 Die serielle Schnittstelle als I/O-Port 472
12.8 Praktische Beispiele 474
12.9 Mit Komponenten wird alles einfach 475
12.10 Ohne Zukunft? 491
Multimedia 492
13.1 MIDI-Sounds 492
13.1.1 Aufbau der MIDI-Datei 493
13.1.2 Die Channel-Events 495
13.1.3 Die Krux mit der Zeitdifferenz 495
13.1.4 Verfolgen des Abspielvorgangs 499
13.1.5 Praxis 500
13.1.6 Abspielung, Note für Note 506
13.1.7 MIDI-Sequenzen aufnehmen, abspielen, speichern 507
13.1.8 Der Datenstrom 510
13.1.9 Normale Channel-Messages 513
13.1.10 Daten als MIDI-Datei abspeichern 517
13.2 Mit Wave-Dateien arbeiten 524
13.2.1 Die Formate 525
13.2.2 Wave-Dateien einlesen 526
13.2.3 Gepackte Formate einlesen 530
13.2.4 Wave-Aufnahmen abspeichern 533
13.2.5 Sounds aufzeichnen 538
13.2.6 Aufnehmen von CD-Audiotracks 542
13.2.7 Sound gemixt 546
13.2.8 Darstellung 556
13.3 DirectX 561
13.3.1 DirectSound 561
13.3.2 DirectMusic 603
13.4 DirectDraw 636
13.4.1 Bilder im Fenstermodus 637
13.4.2 Bilder im Vollbildmodus 642
13.4.3 Direkt in das Video-RAM schreiben 645
13.4.4 Frei schwebend: Overlays 649
13.4.5 Aktion auf den Oberflächen 655
13.5 Transformieren mit DirectX Media 658
13.5.1 Transform-Units erzeugen 660
13.5.2 Das leidige Release 663
13.5.3 Was Sie brauchen... 664
13.5.4 Die Fabrik 666
13.5.5 Clippen 671
13.5.6 Eigenschaften ändern 673
13.5.7 Mehr Effekte 674
13.5.8 Was braucht der Effekt? 676
13.5.9 Hinter den Kulissen 677
13.6 3D-Programmierung mit Delphi und DirectX 8 682
13.6.1 Werkzeuge 683
Internet-Programmierung 708
14.1 Die Komponentenseite »Internet« 708
14.1.1 Allgemeines 708
14.1.2 Das Intranet 711
14.1.3 Computernetzwerke 713
14.1.4 IP-Adressen und Domain-Namen 718
14.1.5 Die Internetkomponenten 720
14.1.6 Verteilte Anwendungen 722
14.1.7 Webserver-Anwendungen 722
14.1.8 CGI-Webserver-Anwendungen 739
14.1.9 Antwortbotschaften generieren 744
14.1.10 Einbindung von Datenbank-Informationen 752
14.1.11 Socket-Anwendungen 757
14.2 Die Indy-Komponenten 771
14.2.1 Die drei Indy-Registerkarten: Clients, Server und Vermischtes 771
14.2.2 Erste Schritte mit Indy 780
14.2.3 TCP-Programmieren à la Indy 785
14.2.4 Netzwerk-Diagnose mit Hilfe von Servern (Projekte: IndyDiagServer, IndyEchoClient) 802
14.2.5 Weitere Diagnose-Instrumente: Ping, Traceroute, Finger und Whois 804
14.2.6 File Transfer Protocol (FTP) 813
14.2.7 Post im Internet (Projekt: IndyMail) 820
14.2.8 Hypertext Transfer Protocol (HTTP) 830
14.2.9 Komponenten für spezielle Bedürfnisse 843
Seifenoper – SOAP 852
15.1 Was ist WSDL? 854
15.2 Web Services in Delphi 6 855
15.3 Erzeugen eines SOAP-Clients 855
15.4 Entwickeln von SOAP-Servern 860
15.4.1 Das Interface des SOAP-Servers 862
15.4.2 Ein SOAP-Session-Manager-Client 868
15.5 Zusammenfassung 871
15.6 Quellen 872
Installation eigener Programme 874
16.1 InstallShield 874
16.1.1 Die »Demo« 876
16.1.2 Die Bedienung von InstallShield 877
16.2 Nützliche Verpackungen 879
16.2.1 Magnetisch, optisch, virtuell 879
16.2.2 »Zip« und Konsorten 880
16.2.3 Schrumpfen mit »UPX« 881
16.2.4 Installations-Martyrium 881
16.2.5 Schnippchen schlagen 882
16.2.6 Die Installation der Installation 884
16.2.7 Die dicke Ressource 885
16.2.8 »OneFile« muß konfiguriert werden 888
16.2.9 Der erste Versuch 889
16.2.10 »OneFile« im Detail 890
16.2.11 »Resource Workshop« eingebaut? 891
16.2.12 Möglichkeiten 892
Die Windows-Hilfe 894
17.1 Einführung 895
17.1.1 Steuercodes 898
17.1.2 Kunst in der Hilfe – Bitmaps verwenden 900
17.1.3 Heiße Punkte in der Bitmap – Die Hotspots 901
Stichwortverzeichnis 908
KAPITEL 3
Docking (S. 137-138)
von Rainer Reusch
»Dockable Toolbars« und alles, was sich an ein Fenster kleben läßt, versteht Microsoft als neue Form der Benutzeroberfläche von Programmen, die dem Anwender einen gewissen Spielraum in der Gestaltung derselben bieten soll. Seit Delphi 4 beherrschen die meisten visuellen Komponenten dieses Feature. Anwendungen, die auf dem »Multiple Document Interface« (MDI) basieren, werden optisch gerne als altbacken angesehen. Windows wird immer bunter und das MDI als Mittel zur Aufteilung von Funktionsblöcken eines Programmes wirkt zu statisch. Man mag es als Spielerei ansehen, daß der Anwender in die Lage versetzt wird, die Anordnung und den Aufbau des Programms nach seinen Vorstellungen gestalten zu können. Bei kleinen, einfachen Programmen ist es zweifellos ein Gimmick. Bei größeren und komplexeren Anwendungen kann der Benutzer diese Freiheit durchaus angenehm empfinden. Schließlich darf er die für ihn wichtigen Funktionen an exponierter Stelle plazieren und andere völlig ausblenden. Bestes Beispiel ist die Entwicklungsumgebung von Delphi 6 selbst.
Das Konzept der »Dockable Tools« verlangt Erweiterungen auf zwei Ebenen. Auf der einen Seite müssen Dialogelemente um die Fähigkeit des »Dockings« erweitert werden, auf der anderen Seite muß es Fenster, beziehungsweise Teilbereiche davon geben, die solche Elemente aufnehmen und die damit verbundenen Eingriffsmöglichkeiten des Anwenders verarbeiten können. Aus diesem Grund wurden visuelle Komponenten wie TEdit, TMemo, TButton oder TImage um die Eigenschaften DragKind und DragMode erweitert. Hinzu gekommen sind natürlich noch ein paar Methoden und Ereignisse, die zur Laufzeit von Bedeutung sind.
Die Komponenten TPanel und TControlBar wurden ebenfalls um diese Eigenschaften erweitert. Sie dienen als Grundlage für eine Gruppe von Dialogelementen (beispielsweise eine Reihe von Speedbuttons), können aber auch wie der Client- Bereich eines Formulars als der Bereich deklariert werden, der die »Dockable Tools« aufnehmen und innerhalb dem der Anwender die Elemente nach seinen Vorstellungen anordnen kann. Die dafür zuständigen Eigenschaften heißen DockSite und UseDockManager.
Um vorweg darauf hin zu weisen: Obwohl es die Docking-Fähigkeiten seit Delphi 4 gibt, ist das Konzept immer noch nicht ausgereift! Wundern Sie sich daher nicht, wenn das Ganze manchmal ein wenig hakelig funktioniert. Es ist allerdings keineswegs so, daß man davon absolut abraten muß. Auf die kleinen Unzulänglichkeiten kommen wir im einzelnen zu sprechen.)
»Dockable Tools« im Schnellkurs
Das Formular, die Komponenten TControlBar und TPanel können als Container für »Dockable Tools« fungieren. Dazu muß nur die Eigenschaft DockSite auf True gesetzt werden.
Dialogelemente können zu einem einzelnen Fenster heraus gezogen werden und sind wieder andockbar, wenn ihre Eigenschaft DragKind auf dkDock gesetzt wird.
Das Setzen der Eigenschaft DragMode auf dmAutomatic bewirkt, daß das Dialogelement an jeder beliebigen Stelle angefaßt werden kann. Allerdings verliert es dadurch seine Mausbedienbarkeit.
Die Deklaration einer Behandlungsroutine für das Ereignis OnDockOver ermöglicht das Verhindern des Andokkens für bestimmte Dialogelemente. Mit den Methoden ManualDock und ManualFloat kann sich ein Element selbst andocken beziehungsweise zu einem Fenster umwandeln.
3.1 Die ersten Versuche
Eine dürftige Hilfestellung als Ersatz für gedruckte Handbücher gehört zum Trend der Zeit. Auch die integrierte Hilfe von Delphi war noch nie verdächtig für den Literaturnobelpreis. Was bleibt, ist, die bruchstückhaften Informationen der Hilfedateien zu verarbeiten und den Rest durch Experimente heraus zu finden. Beginnen wir mit einem neuen Projekt und einem noch leeren Formular. Darin wird ein (beliebiges) Dialogelement, zum Beispiel ein Memo-Feld, plaziert.
| Erscheint lt. Verlag | 1.1.2001 |
|---|---|
| Sprache | deutsch |
| Themenwelt | Mathematik / Informatik ► Informatik |
| ISBN-10 | 3-932311-85-X / 393231185X |
| ISBN-13 | 978-3-932311-85-7 / 9783932311857 |
| Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
| Haben Sie eine Frage zum Produkt? |
Größe: 7,9 MB
Kopierschutz: Adobe-DRM
Adobe-DRM ist ein Kopierschutz, der das eBook vor Mißbrauch schützen soll. Dabei wird das eBook bereits beim Download auf Ihre persönliche Adobe-ID autorisiert. Lesen können Sie das eBook dann nur auf den Geräten, welche ebenfalls auf Ihre Adobe-ID registriert sind.
Details zum Adobe-DRM
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen eine
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen eine
Geräteliste und zusätzliche Hinweise
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich