Delphi
Programming Main Index
- Categories in this index:
- See also:
Creating
a Real World Database Program in Delphi:
- Decide on a database to use
- Create a database
- Create tables for the database with indices and constraints as needed
- Create a way for Delphi to access the database:
- BDE alias +/- ODBC
- other middle ware database interface
- Decide on which style of database user interface:
- single tier
- single tier with briefcase capability
- two tier
- n-tier
- n-tier with briefcase capability
- Open Delphi and create the application:
- Create a datamodule and add TDatabase & TDatasets as needed and
configure
- consider adding TProviders to this datamodule for each dataset
- Create a second datamodule to hold the TDatasource components &
TClientDataSets if used
- Create a basic form:
- add a TPanel and set align to alTop, place a DBNavigator on this
panel
- add a TStatusBar and use its panels property to create 3 panels,
the left to be used for hints, the right for your copyright
- add a TScrollBox and set its align to alClient, this will create
scrollbars if user resizes application too small
- add a TNotebook and set its align to alClient, then right click to
create new pages as needed
- add data-aware controls as needed to the notebook page (eg.
TDBGrid) and set their datasource property +/- fieldname
- add menu system with functions such as:
- Cut/Copy/Paste via a TActionList
- table search or filtering
- access to reports
- import/export functions
- preferences/defaults
- context-sensitive help
- add help - flyover hints, hints in status bar, context-sensitive
help
- consider security - password dialogs
- consider progress bars for time consuming procedures
- Consider adding reports or import/export functions
The Delphi Programming
environment:
- what is Delphi & what can it
do?
- Delphi versions:
- Delphi 2 - DI Oct 1995,
Feb 1996
- Delphi 3 - DI May, June1997
- Delphi 4 - DI July 1998
- Delphi 5 - DI Aug 1999
- Delphi for Linux (Kylix) - DI Aug
2000, Jan 2001 (CLX)
- Object Pascal language:
- Computer programming
languages:
- Pascal vs C++ - DI Nov 1995
- Object Pascal basics:
- project files
& basics of OP language
- variables, data
types & structures
- Subranges, enumerated types, sets
- DI Nov 1995
- TDateTime - DI Nov 1996
- Dynamic arrays - DI Feb 1997
(D2);
- Linked lists - DI May 1998
- TList - DI Nov 2000
- methods of reading
& writing to files on disk
(typed/untyped/text files/ini
files/registry)
- virtual & dynamic methods - DI May
1996, Jan, Feb1997
- parentage & ownership:
- using the Sender parameter - DI Oct 1996
- run time type information (RTTI) - DI
June 1998, D5 - Nov 1999
- Events:
- OnCloseQuery event DI Oct
1997
- manipulating events via TMethod & pointers: DI Jun
2000
- Error handling:
- handling cleanup & resource
allocations; trapping RTL
exceptions - DI Feb 1996
- exception scope, re-raising,
silent, creating custom, DI Mar
1996
- Object Pascal advanced:
- conditional compiles - DI Nov 1996, May
1998
- VCL internal component messages - DI Jan
1997
- changing a VCL's functionality or appearance:
- using polymorphism to create morphing
grids that alter depending on data being
accessed - DI Nov 1996
- property over-riding - extending a VCL
class: DI Apr 1999
- via intercepting Windows messaging using TControl.WindowProc
- DI Feb
2000
- extending VCL controls - DI Jun 2000
- breaking through a VCL's protected barrier:
- polymorphic
programming - DI Nov 2000
- accessing protected members - DI Feb 2001
- classes:
- "nice classes" - DI Aug
1997
- object vs class: DI July 1999
- creating objects including forms
dynamically at runtime - DI May 2000
- manipulating event properties using
TMethod - DI Jun 2000
- object oriented patterns:
- dependency tracking (updating dependent
objects effectively - the observer
pattern) - DI Aug 2000
- Re-programming keyboard actions:
- Command line parameters
- DI Mar 1996,
SysUtils.FindCmdLineSwitch: DI Feb p70, Dec
1999
- bit manipulation
- database persistent objects (automatic
storage of objects) - DI Sep
2000 - part I, partII
- multi-object signalling DI Aug
96
- "multiple inheritance" DI Jan
2000
- support
routines:
- string handling:
- string types in Delphi 1: DI Aug
1995
- stripping blanks, autoFilenames,
move, fillchar: DI Sept 1995
- stripFirstWord, limiting length
of strings, text files: DI Oct
1995
- soundex - DI Mar 1998
- sysUtils.StringReplace: DI Feb
1999 p71
- sets to strings & vice versa
- converting enumerated types to
strings: DI Apr 2000
- maths
- random numbers - DI Mar 1997
- building an advanced expression
calculator / recursion techniques
- DI Aug 2000
- algorithms:
- trees / sorting data:
- classic sort routines -
Bubble, Selection, Quick,
Counting - DI Jan 1998
- recursion, factorials,
plotting trees/fractals,
sorted binary trees: DI
June 1996
- decision trees - DI June
1998
- determining the shortest
path through a network -
DI Dec 1998
- topological sorting -
sorting based on
conditions such as
"item1 <
item2" - DI Oct 1998
- introduction to trees -
creating, recursion,
testing, B+, climbing: DI
Jan 1999
- searching a list:
- exhaustive, binary,
interpolation: DI Apr
1999
- hash tables,
linear/quadratic probing
- DI Feb, Sept 1999
- getting line of best fit:
- linear least squares /
Gaussian elimination:
- cartography - coloring maps so
that each adjacent part is
different color - DI May 1999
- file I/O:
- searching multiple directories for a file DI Oct
1997
- finding a file: FileExists vs
FileSearch: DI Feb 1999 p71
- read/write appended data to an
exe file - see Delphi Super
Recall - DBK #691
- Windows API:
- raw API without VCL for speed - DI Sep
2000
- long filenames
- displaying abbreviated pathnames-
removing the middle: DI July1997 p84
- adding a file to the Win95 documents menu
- DI May 1997 p73
- Window's dialog boxes - DI Apr, May1999,
Win2000 OpenDialog DI Aug 2000
- application:
- how can a program check if another program is running?
DI Jul
1996
- determining if your program was started
from within Delphi IDE - DI Nov 1998
- relaunching an application at Windows
Start Up - DI Nov 1997 p63
- listing open windows using EnumWindows - DI Feb 2001
- making current window title or minimised
icon flash - Delphi Super Recall - DBK#626
- restoring Win animation when resizing a
form from minimise-restore - DI Mar 1998
- custom message handlers, transforming
window's messages into event handlers: DI
Oct 1999
- security:
- Windows CryptoAPI - encrypt/decrypt files
- DI Feb 1999
- Pretty Good Privacy (PGP) - DI Jan 2001
- Control Panel applets - DI Jan,
Mar 2001;
- tray icons - DI Nov 1998
- hiding
Windows taskbar
- getting information about user &
system:
- determining environment variables
(eg. TEMP directory) - Delphi
Super Recall - DBK#686, 666; DI Jan 2001;
- accessing the API - DI April 1996
- file system
info
- Registry:
- ini files:
- DI Aug 1995
- iniPlus.pas - adds
Read/Write methods for
color, font, control
position
- cursors, sleep, getLogicalDrives
- DI Aug 1998; get drives DI Mar
2001
- performance monitoring in NT - DI Sep
1998
- NT event log - DI Oct 1998
- Shell notification - DI Mar 1999
- Network resources - DI Aug 1999
- PIDLs - DI Dec 1999
- Time zones - DI Feb
2000
- winNT/2000 active directories -
changing usernames, etc. DI May
2000
- file shortcuts - DI Oct
2000
- general visual component library (VCL's):
- TApplication:
- TThread & Multithreading:
- TForm:
- Sharing components between forms -
DI April 1996
- visual form inheritance - DI Mar,
Aug 2000
- controlling form sizing using Win API- DI
Nov 1997 p64; Apr, May1998
- creating forms & controls at runtime: DI May
2000
- Delphi 5 Frames:
- TMenu:
- Creating a MRU list - DI Dec 1995; Jan
1997;
- Simple menu-level security system - DI
Mar 1996 p68
- Fancy menus (colors, rotated text, etc) using OwnerDraw
- DI Dec 2000
- TLabels:
- Invisible hotspots - DI Dec 1995
- TScreen - DI Feb 1997
- edit controls:
- automatically setting focus to next control once user enters
data DI Jul
1996
- onChange event - DI Apr
1997
- justifying text DI Jan 2001;
- highlighting controls depending on focus or database data DI
Jan 1998
- TOutline:
- DI Dec 1995; creating a DBOutline - DI
Feb 1996
- TDBGrid:
- column editor, multi-select, displaying a dialog form when
user clicks grid button - DI Jul
96
- adding images via OnDrawColumnCell - DI Jan
2001;
- TStream:
- DI Dec 1995, April 1996
- Filestreams to import/export data - DI
June 1998
- TProgress:
- Application design:
- The basics of creating an
application
- planning for multi-tier database independence -
DI Jan 1999
- Object oriented application & designing for
reuse - DI Nov 1995, Sept 1997
- Internationalisation:
- resource strings DI Jul 2000
- Preventing
more than one instance of application from
running
- Attractive & intuitive user
interfaces:
- MDI applications:
- DI Aug 1995
- using Active X in MDI apps - DI Sept 1999
- DLL's:
- Online help in your apps:
- DI Aug 1995
- HTML help - DI Apr 1998
- What's this? Help implementation - DI Apr
1998
- Hints - DI Dec
1999, Jan
2000
- Quality assurance/documentation:
- Practical QA - DI Mar, April, May 1996
- Table documentor - DI Mar(16bit D1),Aug
(32bit D2) 1996
- Using a naming convention - DI Jan 1997
- Commenting code - DI May 2000
- Deployment:
- D2 & Installshield - DI May, June1997
- Delphi IDE:
- Object repository:
- Object browser:
- Code editor - code Insight:
- Debugging:
- Packages:
- Customising Delphi:
- OpenTools API & Delphi Experts:
- Property editors:
- Comparisons with other programming tools:
- Problems in Delphi
Specific
tasks:
Text
files:
Multimedia programming:
- multimedia methods
- File formats:
- Drawing - DI Dec 1997
- Anti-aliasing - DI Apr 1998
- demystifying Window's palettes - DI July 1998
- 3D graphics programming:
- TGMP:
- 3D rendering, DIBs- DI Jan,
Feb, Mar,
Apr,
Jul
1997
- adding a camera coordinate system &
animated textures - DI Nov 1998
- transformations, rotation, homogeneous
coordinates, drawing, surface plots: DI Aug 1998
- Shrinking, enlarging & rotating images perfectly - DI
Nov 1998
- streaming audio over a TCP/IP network - DI July 1999
- TRect & rectangles - DI Aug 1999
- using PlgBlt to create parallelograms in NT - DI Jan 1999
- working with waveforms DI Feb,
Mar 2001
- Books:
- Delphi 2 Multimedia Adventure. Jarol, Haygood
& Coppola. Coriolis Books 1996
- The Tomes of Delphi - 32-bit Multimedia
Programming. Moore. Wordware 1999
- C++ based:
- Windows 95 Multimedia & ODBC API
Bible. Waite Group Press 1996
- Advanced Multimedia Programming.
Windcrest Books 1994
- A Programmer's Guide to Sound. Kientzle.
Addison-Wesley 1997
- Maximum MIDI. Messick. Manning
Publications 1997
Printing:
Database
programming:
- Databases:
- Database engines:
- Borland Database Engine (BDE):
- BDE alternatives:
- Client Server techniques:
- Data-aware VCL's:
- TSession:
- TDatabase:
- TBatchMove:
- Datamodules:
- Datasets:
- tables, queries & stored procedures:
DI Oct 1998
- navigation & editing: DI Jan 1999
- Databases on the net:
- DI Mar 1997
- D3 - TWebApplication, TWebModule, CGI - DI Feb
1998
- Active Server Pages (ASP's) - DI Mar
1999, Jul 2000
- MS Remote Data Services (RDS) - DI Sept 1999
- WebMIDAS
Client
- Maintaining state - cookies, etc DI Apr, July
2000
- Building session-aware ISAPI DLLs with WebBroker
- DI July 2000, Feb 2001
- SQL:
- Data validation techniques see
also: DI Aug, Sept 1995, May 1999
- Filtering data: DI Jan, Feb, June 1996, Apr 1999
- Searching for records: Sequential vs FindKey vs Locate vs
Parameterised Query - DI Feb 1999
- Customising DBNavigator buttons - DI Mar 1997
- Multi-user aspects
- Designing for future upsizing
- Import/Export of ASCII text files
- DI May 1998, using TTable: DI June 1999
Reports:
- QuickReport:
- Crystal Reports:
- using within Delphi: DI Oct 1998
-
Charts:
Crosstabs:
- DecisionCube: DI Nov 1997
Communicating with other
applications:
- Window's messaging:
- DDE
- OLE:
- Mastering Delphi 3 - Chapter
21 - OLE/COM
- Delphi OLE Methods
- creating an OLE object manager - DI Feb
1996
- Netscape Navigator as an OLE Server - DI
May 1996
- Word Basic (MSWord 95 & earlier) - DI
Mar 1996
- OLE Automation:
- Active X / Active Forms:
- DI May, 1997, Feb
1998;
deployment - DI Mar
1998;
intranet - DI June 1999
- using Active X in MDI apps - DI
Sept 1999
- using MS Agent - text-to-speech API: DI Oct
1999
- using MS Scripting Control - Letting user use
VBScript or JScript in your app.: DI Dec
1999
- scriptable OLE server plug-ins - DI
Feb 2000
- using unknown Active X controls
at runtime - DI Jan 2000
- using Office 2000's OWC Chart & Spreadsheet
controls - DI Dec 2000
- using Office 2000's OWC Pivot Table control - DI
Jan 2001
- COM & Interfaces:
- creating COM objects in D3: DI June1997
- COM automation: File notification - VB vs Delphi
- DI Apr 1998
- Interfaces - DI Apr 1998, Apr 1999, Mar, Apr 2000
- COM callbacks:
- interface manager - creating a simple
chat program - DI June 1998
- connectable objects - DI July 1998
- IE:
- IE4 - Dynamic HTML / Document Object Model (DOM)
- DI Aug 1998, DI Aug 1999
- IE5 - IE as an automation server - DI Jan,
Feb 2001
- designing a COM automation server - ie. allowing
other programs to control your app - DI Dec 1999
- MS Outlook:
- as an automation server - DI Sept 1999
- internet messaging using Collaborative Data Objects (CDO) -
DI Nov 2000
- creating Office 2000 add-ins - DI May 2000
- accessing WinNT/2000 Active Directories services via COM: DI May
2000
- SQL Server 7 Distributed Management Objects
(DMO):
- Building a SQL Server scripting tool - DI Jun,
Jul 2000
- building modular database applications: MIDAS
& COM - DI Aug,
Sep 2000
- MS Word as an automation server - DI Sep,
Oct,
Nov 2000
- passing data in a variant via COM - DI Nov
2000
- Gary's COM
functions for exporting data to MS Excel97/MS
Word 97
- COM+:
- Windows 2000 Com + for scalable distributed systems - DI Nov, Dec
2000
- DCOM:
- in D3: DI Sept 1997
- DCOM streaming to pass objects - DI Mar 1998
- CORBA:
- DI Nov 1999, Feb,
Mar 2000
- Visibroker 3.3 - writing clients for non-Delphi
CORBA servers - DI May 2000
Communicating with other
computers:
- Serial communications:
- Introduction to serial communications - DI Nov
1995
- Multicasting - sending data to multiple
clients via User Datagram Protocol (UDP) sockets:
- LANs:
- network debugging components - TSonar, TEchoC,
TTrace - DI May, July1997
- Winsock - DI June, multithreading -
July 1998
- streaming audio over a TCP/IP network - DI July
1999
- WANs / Internet aspects:
- Telephony (TAPI) techniques:
- introduction - DI July, Aug 1998; DI Sept. 1998
p24-32
- playing & recording sounds during calls: DI
Nov 1999
Games:
- card deck - DI Dec 1995
- asteroids clone/TSprite; Mastermind clone; - DI Feb 1997
Creating
Components:
- DI Sept 1995 - SlideBar, dynamic Toolbar, Stopwatch
- DI June 1996 - encapsulating multiple controls
- DI July 1996 - 3D Rotatable
Labels; GDI
monitor; TAnimator;
- DI Aug 1996 - adding property editors & online help; database
table documentor;
- DI Sept 1996 - signalling objects / notification
mechanisms; Experts/wizards;
- DI Oct 1996 - an expert to generate a screen saver
application; creating INI-aware controls;
- DI Nov 1996 - database to HTML
generator; custom color
property editor; subproperty
editors;
- DI Jan 1997 - custom barcode
label;
- DI Mar 1997 - status gauge dialog box;
- DI May 1997 - NetCheck;
creating Active X components; building a
custom ReportSmith component.
- DI July 1997 - NetCheckII;
- DI Aug, Sept 1997 - Expert
Tool; QuickReport extensions - database
grid, custom previewer with zoom factors, page selection
- DI Aug 1997 - custom component editor; construction
guidelines for creating VCL components;
- DI Oct 1997 - persistent object manager - save/load state
of objects to registry
- DI Oct 1997 - formula compiler for extra speed
- DI Dec 1997 - component templates
- DI Jan 1998 - using the ToolsServices object to build a
property explorer expert
- DI June 1998 - TSeatChecker - checks if licence max user
count is exceeded; Formula compiler;
- DI Mar 1998 - multimedia button with variable images
depending on state & audio capabilities
- DI Dec 1998 - Use of plug-ins to allow changing features
- DI Mar 1999 - The singleton pattern & using it to
create a global user configuration object in providing
persistence
- DI May 1999 - The template pattern to build a UI
application framework
- DI June 1999 - The builder pattern to extend the
application framework by use of packages
- DI Dec 1999, Jan 2000 - An expert that adds wav-file
playing capabilities to components
- DI Jan 2000 - TEmbeddedForm - Embedding forms within
TabbedNotebook
- DI Jan 2000 - resource threads - a MTS replacement
- DI Mar 2000 - TFormShaper - drop on form to change its
shape to any bitmap image shape
3rd
party components:
- General components:
- ABC for Delphi - DI Mar 1996
- TWorldMap - DI Jan 1997
- SysTools - DI Jan 1997, Dec 1998
- STDynArray for D2 - DI June1997
- Sentry Spelling Checker - DI Sept 1997
- WPTools - word processing components - DI Oct
1998
- dtSearch - text retrieval engine - fast search of
text in files - DI July 1999
- Woll2Woll
1stClass - DI Dec 1999
- Database components:
- Woll2Woll
Infopower - DI Aug 1995, v2: Jan 1997, v3: Sept
1997, v4: Dec 1998;v2000: Apr 2000;
- [re]Structure - DI Oct 1995 (complete
programmatic control of Paradox tables)
- Open Horizon's Application Broker - DI Sept 1996
- MER Systems UDFlib (user-defined functions to
extend Interbase) - DI Sept 1996
- Raize Components - DI Jan 1998, Nov 1999
- Tamarack Assoc' Rubicon database search engine -
DI Mar 1998
- ODBC Express - DI Aug 1998
- TSQLBuilder - DI Jan 1999
- Advantage Database Server - DI Aug 1999
- DBISAM - small footprint database that compiles
into exe - DI Sept 1999
- Orpheus - DI Jan 2000
- ASTA - thin client n-tier tool, no DLL's or BDE
on client - DI Mar 2000
- Report writers:
- Nevrona ReportPrinter - DI Dec 1995; Sept 1996;
- Nevrona AdHocery - DI July 1997
- Reportsmith: DI Aug, Sept 1996
- QuickReport: DI Aug 1996
- Ace Reporter: DI Aug 1996
- Crystal Reports: v6 DI Mar 1998
- ReportBuilder: DI Mar 1999, Sep 2000
- Imaging:
- Light Lib - DI April 1996, Feb 1997
- Image Lib - DI July 1996, Sep 1998
- LEADTOOLS Imaging - DI Feb 1999
- Communications components:
- serial communications - Turbopower Async - DI
June 1997, Sep 1998
- HREF's WebHub - DI Nov 1997
- PBear's HTML
viewer
- Component creation experts:
- Potomac Component Create - enhanced editor: DI
Oct 1995
- Eagle Software's Component Developer Kit - DI May
1997
- IDE extensions:
- HyperAct's HyperTerp - scripting language - DI
Feb 1996
- American Cybernetics' Multi-Edit - DI Apr 1997
- Eagle Software's Raptor: DI Oct 1997
- AppVision's GenerationXpert - an expert for
creating experts - DI Aug 1997
- WinGREP (search utility) - DI Jan 1998
- Propel - easy subclassing of components to add
new features - DI July 1998
- Wanda the Wizard - wizard creator - DI Nov 1998
- CodeRush - code editor - DI Oct 1999
- Marotz Cost Expert - project maintenance &
cost estimating - DI Aug 1999
- Debugging/Memory Monitoring:
- Borland RADpack - DI Nov 1995
- MemMonD - DI June 1996
- BoundsChecker - DI Mar 1997
- Raize CodeSite - DI Jan 1999
- CASE tools:
- MicroGOLD Software's With Class - DI Oct 1996
- ModelMaker: - cheap UML tool, reverse engineering
DI Oct 1999
- Deployment:
- WISE installation system - DI Feb 1996, Oct 1998,
Jul, Aug 2000
- Youseful - DI June 1999
- Anti-piracy:
- TurboPower OnGuard - DI June 1998
- Compression/Encryption:
- TurboPower's Abbrevia & LockBox - DI Feb 1998
- Help authoring:
- JG Software's HelpScribble - DI May 1998
- Auric Visions' DotHLP - DI May 1998
- WinHelp Office / RoboHELP - DI May 1998
- MS HTML Help Compiler (free)
Other
Resources: