DL2 - Delphi Advanced Topics
This Delphi training class is a continuation of the Delphi Core Concepts course, and is designed for programmers who need more in-depth coverage of common Windows and Object Pascal development issues. The course starts with an in-depth discussion of advanced Object Pascal, then covers specific application development issues commonly encountered in the Windows environment, such as interfacing with the Windows API, Graphics programming, DLLs, OLE and DDE, Building Components, Events and Messages, and Exception Handling.
"It's very worthwhile. [The instructor was] very good. Knowledgeable and friendly.." -- Eric P. from San Diego, CA
"Go Ahead - this Class is worth every penny, and will quickly give you pay-back. [The instructor] was very good - and as always - prepared.." -- Peter Tang T. from Norway
"The instructor communicated material well and was very helpful and available to answer all questions. Ted (Blue) definitely knows Delphi......" -- Teara Le B. from Santa Ana, CA
"To be honest, I learned the basis of how to program a windows application. By that I mean, How an application actually works. [The instructor is] obviously a master on the discussed topics.." -- Heath I. from San Diego, CA
"I solidified my understanding of the Object Pascal and gained an understanding of the event/message handling and graphics systems. I will definitely be putting this to use as soon as I get back to work. Excellent--Ted's knowledge level is obviously high, pace was good and he has a flare for explaining things concisely and in terms that everyone can understand. I recommend it highly.." -- Erik O. from San Diego, CA
Chapter 1 - Advanced Object Pascal
Characters
Strings
ShortString
PChar
AnsiStrings
AnsiString Memory Allocation
AnsiString Routines
C-String Compatibility
String Indexing
Concatenating Strings
Currency
Variants
Variant Operators
Variant Type Functions
Enumerated Types
Storing Enumerated Values
Sets
Sets and Enumerations
Include and Exclude
The IN Operator
Set Operators and Functions
Working with Sets and Enums
Bitwise Operations
Arrays
Declaring Arrays
Array Ranges
Multi-Dimensional Arrays
Dynamic Arrays
Variant Arrays
Checking for Variant Arrays
Locking and Unlocking Variant Arrays
Open Array Construction
Open Array Parameters
Type-Safe Open Arrays
Working with Array of Const
Records
Variant Records
Pointers
Declaring Pointer Variables
Initializing Pointer Variables
Accessing Pointer Variables
Typed Pointers
Generic (Untyped) Pointers
Object References
Procedural Types
Global Procedure Pointers
Function Pointers
Working with Procedural Types
Method Pointers
Working with Method Pointers
Chapter 2 - OOP in Delphi
Runtime Type Information (RTTI)
Determining Object Types
Comparing Object References
Typecasting Objects
Typecasting and Exception Handling
RTTI in TObject
Objects
Layout of a Record Instance
Layout of an Object Instance
Layout of an Object with Methods
The Self Parameter
Creating Objects
Explicitly Created Objects
Implicitly Created Objects
Object References
Object References as Constant Parameters
Object Scoping
Object Lifetime
Classes
The Class Keyword
TObject - A Common Ancestor
Scoping Directives
Unit Scope for Classes
Forward Class Declarations
Adding Variables to Classes
Naming Conventions for Object Variables
Properties
Access Methods
Read Methods
Write Methods
Rescoping of Properties
Overriding Properties
Array Properties
Default Array Properties
Property Storage Directives
The Stored Directive
Form Properties
Properties in Components
Methods
Class Methods
Calling Class Methods
Constructors and Destructors
Constructors
Calling the Inherited Constructor
Destructors
Message Handling Methods
Virtual and Abstract Methods
Events
Event Properties
Event Notification Types
Creating an Event Notification Type
Triggering Events
Dispatch Methods
Chapter 3 - Memory Management
Creating and Destroying Forms
Release
Creating and Destroying Objects
Dynamic Memory Allocation
Create, Destroy and Free
New and Dispose
GetMem and FreeMem
16-bit Direct Memory Access
16-bit Direct Port Access
32-bit Direct Port and Memory Access
Chapter 4 - Exception Handling
try..except
Exception Nesting
Scope of Exception Handling
Raising Exceptions
Exception Objects
Handling Multiple Exception Types
Handling Unhandled Exception Types
Exception Classes
Handling RTL Exceptions
Handling Component Exceptions
Creating Silent Exceptions
Defining Custom Exceptions
Declaring an Exception Type
Raising a Custom Exception
Tracing Exceptions with the Debugger
Resource Protection
Protecting File I/O Operations
Protecting Print Jobs
Protecting Allocated Memory
Resetting State
Chapter 5 - StringLists
TStringList and TStrings
TStrings Methods
Storing Objects in StringLists
Working with Objects in StringLists
The Names and Values Properties
Working with StringLists
Lists of Objects
Chapter 6 - Input and Output
Input/Output Systems in Delphi
File Layouts
Files and Devices
I/O Routines
File Types
Text Files
Typed Files
Untyped Files
File I/O Errors and IOResult
Writing to the Printer
Draft Mode Printing
Streams
THandleStream
TFileStream
TMemoryStream
TResourceStream
TBlobStream
Chapter 7 - Events and Messages
Events
Event Properties and Event Handlers
Event Notification Types
Messages
Message Records
Message Constant Identifiers
Message Handling
Delphi Message Records
Message Handlers
Working with Message Handlers
Message Contracts
Application Messages
Sending Messages
The Perform Method
SendMessage and PostMessage
Other Message Types
Notification Messages
VCL Messages
User Defined Messages
Other Ways to Send Messages
Sending Messages Between Applications
Broadcasting Messages
Chapter 8 - Graphics
The Graphical Coordinate System
Client vs. Screen Coordinates
The TShape Component
Device Contexts
The TCanvas Component
Working with TCanvas
Drawing Lines
RGB Color Manipulation
Working with RGB Colors
The Pixels Array
The OnPaint Event
Working with the OnPaint Event
Summary
Chapter 9 - MDI and SDI Applications
MDI Applications
MDI Operations
Creating an MDI Application
Closing MDI Child Windows
Managing MDI Child Windows
Merging Menus
Working with Menu Merging
Non-Child Windows
SDI Applications
Managing SDI Member Windows
Chapter 10 - Drag and Drop
Drag and Drop Phases
Starting a Drag Operation
Dragging Items
Dropping Items
Ending the Drag Operation
Implementing Drag and Drop
Drag and Drop Between Applications
Dragging Files from the Windows Explorer
Chapter 11 - Dynamic Link Libraries
The
Export Suitability
Export Declarations
Modifying the Project File
Using a DLL Function
Creating a DLL
Interface Units
Forms in DLLs
DLL Compatibility
Loading a DLL at Runtime
What's In a DLL?
Chapter 12 - Multi-Threaded Applications
Threads in Win32
Preemptive Multitasking
Multi-processing
Thread Priorities
The Purpose of Threaded Applications
Avoiding Bottlenecks
Controlling Program Flow
Utilizing Multiple Processors
Creating Thread Objects
Creating a Thread Object
Executing Threads
Initializing Threads
Accessing VCL Properties and Methods
Working with Threads
Using Threads
Non-threaded Applications
Using Threads
Starting and Stopping Threads
Creating a Suspended Thread
Suspending and Resuming a Thread
Terminating Threads
Working with Thread Functions
Thread Priorities
Working with Thread Priorities
Thread Synchronization
Local vs. Global Variables
Thread-local Variables
VCL Thread Synchronization
Accessing VCL Methods
Accessing VCL Properties
Thread-Safe VCL Components
Non-VCL Thread Synchronization
When to Synchronize
Locking
WaitFor
Critical Sections
Making a Class Thread-Safe
TMultiReadExclusiveWriteSynchronizer
Using Critical Sections
Inter-Process Synchronization
Signaling
Mutexes
Semaphores
Events
Debugging Threaded Applications
Limitations of Threaded Applications
Creating Threads with BeginThread
Appendix A - Delphi Resources
Appendix B - File Extensions
Appendix C - Delphi IDE Shortcuts