delphi:d_main

Delphi introduction

see also:

Delphi Programming Main Index

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:
  • Object Pascal language:
    • Computer programming languages:
      • Pascal vs C++ - DI Nov 1995
    • Object Pascal basics:
    • 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:
  • Delphi IDE:
    • Object repository:
    • Object browser:
      • DI Nov 1995
    • Code editor - code Insight:
      • DI Feb, Mar 1998
    • Debugging:
    • Packages:
      • DI Feb 1998
    • Customising Delphi:
    • 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:

Reports:

Charts:

Crosstabs:

  • DecisionCube: DI Nov 1997

Communicating with other applications:

  • Window's messaging:
  • DDE
  • OLE:
  • 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 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:

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:

 

delphi/d_main.txt · Last modified: 2022/10/13 09:00 by gary1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki