This is the complete Table of Contents of the final version of the book Mastering Delphi 4. New sections or sections radically revised (compared to the last edition) are in bold face. Some of these topics are Delphi 4 specific, but not all of them.
Keep in mind, anyway, that the entire books has been revised with extreme care, resulting in countless changes and corrections, and many new tips and notes.
Different Editions of Delphi 4
The AppBrowser Editor
The Code Explorer
Browsing in the Editor
Class Completion
Code Insight
Using Editor Bookmarks
More Editor Shortcut Keys
The Form Designer
The Component Editors
Secrets of the Component Palette
Defining Event Handlers
Copying and Pasting Components
Copy with Component Templates
Managing Projects
Project Options
Compiling and Building Projects
Additional and External Delphi Tools
The Files Produced by the System
Looking at Source Code File
The Object Repository
What's Next
Delphi 4 Numerical Types
The LongWord and Int64 Integral types
The New Real Type
Strings in Delphi
Looking at Strings in Memory
Delphi Strings and Windows PChars
Formatting Strings
Resource String Constants
Delphi 4 Dynamic Arrays
Open and Dynamic Array Parameters
Type-Variant Open Array Parameters
The Variant Type
Variants in Depth
Variants Are Slow!
Overloading and Default Parameters in Delphi 4
Function Overloading
Default Parameters
Windows Programming
Windows Handles
External Declarations
Procedural Types
A Windows Callback Function
A Minimal Windows Program
Units and the Structure of a Program
Units and Scope
Units and Name Clashes
Units and Programs
What's Next
Introducing Classes and Objects
Delphi's Object Reference Model
Private, Protected, and Public
Encapsulation and Forms
The Self Keyword
Creating Components Dynamically
Declaring a Constructor
Overloaded Methods and Constructors
The Complete TDate Class
Inheriting from Existing Types
Inheritance and Type Compatibility
Late Binding and Polymorphism
Overriding, Redefining, and
Reintroducing Methods
Virtual versus Dynamic Methods
Message Handlers
Abstract Methods
Run-Time Type Information
Visual Form Inheritance
Inheriting from a Base Form
Polymorphic Forms
Interfaces and Multiple Inheritance
Declaring an Interface
An Example of Multiple Inheritance
Plain and Interface Polymorphism
Using an Array of Interface Variables
Is This Multiple Inheritance?
Handling Exceptions
Exceptions and the Stack
The Finally Block
What's Next?
Class Methods and Class Data
A Class with an Object Counter
Method Pointers
The Updated Counter Example
Class References
Creating Components at Run Time
Using Class References
The Published Access Specifier
Defining Properties
Adding Properties to Forms
Adding Properties to the TDate Class
Events in Delphi
Events Are Properties
Adding an Event to the TDate Class
Creating a TDate Component
The TObject Class
Showing Class Information
The VCL Hierarchy
Components
Windows' Own Components
Objects
Common VCL Properties
The Name Property
Removing Form Fields
Properties Related to Component
Size and Position
Activation and Visibility Properties
The Customizable Tag Property
The User Interface: Color and Font
Common VCL Methods
Common VCL Events
Using Delphi Lists
Using Lists of Objects and Data
Studying the VCL Source Code
What's Next
Opening the Component Tool Box
Text Input
Edit
MaskEdit
Memo and RichEdit
Selecting Options
CheckBox and RadioButton
GroupBox
RadioGroup
Lists
ListBox
ComboBox
CheckListBox
ListView and TreeView
Ranges
ScrollBar
TrackBar and ProgressBar
UpDown
PageScroller
Dragging from One Component to Another
Handling the Input Focus
Working with Menus
Pop-up Menus
Creating Menu Items Dynamically
Delphi 4 Menus Images
Customizing the Menu Check Mark
Customizing the System Menu
Delphi 4 Action Commands
Actions in Practice
Owner-Draw Controls
Bitmap Menu Items
Owner-Draw Menu Items in Delphi 4
A ListBox of Colors
ListView and TreeView
A Graphical Reference List
A Tree of Chapters
What's Next
Forms versus Windows
Overlapped, Pop-Up, and Child Windows
The Application Is a Window
Displaying the Application Window
The Application System Menu
Activating Applications and Forms
Setting Form and Border Styles
The Border Style
The Border Icons
Setting More Window Styles
Scaling Forms
Manual Form Scaling
Automatic Form Scaling
Setting the Form's Position and Size
Adding Sound to an Application
The Size of a Form and Its Client Area
Delphi 4 Form Constraints
Creating Forms
Delphi 4 Form Creation Order
Tracking Forms with the Screen Object
Closing a Form
Form Input
Supervising Keyboard Input
Getting Mouse Input
The Mouse Buttons
Using Windows without a Mouse
The Parameters of the Mouse Events
The Mouse Wheel
What's Next
Drawing on a Form
Drawing and Painting in Windows
The Drawing Tools
Drawing Shapes
Delphi Graphical Components
Drawing in a Bitmap
Drawing Shapes
An Image Viewer
Bitmaps to the Max
An Animated Bitmap in a Button
A Two-State Button
Many Images in a Bitmap
The Rotating World
A List of Bitmaps, the Use of Resources,
and a PaintBox
The Animate Control
The Animate Control in a Button
Graphical Grids
A Grid of Fonts
Mines in a Grid
Using TeeChart
Building a First Example
Adding Data to the Chart
Creating Series Dynamically
Using Metafiles
What's Next
Building a Toolbar with a Panel
A Combo Box in a Toolbar
Customizing the Hints
The Toolbar Control
A Really Cool Toolbar
The Delphi 4 Control Bar
A Menu in a Control Bar
Creating a Status Bar
Menu Hints in the Status Bar
Speed Button Hints in the Status Bar
Scrolling a Form
The Scroll Testing Example
Automatic Scrolling
Scrolling an Image
Scrolling and Form Coordinates
Form-Splitting Techniques
Horizontal Splitting
Splitting with a Header
Delphi 4 Control Anchors
Docking Toolbars and Controls in Delphi 4
Docking Tool Bars in Control Bars
What's Next?
Dialog Boxes versus Forms
Adding a Second Form to a Program
Creating Secondary Forms at Run Time
Merging Form Menus
Creating a Dialog Box
The Dialog Box of the RefList Example
A Modeless Dialog Box
Windows Common Dialogs
A Parade of Message Boxes
Extensible Dialog Boxes
About Boxes and Splash Screens
Building a Custom Hidden Screen
Building a Splash Screen
Multiple-Page Forms
PageControls and TabSheets
An Image Viewer with Tabs
The User Interface of a Wizard
Docking to a PageControl
What's Next
MDI in Windows: A Technical Overview
Using Child Forms
Making Child Forms Behave Properly
The Real Solution: MDI
Frame and Child Windows in Delphi
Building a Complete Window Menu
The MdiDemo Example
MDI Applications with Different
Child Windows
Child Forms and Menus
Adding a Bouncing Shape
Changing the Main Form
Subclassing the MdiClient Window
What's Next
Data, Files, Databases, and Tables
Delphi Database Components
Tables and Queries
The Status of a Data Set
Other Data-Access Components
Delphi Data-Aware Controls
Customizing a Database Grid
The Table State
Field-Oriented Data-Aware Controls
Using DBEdit Controls
Creating a Database Table in Delphi 4
Listing Alternative Values
Accessing the Data Fields
The Hierarchy of Field Classes
Adding a Calculated Field
Searching and Adding the Fields of a Table
Looking for Records in a Table
The Find Methods
The Goto Methods
The Locate Method
The Total of a Table Column
Editing a Table Column
Database Application with Standard Controls
Mimicking Delphi Data-Aware Controls
Sending Requests to the Database
Database Events
Field Events
Editing Dates with a Calendar
Exploring the Tables of a Database
Choosing a Database and a Table
at Run Time
Viewing Multiple Tables
Using Tables as Files
The Form and Its Startup Code
Creating a New Table
Choosing an Existing Table with
the Proper Fields
Adding or Removing Records
A Multi-Record Grid
Moving Control Grid Panels
Database Charts
What's Next?
Data Modules
A Data Module for Multiple Views
Setting Field Properties and Initial Values
Standard Table Filtering
Custom Table Filtering
An MDI Application with Unsynchronized Views
Using a Query
A Query with Parameters
Using Multiple Tables
Building a Master/Detail Form with the Wizard
A Master/Detail Structure with Queries
Using a Lookup Combo Box
A Lookup in a Grid
Advanced Use of the DBGrid Control
Painting a DBGrid
A Check Box Cell
A Grid Allowing Multiple Selection
The Data Dictionary
The Data Dictionary and the Fields editor
What's In an Attribute Set?
Exploring the Data Dictionary
Handling Database Errors
Multiuser Paradox Applications
Low-level BDE
Packing a Local Table
Using Paradox Files on a Network
Concurrency Control
Database Transactions
A Simple Example of Transactions
Using Cached Updates as Transactions
Crash Recovery
What's Next
An Overview of Client/Server Programming
Client/Server and Delphi
The Database Component
The Role of the BDE
From Local to Client/Server
Monodirectional Cursors
Table and Query Components in Client/Server
Getting Started with Local InterBase
SQL: The Data Definition Language
Data Types
Domains
Creating Tables
Indexes
Views
SQL: The Data Manipulation Language
Select
Insert
Update
Delete
Using SQL Builder
Server-Side Programming
Stored Procedures
Triggers (and Generators)
Live Queries and Cached Updates
The UpdateSQL Component
Update Conflicts
Using Transactions
Client/Server Optimization
Using SQL Monitor
Performance Tuning
What's Next
Extending the VCL
Component Packages
Rules for Writing Components
The Base Component Classes
Building Your First Components
The Fonts Combo Box
Creating a Package
What's Behind a Package?
Installing the Components of This Chapter
Using the Fonts Combo Box
A Clock in a Label
The Component Palette Bitmaps
An Active Button
A Complex Graphical Component
Defining an Enumerated Property
Writing the Paint Method
Adding TPersistent Properties
Defining a New Custom Event
Testing the Arrow Component
Customizing a Windows Control
Defining an Array Property
Using Dialog Box Units
A Header and a Tabbed List Box
A Nonvisual Dialog Component
Using the Nonvisual Component
Defining Custom Actions
What's Next
Writing a Property Editor
Types of Property Editors
An Editor for the TabsString Property
Installing the Property Editor
Writing a Component Editor
Subclassing the TComponentEditor Class
A Component Editor for the Tabbed List
Registering the Component Editor
Writing a Simple Wizard
Subclassing the TIExpert Class
The Code of the Wizard
Other Interfaces of the ToolsAPI
Accessing Properties by Name
What's Next
The Role of DLLs in Windows
What Is Dynamic Linking?
What Are DLLs For?
Understanding System DLLs
Differences between DLLs and EXEs
Rules for Delphi DLL Writers
Win16 and Win32 DLLs
Using Existing DLLs
Using a C++ DLL
Creating a DLL in Delphi
A First Simple Delphi DLL
Overloaded Functions in Delphi DLLs
Exporting Strings from a DLL
Calling the Delphi DLL
A Delphi Form in a DLL
Using the DLL Form as Modal
A Modeless Form in a DLL
Calling a Delphi DLL from
Visual Basic for Applications
Calling a DLL Function at Run-Time
A DLL in Memory: Code and Data
Sharing Data with Memory-Mapped Files
Using Delphi Packages
Packages for Versioning of Applications
Executables and DLLs Sharing
the VCL Packages
What's Next
What Is OLE? And What Is COM?
Objects in DLLs
Writing the Class in the DLL
Using a Class from a DLL
Implementing IUnknown
Implementing IUnknown Methods
Global Unique Identifiers
The Role of Class Factories
Using the Delphi 4 COM Object Wizard
The TComObject Class
Initializing the COM Object
Class Factories and Other Delphi COM Classes
Testing the COM Server
Using Interface Properties
Using a Shell Interface
Creating Shortcuts
The "To-Do File" Application
Creating the Database
Dragging Files to the Form
Creating a Context Menu Handler
Sending Data to Another
Application with wm_CopyData
Registering the Shell Extension
What's Next
What Is OLE Automation?
Introducing Type Libraries
Writing an OLE Automation Server
The Delphi 4 Type Library Editor
The Code of the Server
Registering the Automation Server
Writing a Client for Our Server
Interfaces, Variants, and Dispatch Interfaces:
Testing the Speed Difference
The Scope of Automation Objects
OLE Data Types
Exposing Strings Lists and Fonts
Sending Data to Word
Is the Server Running?
One Application, Multiple Automation Interfaces
Sending Database Data to Microsoft
Word and Excel
What Is a Compound Document?
The OLE Container Component
Merging Menus and Toolbars
The OLE Standard Dialog Boxes
Loading and Saving Objects in Files
Using the Internal Object
What's Next
Introducing ActiveX Controls
ActiveX Controls versus Delphi Components
Using ActiveX Controls in Delphi
Installing an ActiveX Control
The TOleControl Class
Using the WebBrowser Control
Using Delphi ActiveX Controls
Writing ActiveX Controls
Building an ActiveX Arrow
Adding New Properties
Adding a Property Page
ActiveForms
What's Next
Checking for a Previous Instance
of an Application
Traditional Techniques
Looking for a Copy of the Main Window
Activating the Previous Main Form
Handling User-Defined Window Messages
Searching the Window List
Using a Mutex
Events, Messages, and Multitasking in Windows
Event-Driven Programming
Windows Message Delivery
Idle Computing and Multitasking
Background Processing
Multithreading in Delphi
The TThread Class
A First Example
A Locking Example
Synchronization Alternatives
Thread Priorities
A Database Example
Synchronizing Threads
Waiting for a Thread
Windows Synchronization Techniques
Building an Example
The Plain Thread
Using Critical Sections
Using a Mutex
Using a TCriticalSection VCL Object
What's Next?
Using the Integrated Debugger
Debug Information
Setting Breakpoints
Viewing Breakpoints
Monitoring the Program's Execution
Inspecting Values
Tracing through the VCL Source Code
Alternative Debugging Techniques
Debugging with the Event Log
Using Conditional Compilation for
Debug and Release Versions
Using Assertions
Exploring the Message Flow
Using WinSight
A Look at Posted Messages
Viewing a Compiled Program
Using the Object Browser
Using the Modules Window
Using the CPU Window
What's Next?
Managing Resources
Using Resource Editors
Loading an Icon or Bitmap as a Property
The Manual Approach to Loading Resources
The Icons for Applications and Forms
Using the Icon Tray of the Taskbar
Using the Cursor in Delphi
Using String Table Resources
Version Information
Printing in Delphi
A Print Preview of Graphics
Sharing the Output Code
The QuickReport Components
Manipulating Files
File Support in Delphi Components
Streaming Data
Streaming Numbers
Streaming Components
The Clipboard
Copying and Pasting Text
Copying and Pasting Bitmaps
Support Files
Using Windows INI Files
Using the Registry
Help and Installation
Online Help
InstallShield Express
What's Next?
Browsing HTML Files
Generating HTML Files
Building a Plain HTML File
Producing HTML Tables
Using the HTML Producer Components
Producing HTML Pages
Producing Pages of Data
Producing HTML Tables
Converting a Database to HTML
Generating Master/Detail HTML Files
Cross Referencing the HTML Files
Publishing Static Databases on the Web
ActiveForms in Web Pages
The Role of an ActiveX Form on a Web Page
A Multi-Page ActiveForm
Setting Properties for the XArrow
Socket Programming with Delphi
Foundations of Socket Programming
Configuring a Local Network: IP Addresses
Local Domain Names
TCP Ports
High-Level Protocols
Socket Connections
Delphi Socket Components
Using Sockets
Using Sockets with a Custom Protocol
Blocking, Non-Blocking, and
Multi-Threaded Connections
Sending Database Data over a Socket Connection
Internet Protocols
The NetMasters Components
Sending and Receiving Mail
Sending Messages to the Mail Program
The Mail Components
Sending Mail to a List
The Components for the FTP and HTTP Protocols
The WinInet API
What's Next
Dynamic Web Pages
An Overview of CGI
An Overview of ISAPI/NSAPI
Introducing CGI Programming
What's the Time?
Processing the Command Line
CGI Environment Variables
CGI Database Programming
Listing the Records of a Table
Displaying a Specific Record
An HTML Search Form
Using Plain ISAPI
A Simple ISAPI DLL
Delphi WebModules
The Building Blocks
Building a Multipurpose WebModule
Simple ISAPI Database Reporting
Of Queries and Forms
Adding JPEG Graphics
A Web Hit Counter
A Database Chart on the Web
Handling Mail Feedback
A CGI Mail Server
Retrieving Mail-Based Requests
What's Next
This chapter has been moved here, with updates, from the Delphi Developer's Handbook
One, Two, Three Levels
The Technical Foundation: MIDAS
The Connection Protocol
Providing Data Packets
Delphi Support Components (Client-Side)
Delphi Support Components (Server Side)
Building a Sample Application
The First Application Server
The First Thin Client
Adding Constraints to the Server
Adding Features to the Client
The Status of the Records
Accessing the Delta
Updating the Data
Adding an Undo Feature
Supporting the Briefcase Model
Supporting Microsoft Transaction Server (MTS)
What Is Microsoft Transaction Server For?
Creating an MTS Data Module
Delphi and CORBA
A Simple CORBA Server
A Simple CORBA Client
ActiveForms as Database Front-Ends
Distributing ActiveForm and Database Table
Three-Tier Intranet Applications
What's Next