Gantt Charts: Part 2 with Aleksander Wojtasz

Building Dynamic Gantt Charts with GDI32: Class Architecture Deep Dive (an Access User Group talk with Aleksander Wojtasz)

Gantt Charts: Part 2 with Aleksander Wojtasz

In a masterful follow-up to his wildly popular first session, Aleksander Wojtasz demonstrates significant enhancements to his interactive Gantt chart solution for Microsoft Access, including a complete code rewrite focused on performance and extensibility.

This advanced session builds upon the foundational GDI32 drawing techniques covered previously, diving deep into the architecture of a flexible, template-based approach that can be customized for various business scenarios. The presentation showcases two fully-functional examples - a hotel booking system and a production planning application - while providing detailed insights into the underlying class structure and event handling mechanisms.

Whether you're looking to implement sophisticated scheduling functionality in your Access applications or simply interested in advanced Access development techniques, this presentation offers valuable insights into building professional-grade interactive interfaces.

Template Architecture

Core Components

  • Gantt chart class as the main orchestrator
  • Layout state object for managing current view settings
  • Configuration object for customizable parameters
  • Canvas object for GDI32 drawing operations
  • Collections for dates, tasks, and activities

Class Structure

  • Task class for managing row items
  • Activity class for handling chart elements
  • Date class for calendar management
  • Rectangle class for coordinate management
  • Font description class for text rendering
  • Memory picture class for image handling

Interactive Features

Mouse Operations

  • Drag and drop repositioning
  • Resize handles for duration adjustment
  • Double-click for detailed editing
  • Right-click context menus
  • Mouse wheel zoom control

Visual Elements

  • Progress indicators
  • Custom shaped elements (polygons)
  • Icon overlays for status indicators
  • Dynamic text positioning
  • Frozen row support

Implementation Details

Activity Management

  • Start/end date handling
  • Fractional positioning within days
  • Progress indicator support
  • Move/resize restrictions
  • Collision detection

Drawing Operations

  • Rectangle rendering
  • Text placement and scaling
  • Icon positioning
  • Progress bar display
  • Custom shape drawing

Customization Options

Configuration Settings

  • Cell dimensions
  • Column widths
  • Menu distances
  • Grid divisions
  • Visual properties

Event Handlers

  • Activity changed events
  • Drag operations
  • Double-click actions
  • Right-click menu handling
  • Free-draw capabilities

Conclusion

This enhanced version of Aleksander's Gantt chart solution represents a significant evolution in interactive Access interface design. Through careful architecture and efficient code structure, he has created a highly flexible template system that can be adapted for various business scenarios while maintaining smooth performance and professional presentation.

Recording

The full recording is available on YouTube:

Join Live!

Want to get even more out of these presentations? Join the live Access User Group events! The next upcoming events are listed on the AUG Event Calendar.

Attending live gives you the opportunity to:

  • Interact directly with presenters during Q&A sessions
  • Network with other Access developers
  • Share your own experiences and challenges
  • Get immediate answers to your specific questions
  • Participate in group discussions

With multiple user groups across different time zones (and languages!), you're sure to find a meeting time that works for your schedule.

Acknowledgements

  • Base cover image generated by FLUX-schnell
  • Initial draft generated by Claude-3.5-Sonnet

All original code samples by Mike Wolfe are licensed under CC BY 4.0