This month we looked into ActiveForms: the bugs, the downsides, and the advantages to be gained when you can work around them. In addition, we looked at communicating from your ActiveForm to the Browser, from the Browser to the ActiveForm, between two ActiveForms, and using ActiveForms in containers other than Browsers, such as Outlook.

In addition, we held a discussion regarding the future direction of ADUG Sydney. Lots of good ideas and suggestions were put forward by the guys at the meeting. As always, Borland were kind enough to keep us fed and happy.


Glenn Stephens introduced us to the Command Pattern. He showed how to introduce a multi level undo function in your application. The actions are all instances of particular command classes, which know how to undo their action themselves. We even discussed an enhancement to his class, which would cope with database changes. If one would keep inverse DeltaDS in his class, he/she could apply those changes and thereby undo the DB changes. Glenn’s source code is available here .

Before the next talk we enjoyed courtesy Pizza from Borland again. Thanks a lot!

During the second talk we had a look into dbExpress and its components (like TSQLConnection, TSQLDataset, …). We built a simple example app with the employee DB from Borland. During this process we raised the issue of concurrency handling and demonstrated the use of a record version number incremented by a trigger. This makes it very simple to identify if a selected record still exists in the same way on the server side.

– Photos available here.
– Mathias’ sourcecode here.


I was crook this month, so unfortunately I missed the presentations. However, Mathias reports:

“we had quite an interesting ADUG meeting yesterday. Pierre helped us come to grips with English Query and Pivot Tables à la OLAP. The most interesting part for me was that English Query and OLAP are supposed to work with any database via an OLE DB Provider. So in theory you should be able to access data stored in an Oracle or even in InterBase, provided you purchased the OLE DB provider available for InterBase.

In the Q&A session people were very shy. It took all motivation tricks of Pierre and me to get them to ask questions. But finally we could at least solve two problems raised by the attendees.

After pizza and garlic bread we delved into the InterBase events and realized how helpful a subscriber (TcdsSubscriber) on top of a subscriber (TIBEvents within TcdsMaster) can be.”

The sources for the IB Events presentation are available here and the slides here

Once again, thanks to Borland for keeping us fed and off the streets (err, Pizza and Training Room).


We were very lucky to have Peter Hinrichsen up from Melbourne. Peter took us through the evolution of a simple application, from simple for loop based traversals, through Iterators, method pointer-based Visitors, class-based Visitors, then a Visitor Factory, all tied back to his Open Source OPF (Object Persistence Framework). What was more is that all of this code was written live, from scratch, and without a single code template. Very impressive.

Next up was Julia Bischof from Rational. Julia took us through a very educational overview of modelling and the UML in particular, then showed off Rose’s support for Delphi. This was done firstly by explaining the details of Rose’s Delphi-UML mapping, then Reverse Engineering Peter’s OPF code into Rose.

Borland again kept us fed and happy with Pizza, Pepsi and such, and Vladimir Nelenson was the winner of the Delphi Informant Collection CD door prize.

More info about Peter’s presentation, and his Open Source OPF is available here


Glenn Stephens introduced us all to the .Net Framework and what opportunities we have for integration with Delphi 5. After a run through things like Assemblies, IL and the CLR, he demonstrated Delphi calling a C# object, VB.Net calling a Delphi COM object, and discussed calling a Delphi DLL from .Net. He finished off with a discussion about ADO.Net and ASP.Net, amongst other things.

Glenn also showed off some wizards he’s written for Delphi 5 to allow easy importing of .Net Assemblies into Delphi, and exporting of Delphi COM objects to .Net Assemblies, complete with obligatory About box with grinning photo of Glenn. The wizards are available for download here (if the thought of that About box hasn’t put you off, that is).

Again, we had Pizza and Pepsi kindly supplied by Borland, and Phil Stephens walked away with the door prize (Delphi Component Design by Danny Thorpe).


This month, the first meeting of the Sydney Chapter, we were in the hands of Mathias Burbach and Colin Johnson. Colin, from Borland PSO, was first up showing off Delphi 6’s support for Web Services, prompting off an interesting discussion on the relative maturity of this technology and it’s readiness for production. Regardless what you think of the technology, I think everybody agreed that Delphi’s support for it was first rate. Mathias then gave us a very entertaining presentation on Generic Database Design, and the web application he’s developed using this technology. The ability for an administrator to define completely new objects and have them immediately searchable by the website was extremely impressive. Thanks to both our presenters and to Borland for supplying Pizzas and drinks

– Photos available here.
– Mathias’ slideshow here.
– Colin’s slideshow and example here