Sydney Meetings
January 2010
A few techniques for drawing on the canvas -
How to anti-alias (smooth) your text, thin or fatten up the fonts, write text at angles and how to minimise redrawing flicker.
The code from Paul's presentation can be downloaded from here.
December 2009
Talking to Windows Services -
We will look at how to implement a Windows Service application and
examine the options to "talk" to the service. The presentation will
cover the standard Windows Service class TService and what RemObjects
has to offer in comparison.
DUnit Test Delphi User Interfaces -
This presentation will cover how to write unit tests with DUnit against
forms & dialogues. We will see how we can implement an automated
test suite even if modal dialogues are involved.
November 2009
Using .NET Assemblies in Delphi -
Paul will show us what his development team at Happen Business has achieved with RemObjects Hydra. In particular
- Using .Net within Delphi
- Delphi 2010 conversion
- .Net DLL in databases
- using RemObjects between Delphi and .Net
- issues with threading when combining .Net & Win32 code
October 2009
RTTI Past and Present -
What's RTTI? It's Run-Time Type Information or the ability to discover,
query, set and invoke variables and methods at runtime. It's not
something you use everyday but when you do it either saves you from
hours of monotonous typing or it lets you do things in code you didn't
think were possible with Delphi. It's one of Delphi's hidden gems and a
very valuable tool for any Delphi developer. We'll go version by
version through the features of RTTI as it's evolved from modest uses
back in the Delphi 5 days, such as avoiding lots of string constants,
to the now super enhanced RTTI in Delphi 2010, which brings dynamic
programming capabilities to Delphi comparable to .NET's reflection.
September 2009
Developing
multi-threaded multi-tiered/distributed applications with the CSI
application framework -
This presentation has been split into two parts, the first part was
presented in June outlining the theory behind the framework
architecture, and the second
part will now be presented this month illustrating the practical
nature of the framework implementation. We will dig into the source
code and see how the 6 basic component "types" have been implemented. I
am looking forward to your suggestions on how to improve it even
further.
The most recent version of the framework is available for download from
here.
August 2009
Full-Text
Search, Newsgroups, Namespaces and Package Design -
This month, Ann
Lynnworth from HREF Tools will be filling in on short notice. Ann
will talk about two recent solutions and, time permitting, challenge
the group with some unsolved problems. The solutions have to do with
the recently released Rubicon full-text search engine, and with a
project-startup-manager component for use in a wide range of win32
applications (especially applications that might need to run in
console-, gui-, service- and other modes). The unsolved problems have
to do with name spaces, packages and open source component versioning.
Programming
sockets with Asynch Pro -
Mark will be filling in on short notice too. He will show us some of
his socket code based on Asynch
Pro.
July 2009
What's in
my tool chest -
This presentation will cover some of the tools used by Lachlan to help
him develop applications with Delphi effectively. A recording of the
presentation can be found here.
June 2009
Embarcadero:
What's cooking in the labs -
This month Malcolm Groves will be coming along to tell us what he can
about the future for Delphi and Embarcadero. Most of you will know
Malcolm as he has been involved in Delphi and ADUG forever. Malcolm
will hopefully be demonstrating some of the cross-platform native
Delphi features, and maybe even the touch/gesturing support, announced
recently.
We have all had our chance to play with Delphi 2009 now and Malcolm is
the ideal person to to answer questions, take feedback and field
gripes.
Developing
multi-threaded multi-tiered/distributed applications with the CSI
application framework -
This presentation will be split into two parts, the first part in June
outlining the theory behind the framework architecture, and the second
part in July illustrating the practical nature of the framework
implementation. I will explain how it is possible to break all
"elements" of distributed systems into 6 basic component "types", and
how by implementing a common interface across all "components" it is
easy to build complex multi-threaded multi-tiered applications without
requiring any knowledge of threads or inter-process communication. I
will also explain how an application's "components", their
configuration, and how they are "wired", can be defined in a
configuration file (rather than code) to remove any "coupling" between
the components at design time.
May 2009
VCL for the
Web in Delphi 2009 -
This presentation will cover the basic building blocks of VCL for the
Web (formerly known as IntraWeb). We will look at Page Mode &
Application Mode, see how state is managed in a VCL for the Web
application and also make use of data-aware controls. This is as close
as you can get to normal Delphi development when it comes to web
applications.
April 2009
The DBX
Architecture in Delphi 2009 -
Let us watch Marco's DataRage
presentation on the DBX architecture in Delphi 2009. The presentation
provides an introduction to the Delphi 2009 renewed DataSnap
architecture that let's you create multi-tier applications in an easy,
RAD way delivering power and flexibility for your remote,
zero-configuration, client applications.
March 2009
Delphi 2009
Debugger Tips & Tricks -
The new Delphi 2009 IDE has brought some substantial enhancements, one
of which is the improved debugger features. We will have a look at
Delphi 2009 and how it compares to Delphi 7 & 2007 when it comes to
debugging functionality.
February 2009
Secrets of the Delphi 2009 RTL - Marco Cantł
Let us watch Marco's CodeRage III presentation on the Secrets of the Delphi 2009 RTL
and discuss it afterwards. Marco is a well known book author in the
Delphi community and has presented at many conferences in the past.
January 2009
ADUG - what I expect & what I can contribute -
Delphi Community
In recent months it has been a struggle to find speakers for our
meetings. We seriously need to consider what to do in order to keep our
meetings interesting to our membership. So please join us for a round
table discussion on our future meeting structure/format. Subsequently
we will have a few drinks at the City Tattersalls Club.
December 2008
Advanced
debugging with logging frameworks -
We'll look at how using a logging framework such as SmartInspect or
CodeSite can be used both during development to speed up your debugging
and after deployment to resolve problems reported by your end users.
Focusing primarily on database applications we'll use and extend these
frameworks (mainly SmartInspect) to give us detailed insight into how
our applications work and how they're being used by others. These
techniques will work on any application that uses a TDataSet descendant
class for it's data access.
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
November 2008
Delphi 2009
- How would your project benefit from it? -
We will have a look at the new features of Delphi
2009 and focus on your how your project could benefit from it. So
please bring your examples and let's have a look together what Delphi
2009 has to offer out of the box.
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
Octorber 2008
Basics of
using audio in Delphi applications -
Discussion of how to utilise audio within Win32 Delphi applications
from simple sound effects to handling and converting audio data streams.
The source code of Paul's presentation can be found here.
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
September 2008
Living like
the Greek Gods? -
In recent times I have started to experiment with Linux Ubunutu & Wine
in order to run Delphi Win32 applications under Linux. We will
have a quick look at Ubuntu, install Wine and run a simple Delphi app
built from scratch. Then we open the floor for discussions on what
features you are using in your application and see if we can get them
to run under Linux too.
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
August 2008
Software
Archaeology -
(AKA I've just inherited a million lines of Delphi code and I don't
know what to do with it) Among the features added to Delphi in recent
years, there are a few that seem to be regularly put into the "too
hard" basket. UML is one, Audits and Metrics is another, Design Pattern
support, even Unit Testing in many cases. An opinion often expressed is
that unless you use these things from the start of your project, they
are no value to you. In this session, Malcolm will take us through a
slightly different way of using these and other features, with a
particular focus on the value they can give to someone who needs to
maintain and extend an existing, large codebase that was developed
without the use of any of these features.
Delphi 2009
Preview -
The R&D efforts for the next version of Delphi - codenamed Tiburon
- are well on its way. We have seen already a few blogs about the main
features of the next version of Delphi. Unicode seems to be one of
them. This month we can enjoy even two presentations of Malcolm Groves,
CodeGear's Asia Pacific Product Director, in our home town.
June 2008
What's new
in Firebird 2.1 -
In April 2008 the open source Firebird community released version 2.1
of Firebird (see also here). Let's have a look together what all these
new features mean to our day-to-day work:
- Database Triggers
- Dynamic Recursive Queries
- Update or Insert Statement
- Treat Text Blobs Like VarChars
- Database Monitoring via SQL
- ... (and many others)
Whilst this
presentation aims at explaining most of the new features we also want
to discuss their relevance for your current projects.
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
May 2008
Embarca-who?
E/R Studio? DB Artisan? Rapid SQL? -
I've never heard of them either but I'm curious as to what sort of
products the new owners of CodeGear have to offer. Come along and I'll
demonstrate what I've learnt from playing around with the trial
versions of the Embarcadero
suite of database tools. Are they useful and reasonably priced for
small teams? Are they better than the competition? Do they give any
hints as to where Delphi might head in the future?
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
April 2008
CodeRage or Code Crunch in Sydney - Delphi Community
Unfortuantely David I. can't make it to the meeting. This is why we
have quickly decided to offer you a replay of any CodeRage session or
bring your notebook for a Code Crunch session. During Code Crunch we
aim to solve a small problem all together.
Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
March 2008
Phone
System Integration using Delphi and Asterisk OpenSource PBX -
Asterisk
is an open source VoIP Private Branch Exchange software system that
runs on Linux on a standard PC hardware platform. A demonstration of
how to write a Delphi application to control user access to retrieve
information via a telephone based user interface will be presented.
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
February 2008
Webcam Fun with Delphi - Bob Swart
In this session, you'll see how to use Delphi and a webcam to build fun
and useful applications. This is a CodeRage
2 recorded presentation, which we will replay and have a discussion
about.
Question and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
January 2008
Memory Leak
Detection with FastMM -
Since Delphi 2006 FastMM has become the default memory manager for
Delphi. The presentation will focus on the memory leak detection
feature of FastMM and how to pin down even the line of code, where the
leak was introduced.
Not your
father's Pascal -
There have been many extensions to the Delphi/Object Pascal language
since Delphi 7. Are you making the most of these new language features?
Did you know that records can now have methods, properties for
instance? Do you know what the difference between "private" and "strict
private" is? What is a "sealed" class? What is a "class helper"? Have
you ever used nested classes? What is a "for in" loop?
We'll look at these new language features and others and discuss how
you can make use of them in your code.
This presentation can be downloaded as a video from Lachlan's FTP site.
The FTP server and password can be found in the ADUG mail-list archive here.
December 2007
CodeRage II "in Sydney" - All the famous guys
From 26th to 30th November 2007 CodeGear held the second online
conference called CodeRage II. The presentation times have been a bit
tricky for us here in Australia (12 AM to 9 AM). Now all the
presentations are available for download from here.
The complete schedule was published here. Please pick your preferred topic and we will
run the video and then have a short discussion on the presentation
during the pizza break.
Future Speaker List - Delphi Community
The topics suggested at the last meeting are published here. Please let us know whom we could approach to
present in one of the topics. If you wonna give it a go - even better!
We are looking forward to your presentation. A list of suggested topics
has been posted to the ADUG mail-list here.
November 2007
An
introduction to using Delphi inside Virtual Machines -
For the past 2 years I've used Delphi exclusively from inside VMware
virtual machines, providing me with an inexpensive development and
build environment that is consistent, reliable and portable. This
presentation will give my tips on how best to use Delphi and virtual
machines together. No prior knowledge of virtual machines is required.
The presentation can be downloaded as a video from here.
Your
preferred topics for the future - Delphi Community
Please help the sub-committee in planning future meetings and come
along with your suggestion for good topics in the future. You may even
know a possible presenter.
A list of suggested topics has been posted to the ADUG mail-list here.
October 2007
CodeGear
RAD Studio 2007 -
Delphi, Delphi for .NET, and C++Builder in one environment for rapidly
developing Windows and .NET 2.0 applications on and for Windows 2000,
XP, and Vista. You get all the tools you need to create AJAX powered
web pages using ASP.NET 2.0 and VCL for the Web and database
applications with local database connectivity. And deploy your
applications, with no additional charges, on the Windows platform or
your choice.
Nick will talk about & present the new CodeGear RAD Studio 2007. He
will also share with us the Delphi Roadmap (e.g. What’s coming up in
future versions of Delphi?) and be available for an open forum
discussion.
September 2007
CSI
Object-Oriented Application Framework for Win32 -
The CSI application framework has been developed over the last ten
years to provide a simple and easy-to-use framework for application
development to handle some of the basic application "plumbing" common
to most applications. The framework has also been extended to provide
some general utility routines, classes, and components, and offers
generic inter-thread messaging, generic inter-process TCP
communication, and abstracted database access. We will have a
presentation on this framework at our meeting as a leed up to the
workshop on the 19th
September 2007.
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
August 2007
Automated
testing strategies, which tests to use when -
Automated testing to many of us means DUnit and possibly some kind of
performance or GUI testing. But those are not the only tests that can
be automated. On the web load testing is often critical, and for
regression testing a GUI test tool like TestComplete or WinRunner can
make all the difference. With more of us writing multithreaded code
some kind of thread-intensive testing will find bugs that would
otherwise be hard to detect and can be impossible to reproduce any
other way. I'll run through a few techniques and tools that I use, and
suggest ways to get started.
Chris' white paper on the topic can be downloaded from here.
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
Juli 2007
Integrating
Object Pascal and PHP -
Prior to the release of CodeGear's Delphi for PHP there was another
way for Delphi developers to integrate PHP into their Delphi
projects. The PHP4Delphi project is an open source framework for
Delphi (v5 and later) that lets you extend the functionality of
the PHP language using Object Pascal. We'll go through examples
that show how you can call Object Pascal code from within PHP code and
vice versa.
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
June 2007
Delphi and
OpenGL -
Traditionally most Delphi programming has been about reading and
writing files and databases - and no doubt this will continue to be
bread and butter programming for many.
However, built into the plumbing of Windows is OpenGL. It's 3d
subsystem of libraries that is becoming a more and more important. Many
of the special effects in Vista are built using the OpenGL subsystem.
This talk covers two different styles of 3D programming, firstly, the
low level method directly accessing the OpenGL libraries and then
secondly, a much easier system : GLScene. This set of components
provides a VCL drag and drop of 3D components that will be familiar to
many Delphi programmers.
With GLScene, 3D objects can be added to Delphi forms and manipulated
like any other VCL components. Thus bringing OpenGL programming within
the reach of projects that many of us may currently be working on.
May 2007
Architecting
an enterprise-wide system -
A discussion on a current real-world Delphi system, with a focus on
n-tier considerations and inter-process communication. I will be
drawing on a novel approach that has been used in the development of an
alarm monitoring system, which should hopefully prompt further
discussion on these and other related is.
Using
Delphi to control external devices -
A discussion on using Delphi as a Central Controller and Graphical
Interface in audio/visual installations.
April 2007
Easy GUI
development with ActionBands -
ActionBands are an under-utilised suite of components in the Borland
VCL which can give you a lot of functionality quickly to desktop
applications. Think of them as super-charged TActionLists. In this
presentation, I will explain:
1. What are the ActionBand components;
2. Demonstrate usage and features;
3. high level design
4. Summarise the merits
5. Summarise the limitations and weaknesses;
6. Demonstrate my own Unicode version of Action bands.
You will find Sean's source code here
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
March 2007
Licencing
shrinkwrap software & managing customers -
This presentation will show some interesting techniques to create
licence files for your shrinkwrap software. How to activate certain
modules of your package and distinguish between stand-alone and network
version of the same app. The demo also delves into the technique of
managing technical support renewals and efficient communication with
the client including automatic letters & e-mails as well as
recording any actions taken against that particular licence.
Franēois' slides code here
Question
and Answer Session - Delphi Community
Bring your current development problem to our meeting and let us "crack
the nut" together.
We spoke about Cary Jensen's CodeRage presentation on "Building
Scalable Data Access Layers for ASP.NET Applications". The source code
for his presentation can be found here.
February 2007
Your Delphi apps under Windows Vista - Delphi
Community
We will look at a set of articles
published on the internet and discuss necessary amendments in your
Delphi source code to make your apps first class "citizens" under
Windows Vista.
Turbo Delphi at the universities - Delphi Community
With the start of the next term we will have the opportunity to
distrubute our ADUG burned Turbo Delphi install CDs to a bigger number
of computer science students at UNSW. We want to look at basic training
videos taped by Nick Hodges and decide on a good mix of topics to
speak about at the "Tech Friday" of the student guild at the School of
Computer Science and Engineering (CSE).
January 2007
Concurrency
Handling in Win32 World -
We will look at concurrency handling in Delphi Win32. How to detect
changes made by another user since you selected your resultset and how
to handle them efficiently. This solution is based on
Firebird, IBX and "visual" inheritence on Datamodules. We will use
a centralized OnPostError handler to deal with the conflict.
You will find Craig's source code here
Concurrency
Handling in .NET/ECO World -
We will look at concurrency handling in Delphi .NET with ECO. The
presentation will show how to make use of the ECO Timestamp, which is
really a version number on the record, how to detect changed object
instances that could not be saved because of a direct conflict and how
to deal with that conflict on the client side (EcoSpace & WinForm).
You will find Mathias' source code here
December 2006
Case Study:
Remote access via RemObjects' DataSnap integration pack -
This will look at how we fulfilled a requirement to allow existing
applications to remotely access data using RemObjects and specifically
their DataSnap integration pack. It will also focus on ways forward by
migrating to using RemObject's Data Abstract product.
Christmas
Wish-List for Delphi Developers - Delphi Community
Please bring your preferred Christmas biscuits & cookies and let us
discuss what you would like to see from CodeGear in the future.
What are the challenges in your current project and how could the next
version of Delphi support you best?
November 2006
Long live
Live Templates -
Did you realise that the Ctrl+J template system in the Delphi 2006
editor has had a massive facelift and is now actually quite useful? Now
known as Live Templates, the new system is somewhat comparable in
functionality to the templates from the old CodeRush for Delphi 3-7.
We'll take a look at how to edit the existing templates, write a new
template, and write a template that can call your Delphi code as it
executes.
Hopefully by the end of the session we'll go part of the way to helping
you with your CodeRush withdrawal symptoms.
You will find Lachlan's slides and source code here.
October 2006
Follow-up discussion on Threads - Delphi
Community
After last month's round table discussion on threads, quite a few of
our members expressed their interest in discussing the topic further.
This is why we thought we would do this rather sooner than later.
What I always wanted to present on, but never
dared - Delphi Community
As you can see in the last few months we have had difficulties in
finding enough speakers and topics. Thanks to this discussion, we hope
to identify topics of interest as well as possible speakers. For sure
we also have time for a Q&A session.
September 2006
A
Roundtable Discussion on Threads -
any of us have considered using threads, some of us have considerable
experience with them. However, no matter how much we know, there always
seems to be more to learn. From the basics of when to use threads,
through to the complexity of inter-thread communication, I will
introduce the issues and hopefully prompt others to share their
knowledge and experiences.
You will find Misha's source code here
August 2006
Case Study:
Happy CHAP thanks to ECOIII -
The Centre for
Health Assets Australasia (CHAA) has been given the task to
organise a survey to capture & analyze financial spendings in the
health building sector on behalf of the federal government and the
state governments of Australia & New Zealand. The project was
called Capital Health Asset Project (CHAP) and Maranatha
Consulting was approached to provide IT consulting services for the
project. The case study will focus on the technical side of the
project and how Delphi 2006 & ECO helped to make it a much
easier task for CHAA to analyse the data entered by the different
jurisdictions.
July 2006
Get your
applications into shape with FIT -
Based around HTML this open source testing framework allows you and
your users to work together to build tests using familiar tools such as
Word or Excel. Especially well suited to Test Driven Development
methodologies this framework also has the potential to change the way
you gather requirements from your users.
You will find Lachlan's source code here.
Make the
most out of ClientDataSets -
See how ClientDataSets can provide an easy logging facility for updates
to the database. Even with nested tables you have full control
over what you want to do with the Delta. If time permits after this
short presentation, the group can discuss experiences in the use
of ClientDataSets or any other questions you might have, regardless of
your expertise level.
You will find Craig's source code here.
June 2006
Round Table
Discussion: The Future of Delphi & DevCo -
Malcolm Groves will give us an update on DevCo and the plans for Delphi
(and the other Borland developer tools) - not to be missed for any
Borland development tool user. For all those ADUG members that couldn't
make it to the symposium in either Melbourne or Adelaide.
Build your
own gant chart component -
This presentation will show a visually interesting commercial
application, developed in Delphi 7 & firebird DBMS. The application
is a Gantt style calendar builder, similar functionality to that of the
MS Project application we all know so well. We will cover some of the
custom component development used as well as inheritance, paint
override and image drawing to show you how an application of this type
can be built.
April 2006
Developing
a Google Desktop sidebar using Delphi -
Zijian has developed this without using the Google SDK. The talk will
focus on the desktop, COM, and plug-in, using Google Desktop
as an example.
Product
Review: FastMM -
Have you ever had the feeling that you were losing your memory? Come to
this month's ADUG meeting to find out how to stop it. Anthony will be
demonstrating how to use FastMM
to detect leaks
and help plug them. If time permits, he'll also demonstrate a technique
to help you remember other stuff as well.
March 2006
Application
and Event Logging Framework -
We've all done logging at some time, whether to record errors, check
performance or log data changes. However, how do you log a
communications error to the database if your network has gone down?
Misha's solution allows multiple client applications to centralise
event logs on a server database in a reliable way.
ADUG
Meeting Reminder with ECOIII -
This will be a short presentation on how ECOIII has helped me to build
an even better meeting reminder mail-merge tool. We will look into
building the model separately from the database & UI. We will write
NUnit test cases to proof the "business rules" are working properly. We
will see an import app to import existing TClientDataSet XML files and
finally the beginning of an ASP.Net front-end for the model.
You can download the source code from our ADUG JediVCS version control
server at jvcs.adug.org.au as user "Guest" with password "Guest".
February 2006
Jim2
Business Engine ERP package -
The development team from Happen Business will be presenting an overview of
their Jim2 Business Engine ERP package.
Topics include…
- General architecture
- Coding methods and style
- Release cycle
- Support issues
- Documentation
- MS SQL tricks and hacks
- Various Windows related issues and workarounds
- Software startup issues
- How we have achieved success so quickly
- Some of the trickier coding issues we have had to
tackle.
- 3rd party components we use and why
- D2006 migration issues
- User interface design
January 2006
What's new
in ECOIII -
ECO III, released with Delphi 2006, introduces many new features
to dramatically improve developer productivity. This session covers the
new features, such as State Machines, the ECO Action Language, multiple
persistence mappers, as well as the many smaller but much requested
tweaks that have found their way into this release. We also cover some
dramatic changes to how we deliver ECO to you. A must see session for
anyone using, looking at using, or wishing they could use ECO.
For more information on ECO have a look here.
December 2005
Programming
in Virtual Machines -
Moz shows you the joy of programming inside virtual machines - why
you'd want to, how to set them up and some tweaks to make them
moreuseful. He'll bring along a test rig for people to look at.
His talk can be found here.
November 2005
Round Table
Discussion on Delphi 2006 -
During his tour throughout New Zealand & Australia to present on
Delphi 2006 at the Borland Technology Days 2005, John Kaster -
Principal Engineer for Borland Software Corporation (USA) - will have
time to meet with us at a regular ADUG meeting.
Tutorial on
Stored Procedures in MS SQL Server -
Stuart will cover he basics of stored procedures in MS SQL Server and
why you may wish to use them. He will then delve into XML, marking
duplicates and handling tree structures inside Transact-SQL.
October 2005
DeXter
Sneak Preview -
Malcolm will be giving us an insight into the next version of Delphi
codenamed DeXter. We will see ECO III, the next version of ECO. He will
explain some of the new features and then put ECO through its paces.
This will be followed by a look at the Delphi Compact Framework
compiler and finally, if we have time, a quick look at C++ Builder -
the latest language personality in Delphi.
Tutorial on
Embedding Control Functions into Columns of a DataGrid -
During this discussion an Interface definition is defined
(IHostControl) which supports the implementation of customized Controls
that may be embedded within a DataGrid or directly placed on a Windows
Form.
The original problem required standard or customized Controls to be
made available for columns of a DataGrid or placed on a form. These
Controls are to behave identically in both locations.
To reduce the development effort and complexity for each Control, the
following strategy was implemented. A wrapper class per environment was
implemented which controlled any customized/standard Control which
supports the IHostControl interface. Any Control could implement this
interface.
The tutorial shall discuss and demonstrate the implementation of the
above.
September 2005
ADUG
Membership System -
The team developing the new membership system wants to present its
results so far. As we have moved to ECO recently we will discuss the
class diagram and how ECO should help us to be more productive. We are
looking forward to your comments and suggestions for improvement.
"The Team" are Craig Goodall, Dick Walker, Esther Hamburger, José
Garcķa, Mathias Burbach and Phillip Allan.
A few more
of my favourite tools -
I have been referred to as a tool junkie by one of my colleagues. But I
prefer to think of it as spending an inordinate amount of time finding
tools which will save me time. Come along and find out my favourites -
like Autoruns and Process Explorer - where the time has been wasted
for you.
August 2005
Turning MDA
into reality with ECO2 -
We will have a look at a commercial application developed by Dick
Walker using ECO2. We will look at how ECO and .NET are used to create
a real life business application. We will cover the general concepts
involved, discuss design decisions and take a high-level view of some
of the latest technologies can be used. Come along, have a look and ask
some questions.
Here are some helpful links:
Modal
Frames -
Modal dialog boxes stop your application in its tracks: the user is
forced to deal with it before any other operation is allowed. This
might make sense in an SDI application, but very little in a MDI
application, where an error message on one form prevents you from
opening another. Why should this be so? Following a need to have modal
dialog boxes be modal only to the current form in a MDI application,
"Modal Frames" were born. We will cover the design and implementation
of what is yet another very useful feature of TFrame.
The source code of this presentation can be downloaded from here.
July 2005
Turning a
program into a sustainable software business -
Has your mind every drifted and wondered "what could I code that would
really make a difference to the world, and be turned into a sustainable
software business". This talk passes on lessons and ideas on what we
did at the architecture level, and in terms of processes, configuration
management and documentation to achieve this.
We followed a broad agile process of peer testing , daily builds and
incremental development, but took a slightly different approach in that
we did build a layered platform up front....and stuck to it, with
continuous cleanup and periodic spring cleans.
The talk will cover some of the patterns used and the architectural
framework, in particular the persistence layer. We'll talk about the
commercial need for a "build it and speed it up later" approach. A key
to the product's success is its amazing configurability and we'll
discuss how that was achieved, and also the way we do configuration
management that allows 100's of customers to all request their own
customisations while maintaining one version of the code.
Lastly documentation! Although hard to maintain, it is the level that
is important to get right. eTrack uses a variation of use cases to
document fanatically the business requirements of every issue,
enhancement and feature in a quick efficient manner that works in a
virtual environment and results in almost zero rework.
Questions
& Answers Session - ADUG Membership
As requested by our members we re-activate an old tradition of having a
Questions & Answers session from time to time. Feel free to post
your question(s) to our mail list server.
The posted questions can be found on our mail list archive under "Sydney Meeting: Questions
+ Answers" in July 2005.
June 2005
Practical
interface usage -
This session will introduce Object Pascal interfaces (not user
interfaces) and provide some practical examples of where they can be
used. Examples will include interface usage in the VCL, using
interfaces to build an application that be run either as a single exe
or a distributed system, code that can be reused in both a web and
desktop application, and a technique useful for library type code that
gives a class seperate private and public interfaces.
If you're unfamiliar with interfaces or if you have trouble finding a
role for them in your applications this session will give you some
tips.
ModelMaker
8 Product Review -
ModelMaker is a two-way class tree oriented
productivity, refactoring and UML-style CASE tool. It is specifically
designed for generating native Delphi code. It has won serveral Delphi
Informant "Best Modelling/UML Tool" awards. Since it was bundeled with
Delphi 7 as ModelMaker 6.2 the company ModelMaker Tools has released
version 7 & 8. So its time to have a look at the new features of
ModelMaker 8.0.6 and why and when to use it.
May 2005
What's new
in InterBase 7.5 -
Are your customers struggling with 4 GB InterBase files, too? Do you
want to monitor closer what's going on in your InterBase server? Then
the new version of InterBase might be of interest for you. Come along
and see what improvements the Borland InterBase development team
recently introduced to InterBase 7.5.
You will find the InterBase PLANalyzer home page here.
You will find the InterBase Performance Monitor home page here.
You will find the BorCon 2004 InterBase proceedings here.
ADUG Sydney
Activity Review -
Mid April the Sydney sub-committee approached all ADUG members in NSW
to answer a few questions regarding the future direction of ADUG in
Sydney. Quite a few of you have replied. We would like to discuss their
suggestions for improvements with you. Please come along and help us to
make this chapter even more interesting.
The result of the survey can be downloaded from here.
April 2005
ECO2:
Enhanced capabilities for Model Driven Development -
For this presentation Damien will briefly outline what Borland offered
in ECO1 and how this compares to the increased funcionality in ECO2. He
will then go through an example of these new capabilities in Delphi
2005. Some of the features that he will be discussing are:
- Synchronisation of multiple ECO Spaces
- Web development with ECO
- Transaction support with ECO
The source code of this presentation can be downloaded from here.
The
Singleton Design Pattern -
The Singleton design pattern is defined as: "Ensure a class only has
one instance, and provide a global point of access to it." I will be
discussing various Delphi implementations of the Singleton design
pattern and the trade-offs associated with them.
So come along to find out everything you wanted to know about
Singletons but were too afraid to ask.
The source code of this presentation can be downloaded from here.
March 2005
NexusDB V2
Memory Manager and RDBMS -
NexusDB is a high
speed DBMS engine for Delphi, C Builder and .Net applications. Version
1 has been a successful heir to the popular FlashFiler engine from the
now defunct TurboPower Software company. A significant part of the
success and speed of NexusDB can be attributed to its well known memory
manager. In this talk we explore both the Nexus Memory Manager and
Version 2 of NexusDB. Aspects of the Memory Manager that make it the
technical best of its kind on the market are explained in this
presentation. Examples showing its speed and lean use of memory will be
demonstrated highlighting just how easy it is to use. The talk will
then lead on to an in-depth discussion of Version 2 of the RDBMS,
NexusDB. The various new features of NexusDB will be explained, with
examples, as well as a look into how to utilize it potential to the
fullest. Version 2 also represents a move by Nexus into the .NET world.
Future editions of NexusDB, namely the Enterprise Edition, will also be
showcased.
Automated
Solution Generation Algorithms for Scheduling -
The generalized scheduling problem is a well known real-world work
issue which confronts all levels of industry and government on a day to
day basis. Specific examples of such problems include time tabling,
rostering, job-shop scheduling and the well known travelling salesman
problem. The provision of the automated generation of solutions to
these problems has interested business analysts and academics alike for
many decades. Research into this area has resulted in a huge number of
publications discussing proposed algorithms, implementations and
systems. In this talk is presented a summary of the more
well-researched algorithms and some recent research results. The
results present allow a more deeper understanding of the various
techniques including insights into regions of the solution phase space
they are more better suited to.
An good introduction on Constraint Satisfaction Programming is
available here.
February 2005
Creating
and Using Web Services with Delphi 2005 -
In this presentation we will explore how easy it is to create and
consume web services with Delphi 2005 thanks to the Microsoft .Net
Framework SDK. After buiding our own simple web service we will consume
an existing web service to retrieve weather information around the
globe and store those requests in a database. Finally we will show how
to present those weather requests in an ASP.Net page.
The source code of this presentation can be downloaded from here.
January 2005
Member
Built App: A Business Process Management System -
During the last few years, Glenn has been designing & building a
Business Process Management (BPM) system in his spare time which
consisted of nights, weekends etc. This BPM system was designed to
allow people to perform the most common operational tasks, such as
moving domain specific data in a natural way by integrating databases,
workflow, middleware, enterprise systems etc, so that managers and
process change engineers can define automated processes as well as
monitoring KPIs.
Glenn will demonstrate the techniques used to create a professional
client/server application with high levels of usability, such as the
what GOF and POEAA patterns he used, how to setup a complex
serialization model that supports file persistance, the clipboard and
databases and an overview on how he found developing his first major
.NET application.
A faster,
stronger Delphi 2005 -
A look at the new Delphi 2005 IDE, going beyond the surface and
exploring some of the many different customisation options available,
some documented and others not. In particular a way to dramatically
shorten the load times of Delphi 2005 (also Delphi 6-8 as well) will be
shown as well as some fixes and tips to keep the IDE running smoothly.
The Delphi Settings Manager is available for download from here.
You will find more information in Lachlan's blog entries under "A lean mean Delphi
machine"
December 2004
Automated
Code Generation using CodeSmith -
CodeSmith is a freeware code generator that can be
used to generate any sort of text file including Delphi source files.
It can come in handy if you need to write several classes or units that
are almost but not quite identical to each other such as strongly typed
lists or object wrappers for database tables. Templates are used to
generate the Delphi source code using a template syntax that is very
similar to ASP.NET.
Managing
Security via User Roles in InterBase -
During this presentation we will look at one possible scenario to
manage user security in InterBase. We will discover how subjects can
help to prevent users from using third-party tools to access the data.
The techniques presented will demonstrate how to use the features of
the operating system to assure that the user logged into the database
is also the user using the application. The presentation will focus on
the creation of a security admin tool to manage roles and user
accounts. We will also see an example of a client application, which
demonstrates a generic way of applying your database access rights to
the user interface.
The slides and the source code of this presentation can be downloaded
from here.
November 2004
DUnit on
DataModules -
Sometimes it seems difficult to get Delphi's RAD approach and DUnit
"under the same hat". This presentation will show how you can get the
most out of DUnit even if you use TDataModules and TDataSets. We will
see how we can separate our business logic from the user interface and
how to apply unit testing on the business logic container called
TDataModule.
The source code of this presentation can be downloaded from here.
Observer
pattern with Delphi 7 -
ModelMaker
provides some demo codes for the observer pattern. The talk will
enhance the demo patterns for production.
October 2004
ADO.NET
& Borland Data Provider In-Depth -
The talk will cover the fundamentals of ADO.NET, like DataSet,
DataTable, DataRow, DataColumn & DataAdapter. We will see how
Borland's components (e.g. BdpConnection, BdpTransaction, BdpCommand
& BdpDataAdapter) will help you to build database applications
under .NET for a variety of SQL servers. We will learn about a very
efficient mechanism to control concurrency situations and how to handle
PK values in a disconnected "DataSet-world".
The source code of this presentation can be downloaded from here.
September 2004
Object
Oriented Design using Together Designer Community Edition and Colour -
Take a look at the recently released freeware version of Together Designer from Borland. Together Designer
is a UML diagramming tool with great flexibility and intelligence in
it's behaviour. A technique for using colour with UML diagrams will
also be discussed, plus a short introduction to basic UML notation if
required.
Utilising
the WebBrowser within -
All Windows operating systems since Windows98 contain an embeddable
version of IE. In this session we look at how Internet Explorer can be
embedded into your applications to provide a rich user interface, and
still maintain operability with your application.
The source code of this presentation is available for download from here.
August 2004
Web Services Trick and Tips with Delphi 8 - Glenn
Stephens
The basics of ASP.NET web services are easy to grasp. In a nutshell to
create a Web Service, you create a class that inherits from
System.Web.Services.WebService and apply the WebMethod attribute to the
methods you want to expose as part of your web service. But like
programming on any other system, once you try to perform more complex
tasks, you will need to know some more complex ways of working with
ASP.NET Web Services using Delphi 8.
This session will take you through some of the advanced ASP.NET Web
Services tasks that you are likely to come across in a production
environment such as multi-threading Web Services clients, using binary
data in your web service and allowing your Web Service to accept XML
data without the need for defined parameters.
Version Control with FreeVCS - Mathias
Burbach
We will look into the features of FreeVCS, an open source version control software.
This project has is been overtaken by the JEDI project.
July 2004
An XML Case Study - Misha
Charret
In this short presentation I will illustrate how XML was used as the
framework to implement a web sports statistical database. The purpose
of the application was to automatically download sporting results
(cricket, tennis, etc) from internet web pages to populate tables in a
sports statistical database. Two of the hurdles to overcome were to
effectively parse a variety of poorly formatted web pages and to
determine suitable database schemas to allow effective statistical
queries. I will explain how the use of XML schemas and documents were
utilised to achieve these aims.
Software Localization with Multilizer - Bisser
Tzanov
The software package Multilizer is well known for years as a good
software globalization tool among the Delphi developers. The latest
version: Multilizer 6.0 makes the Software localization efforts even
easier and more efficient. Find out why!
June 2004
Threads to
your help - Part 2 - Malcolm
Smith
This session will cover the basics of threading in Delphi.
In particular
- why/when to use threads
- basic thread details such as FreeOnTerminate,
OnExecute, Synchronize
- methods of terminating threads
- notification of thread completion
- thread access to shared objects using different sync
objects
- critical sections, mutex, semaphore,
multi-read-exclusive-write
- TThreadList and custom thread safe lists
- and anything else I can think of....
Data
Abstract Product Review - Mathias
Burbach
Data Abstract is an innovative data-access
framework for Delphi. Used in combination with the RemObjects SDK, it allows you to create RemObjects
services that access any database providing a clear separation between
data-access and business-logic. The Data Abstract Drivers layer will
let you use the data access technologies that you prefer (i.e.
IBObjects, SDAC, ODAC, DOA, ADOExpress, IBExpress, etc.), switching
from one to another by simply changing a connection string.
In this session we will have a look at this product and how it can help
you create database applications for multiple database servers.
The source
code of the presentation can be found here
May 2004
Controlling
MSOffice applications using Delphi - Lachlan
Gemmell
This session will explore the use of Automation (formerly known as OLE
Automation) to control MSOffice applications such as MS Word, MS Excel
and MS Outlook using Delphi code at the desktop level. The trade-offs
between the different methods will be discussed as well as some
timesaving tips. The pros and cons of creating MSOffice documents on
the server side will also be discussed.
Threads to
your help - Part 1 - Malcolm
Smith
This session will cover the basics of threading in Delphi.
In particular
- why/when to use threads
- basic thread details such as FreeOnTerminate,
OnExecute, Synchronize
- methods of terminating threads
- notification of thread completion
- thread access to shared objects using different sync
objects
- critical sections, mutex, semaphore,
multi-read-exclusive-write
- TThreadList and custom thread safe lists
- and anything else I can think of....
April 2004
Configuration Management with StarTeam - Damien
Boostma
When people think of Configuration Management, the immediate thought is
a source code repository to manage the versions of files within a
project.
While a source code repository is one important factor in Configuration
Management there are other things to consider like Defect Management,
Task Management, Requirements and Communication Channels.
This is what Starteam is - a solution to configuration management. We
will have a look at the key capabities of Starteam in conjunction to
the current integration with Delphi.
Develop plug-in programs with Jedi Plug-in Manager - Zjian
Huang
While there are many ways of developing plug-in programs, Jedi Plug-in
Manager provides a set of framework for developing plug-in programs
efficiently. This talk will illustrate the structures of the manager
using the source codes and UML diagrams. Inspired by Jedi Plug-in
Manger, an easy approach of developing Office plug-in will also be
discussed.
March 2004
Application in a Refactored Light - Derek
Renouf
"Legacy application" is no longer a term strictly reserved for COBOL or
FORTRAN applications. It is a term that can now encompass application
code written in VB, C++ and even Delphi. This talk discusses some
approaches to refactoring applications from an older RAD
all-business-logic-in-forms code to more extensible and maintainable
code. As part of this, business processes, documenting architecture,
web services and XML will be discussed.
It would be good if people want to bring along some of their code, or
be in a position to discuss things...
February 2004
Life after death -
the story of TPS's FlashFiler transition to NexusDB - Dr
Geoff Harris
Approximately 12 months ago TurboPower Software Company announced,
totally unexpectedly, their immediate withdrawal from the Delphi 3rd
Party Component business. As a company with significant history,
acclaimed technical acumen, and many high quality components in various
stages of their life cycle, serious concerns by their customers (both
hobbyist and professional Delphi Developers) for these components were
raised.
Amongst their many libraries, TPS had a database engine, FlashFiler,
which was in a transitional state: version 3 had already been promised
to be delivered in 2003 and had significant improvements as well as
fixes for a number of serious bugs. This created a difficult situation
for Developers using FF2 : do they hope the Open Source version will
eventually get fixed or do they undertake the onerous task of replacing
their backend with another DBMS backend?
This talk presents an insider's view of how a team of FF2 experts got
together and created a totally new DBMS (quite literally from scratch)
in just 6 months. In particular, the old adage of "a project seeks to
be on time, within budget, and meets specs - choose 2 out of the 3" is
demonstrated to have been apparently broken by the team.
The talk concludes with a discussion of the NexusDB's future plans.
January 2004
Reducing Code Duplication Using OO Techniques - Dick
Walker
Some examples of improving a RAD business application by introducing
objects, inheritance, custom components and datamodules to improve the
code, remove duplication and allow reuse. Before and after examples.
.NET Remoting with Delphi 8 - Mathias
Burbach
After Lino's .NET Workshop this session will give us a chance to
explore .NET Remoting with Delphi 8. We will see how to create a
multi-threaded remote server, which talks to InterBase as the SQL
server. We will see how easy it is to implement database connection
pooling on the server side. We also will use interfaces to restrict the
deployment of certain assemblies on the client side.
Material on this topic can be downloaded from here.
December 2003
New things in Delphi 8 for .NET - Glenn
Stephens
For the first time in a few versions, the Delphi language has been
updated. In this session you'll see the new features included as part
of the Delphi Language. You'll also see how we can port applications
written in Delphi 1-7 to .NET applications, and we'll also get a peek
at some of the new features in Delphi 8 for .NET. Glenn's presentation
provided a good insight into Borland's Enterprise Core Objects (ECO).
Glenn has provided the following links relating to ECO:
Unleashing Enterprise Models with C# Builder
Anythony Richardson's Tutorials
A reference for Object Constraint Language (OCL)
November 2003
Introduction to FinalBuilder - Vincent
Parrett
FinalBuilder is designed to automate tasks that you routinely do as
part of your software development cycle. It allows you to quickly
define a repeatable list of actions that can be executed in the same
manner time after time. FinalBuilder cuts down build times by
automating tasks that often take many laborious manual steps. Any
manual process with more than one step is prone to errors, humans are
generally not very good at doing repetitive tasks, often doing steps
out of order or missing steps altogether. FinalBuilder can help you cut
out those errors.
More information about FinalBuilder can be found here.
The Observer Pattern - Mathias
Burbach
The session will explain the observer pattern and show an example of an
implementation based on a ClientDataSet in order to better support
cloned cursors. We will have a little "side-trip" to component
development.
Slides and source code for this talk can be downloaded
from here.
October 2003
A few more of my favourite tools - Anthony
Egerton
I have been referred to as a tool junkie by one of my colleagues. But I
prefer to think of it as spending an inordinate amount of time finding
tools which will save me time. Come along and find out my favourites,
where the time has been wasted for you.
Anthony has provided the following links:
Free Experts
Castalia
(Free or commercial Professional version)
Component Bar
Perforce IDE Plug-in
Unit Expert (near the bottom of the page)
OPXpert
GExperts
JCL Debug
JCL Open and Save IDE dialogs with favorite folders
JCL Project Analyzer
JCL Thread Name IDE
Commercial Experts
ModelMaker
Code Explorer Expert
ModelMaker
Expert (comes with ModelMaker)
Clipboard History Tool (Not an Expert!)
Clipmate
Getting your Oracle via Delphi - Mathias
Burbach
We will explore some of the basic features of Oracle (e.g. Views,
Stored Procedures, Packages, ...) and how to use them from Delphi. The
presentation will show different ways of talking to Oracle from Delphi
and explain the advantages and disadvantages of those connection
options. Finally we want to get your feedback about what you have done
with Oracle, and why you chose Oracle versus MS SQL or InterBase.
September 2003
An
introduction to CodeRush - Lachlan
Gemmell
CodeRush is the ultimate productivity toolset that binds seamlessly
into the Delphi IDE. It has been designed to fully enhance Delphi's
built in editor and to provide the features and capabilities necessary
to program at the speed of thought. Though Delphi provides a fine basic
editor (which most people use because it understands dpr, dfm and pas
file relationships), it does not provide the advanced features
available with CodeRush or other third party editors.
Building
applications with plugins - Chris
Latta
Plugins allow you to build a modular extensible application framework
which can be incrementally enhanced. Using plugins, you can ship
customized applications from the one code base. In this presentation we
look at when to use plugins, and what technologies can be used to build
plugins and their advantages and disadvantages. An simple plugin
framework will be developed as an example.
August 2003
Why I'll
never create a data-aware application again - An introduction to BOLD -
Glenn
Stephens
Bold is fast to develop with, easy to maintain, object orientated, and
gives you support for things that we all end up coding for hours.
Remember Matthias' presentation on an object versioned database - that
can be done in Bold within a matter of seconds. Remember my session on
Undo/Redo - Bold's got that built in. Want true database portability -
you can change from Interbase to Oracle to DBISAM without changing a
line of code. And theres much more. Bold takes care of a whole bunch of
major plumbing for you.
Debugging
Hints and Tips - Anthony
Egerton
90% of all developers say they have had bugs in code they have written.
The other 10% are of course lying. This tutorial will be to discuss
techniques that are useful in tracking down these bugs. I will be
demonstrating some techniques I have found useful and I encourage
people to come along and share their favourite debugging tips.
Some
interesting tips and techniques were revealed by Anthony. He has
provided the following links:
Remote Debugging (Included with Delphi. Install from Delphi CD)
Exception Stack Tracing
JCL (Jedi Code Library)
Exceptional
Magic (Watch out for the popups)
Eureka
Log
MadExcept
Logging Tools
OutputDebugString (Windows API call. Writes to the event log in Delphi)
GDebug
(Included with GExperts)
CodeSite
(Raize Components)
CodeSiteEx (Free extension for CodeSite)
IBSite (Free extension for CodeSite allows logging
from Interbase SP's)
SQLSite (Free extension for CodeSite allows
logging from SQL Server SP's)
The results of
the ADUG Sydney Survey are available for download here.
July 2003
Creating an
OLE DB driver for your Delphi data - Lachlan
Gemmell
Using the Microsoft OLE DB Simple Provider Toolkit, a basic read-write
OLE DB driver will be constructed allowing read write access to Delphi
data and structures from OLE DB compatible applications such as Visual
Studio, MS Office, and other reporting tools.
Handling
Hierarchies with InterBase - Mathias
Burbach
The session will cover design tips for storing hierarchies in InterBase
and how to visualize them in you front-end. We will create recursive
stored procedures to travers the tree and propagate changes into higher
levels of the tree up to the root. We will look into the technique of
pre-viewing those propagation in the front-end and how to resolve
concurrency issues. Finally we will demonstrate how Borland's
TClientDataSet can help on the front-end side.
The slides and source code of this presentation can be downloaded from here.
June 2003
C#Builder - Damien
Bootsma
Designed to accelerate the application development lifecycle, Borland®
C#Builder™ for the Microsoft® .NET Framework delivers a design-driven,
pure C# development solution for .NET. Maintain design integrity
throughout your development lifecycle. C#Builder is designed to improve
team collaboration and enable integration of the modeling, development
and runtime phases so you can deliver better software, faster. Offering
technologies for flexible, high performance support and integration
with enterprise databases – as well as direct communication with CORBA®
and J2EE™ technologies from your .NET applications – C#Builder is
optimized for enterprise development. C#Builder helps boost the
productivity of your development team, the quality of your .NET
applications, and the return on your technology investment.
Further information can be obtained from Damien. There
are also discussion papers by Simon Thornhill on Octane and Delphi Q&A and An Open Letter to the Delphi Community.
An overview of ModelMaker - Chris
Latta
ModelMaker is a CASE tool that has two-way code management with UML
diagrams, design patterns, reverse engineering and refactoring. With
its tight integration to Delphi, ModelMaker provides an ideal way to
model your system and speed your development. In this presentation we
take a look at:
- Importing existing code.
- Designing and restructuring classes with UML diagrams.
- Delphi Integration.
- Refactoring code.
- Applying design patterns.
- Commenting your code.
May 2003
Iterators:
Inside and Out - Malcolm
Smith
This presentation will review the concept of iterators and how they can
be used to simplify the repetitive task of traversing aggregates. We
will look at creating very simple iterators up to polymorphic versions
as well as distinguishing the difference between an internal and an
external iterator. Implementation issues will also be discussed. Four
demo applications will be presented during the discussion to reinforce
the theory. I am also working on a small utility application that uses
just about everything being discussed.
This
presentation is now available from Malcolm's
web site. It includes a PDF document covering all aspects of the
discussion, a powerpoint file as well as the 4 demos shown. Browse down
to the bottom where the Delphi stuff has been added. I welcome all
comments (since Delphi is not my native development environment).
An
Introduction to Delphi’s Open Tools API - Bill
Friedrich
The Open Tools
API allows developers to add functionality to Delphi’s IDE. Some
examples of additional functionality are:
- Adding new menu items.
- Adding wizards to the Object Repository.
- Adding new keystrokes to the IDE.
The
documentation of the Open Tools API is notoriously terse, which makes
the initial learning curve quite steep. This presentation is designed
to help developers avoid the pitfalls of using the Open Tools API for
the first time. Source code for all examples are available here.
April 2003
User Centered Design for Developers - Glenn
Stephens
The usabilty of an application is often one of the most overlooked
parts of an application. While it will typically account for between
three and six percent of a development project budgets, it is valued by
end users as accounting for 35% of what the product means to them. We
could all do with better designed applications. For end users
perception is reality.
In this session, we will look at what makes an
application usable. It isn't neccassarily about what components to use,
but instead looking at methods of achieving the best result for the end
users. So we will look at achieving their goals, a little look at
cognative psychology to understand how to make applications easier to
use, guidelines, usability labs and other techniques.
Glenn's slides can be downloaded from here. The slides don't really represent what was
fully discussed, but hopefully will help you remember the key points.
TClientDataSet Tutorial - Mathias
Burbach
This tutorial will look into the way how the TClientDataSet is intended
to be used. We will cover topics like re-sorting on the fly, using the
briefcase model, aggregating columns and working with multiple cursors
on the same resultset.
March 2003
Creating objects from template code - Malcolm
Smith
The concept of creating classes from templates almost certainly seems
unnatural to Delphi programmers. Template based code is used to create
a family of closely related objects that can be useful in place of
sub-classing when the following criteria presents itself:
- You have common code for each class
- You want to perform compile-time type checking
- You like the idea of reducing another level of
indirection
- The idea of no type casting in the implemented
objects sounds cool
The files, document and slideshow can all be downloaded
from here.
Inno Setup - Anthony
Egerton
Inno
Setup is a free installer for Windows programs. First introduced in
1997, Inno Setup today rivals and even surpasses many commercial
installers in feature set and stability. I will be telling you about my
experiences with Inno Setup and the tools you can use with it.
February 2003
FogBUGZ - Victor Rodrigues
FogBUGZ
3.0 is a system for managing software projects designed by software
development guru Joel Spolsky. It works so well that your projects will
practically manage themselves.
At the heart of FogBUGZ is a database of cases. A case can be:
- a feature request,
- a traditional bug report,
- or an email from a customer.
At any given time, every case is assigned to one person
who must resolve it or forward it to someone else. Cases can be
prioritized, documented, sorted, discussed, edited, assigned,
estimated, searched, and tracked.
Because FogBUGZ is web-based, everyone on the team always sees the
whole picture. Everything from customer feature requests to high level
design discussions to tiny bug fix details is instantly searchable and
trackable.
Every detail of FogBUGZ was carefully crafted with one goal in mind:
helping teams create great software. Rather than giving you a big pile
of features, designer Joel Spolsky has created a system that works with
real people doing real software development. He even left out features
that seem cool but cause more problems than they solve.
The presentation will cover most aspects of FogBUGZ as well as
demonstrable integration with Perforce version control system.
January 2003
Multi-tier
Applications with RemObjects - Chris
Latta
RemObjects
is an extensible remoting framework that allows you to build scalable
(and high performance) multi-tier systems in the simplest and most
flexible way. In this presentation you will see:
- what RemObjects is
- what differentiates RemObjects from other solutions
- how to create a RemObjects server and client
- the advantage of doing remoting the Delphi way
- how RemObjects works with other components and
frameworks
Delphi for
.Net Preview Compiler VCL Update - Mathias
Burbach
During this session we will look into new features of the Delphi for
.Net Preview compiler. Especially the ported VCL controls and how to
use them in an application for the Win32, Linux & .Net platforms.
December 2002
Delphi and ASP.NET - Glenn
Stephens
This session covers the fundamentals of creating dynamic web
applications using ASP.NET and the Delphi.NET compiler.
By the end of the presentation you should understand.
- What is ASP.NET
- How is it better/worse/different to the other web
frameworks
- Using Delphi as a language for ASP.NET pages
- A look at the ASP.NET controls
- Mixing ADO.NET and ASP.NET
- Web Services with ASP.NET
- ASP.NET tools and resources
Tutorial on "MDI applications design" - Lachlan
Gemmell
This is more of an open discussion on how and when to design MDI
applications. We want to get your opinion and experience on the matter.
Therefor the presentation will be kept fairly short in favour off a
hopefully vivacious discussion.
November 2002
Doc-o-matic
- Anthony
Egerton
Have you ever thought wouldn't it be great if I could create help files
for my source code just like the VCL in Delphi. Doc-o-matic is a tool
that will create help files automatically from your source code and
comments. Come and find out how.
Visual Design of Internet applications with Delphi &
IntraWeb - Mathias
Burbach
This is an introduction into the new feature of Delphi 7, which was
available as a third-party tool for quite a while by Atozed Software.
We will discover how easy it is to design web applications with Delphi
visually.
October 2002
DIY
Utility Classes - Misha
Charrett
Virtually no Delphi project is completed without using one or more
third party libraries/components, often saving months of
development time. But there are still occasions where it is worth your
time to write your own utility classes. Maybe you cannot find a
component to match exactly what is required, or maybe the classes are
so fundamental to your application that you think you can do a better
job yourself.
In this presentation I will illustrate, through examples, how a bit of
effort invested in developing your own utility classes can save
significant development time and increase the quality of your software.
I will examine some utilities that I have found to be extremely useful
over time, such as a better "id=value" class, a simple way to deal
with text data files, and a utility class to manage global
variables and error handling. The focus of this presentation will be to
show how to develop class libraries from the perspective of a library
user, rather then a library developer - there is a difference! Inspired
by Paul Spain's presentation at Melbourne ADUG.
Using Delphi IDE Macros - Anthony
Egerton
This will be a practical introduction to this under-used Delphi IDE
facility. The keyboard macro facility is a simple and natural extension
to your editing skills, and can be a serious time-saver like 'cut and
paste' or 'find and replace'.
An overview of the TMS TDBPlanner component - Craig
Goodall
The TDBPlanner
component is quoted as for use with planning and scheduling
applications. It can be summarised in one word ... "BIG". It's a huge
component with a vast set of properties and functionality to provide an
interface for the coupling of time and resources. This overview will
provide a brief introduction to a component which members may find
useful in their future applications.
Book Review - John
Mackerras
User Interface Design for Programmers by Joel Spolsky
144pp inc Index, Apress 2001, www.apress.com. Just a few thoughts on the book
written by a veteran programmer.
September 2002
WMI from
Delphi - Malcolm
Groves
Windows Management Instrumentation (WMI) lets your Delphi and
C++Builder applications manage basically all aspects of a Windows-based
computer. This means more than just enquiring about the current status
of software and hardware on your system (or any system on the network),
but subscribing to notifications, so that system events such as disk
space availability, memory, CPU or network utilization or events
occuring in applications can all be used to trigger your code to
execute.
Book Reviews - Lachlan
Gemmell
Lachlan will present a brief review of two very good books that every
serious Delphi programmer should have in their library. The first is
Code Complete by Steve McConnell, a very readable, well researched book
on techniques for improving your code. The second is Delphi in a
Nutshell by Ray Lischner, an excellent reference book for anyone
wanting to really understand the Object Pascal language and Delphi RTL.
Delphi .Net Preview - Mathias
Burbach
Looking under the bonnet of DCCIL
This session will explain how to use the new Delphi for .Net Preview
command line compiler "DCCIL", which ships with Delphi 7, to become
familar with the .Net Framework. We will build simple command line
applications as well as Windows Forms and Active Server Pages for .Net
(ASP.Net). Less slides and more examples.
August 2002
Delphi
Internet Technologies - Mathias
Burbach
Part 1: Web Services
We will look into the basics of creating and consuming a web service.
Then we can look at implementing a multi-tier database application
using a web service. Finally in a short case study we want to show how
web services can help replicating data between different databases on
possibly different operating systems. We should also have a few minutes
to look into the task of making web services secure.
Third Party Components - Lachlan
Gemmell
Lachlan takes us through issues related to third-party components,
predomanantly those around access to source-code, healthy communities
around third party components, etc.
July 2002: We had two presentations this
month:
Glenn Stephens began with a
presentation
on "Threading your Delphi Apps". Pat your head and rub your tummy at
the
same time. Sure it takes a little longer, but you are doing more
than you would normally if you were doing one thing at a time,
even though it is a little more difficult.
Getting your
application to do several things at once can also be tricky, but
with some tried and true methods, you can implement by introducing
threads into your application. This presentation helped us understand
what
threads are, how they work, the problems to look out for and how
to resolve locking and synchronization issues.
In addition, there were some
interesting
demos showing how you can add Internet downloading in a separate
thread and downloading large database result sets so that users
of your apps can be productive while that huge database query is
running.
Mathias Burbach then gave a talk
on generic database design
with InterBase. The session explained how to design generic database
structures.
It covered topics like modelling changes over time into you r database
structure as well as coping with the demand for notes columns
everywhere.
We looked into the ability to store real world objects into the
database with totally different properties. Finally , we discussed
a solution to keep information versioned, which means you can retrieve
a table's content as it was days, weeks or even months ago.
June 2002:
The first
presentation
tonight by Victor Rodrigues from Cochlear explained the advantages
of Perforce, a fast software configuration management system. Perforce
is not only source code version control system but it helps you
managing your software development cycle by offering the branching,
merging branches and multiple releases. It has a small footprint
and can be used via the Internet, although a VPN might be preferable
for security reasons. And the best at the end: Perforce offers
a fully functional version of it's software for free, you
are only restricted to two users and two client workspaces. Additional
information is available here.
After the pizza break, courtesy of Borland, we looked into rule
based software development. Andrew Rutherford from Object Connections
showed us a product of his company named Common Knowledge.
He demonstrated the flexibility of this software development tool
by creating a set of rules for a insurance company from scratch.
Common Knowledge allows you to visually define your business rules
(Common Knowledge Studio) and keep them separate from your executable.
Thanks to a set of Delphi components you can access the rules engine
(Common Knowledge Rules Engine) easily and calculate whatever has
been defined in your rules set. More information is available here.
- June photo's available (Victor, Andrew)
May 2002:
This month we had
an evening packed with
interesting presentations. Rajiv & Phil from St. George Bank
kicked off with a case study about MIDAS within their bank. They
had used this Borland technology to build a work flow software for
their loan application processing. It turned out to be very reliable
and consumed only a small bandwidth. Their loan processing departments
is spread over the entire country and some of them only have 64KBit
connection. MIDAS solved their problems by buffering their changes
until they apply their updates. An added benefit of allowing the
use of an offline notebook and have the ability to use the briefcase
model.
Before the pizza break Anthony
showed us the usefulness of the Jedi JCL stack track. If you ever
had an application deployed, which raised an error with the meaningful
error message "list index out of bounds", you should look into these
add-on, to provide you with much better error locating facilities.
After the pizza break Glenn
presented quite a few possibilities to raise your productivity with
Delphi, by creating your own property editors, creating new objects
programmatically (e.g. singleton) and using the ToolsAPI of Delphi.
Have you ever considered loading an entire RTF document into a
TRichEdit component by right clicking on the component and specifying
a file location?
- JEDI Code Library
available here
- Gelnn's Toolsmithing examples
here
April 2002:
Our April meeting
took us into the world of remote software teams and how to co-ordinate
their development work. Damien Bootsma explained TeamsSource DSP
to us and showed how you can manage not only the source code of
your Delphi projects but also the collaboration of the team members.
Imagine a chat software that stores the dialogue persistent. Look
up what you said 2 months ago and know exactly why your remote
colleague introduced this feature to the unit you usually maintain.
During the second presentation Mathias Burbach showed us how easy
it is to create WAP applications with Delphi & WebBroker. We
came to grips with the structure of WML documents, where a desk
can hold multiple cards and how to organize your user interface
on such a tiny little display. Finally we saw how WML documents
can be stored in TPageProducer components and a simple way of replacing
their placeholder tags with content from an InterBase database.
- Damien's DSP presentation here (and a photo here)
- Mathias Source, Database, slides, etc here
March 2002:
Malcolm showed us how to talk to Nokia mobile phones from Delphi,
raising the scary prospect of SMS-based spam. Also, more cool tools,
with Anthony threatening Malcolm with Legal Action over the name
of his session.
- Nokia SDK here (free registration
required. Look for the Nokia PC Connectivity SDK link on the right
hand side).
- Nokia SDK examples here
- Brian's CodeInsight Utility here.
- Find Unit\Use Unit Expert here.
- MaxSpace here
February 2002:
This month we had a really interesting meeting. Lot's of helpful
tips and tricks from Anthony and also a pretty simple approach
how to use DUnit Testing in ordinary Delphi apps.
- DUnit can be downloaded from http://dunit.sourceforge.net.
- Photos available here.
- DUnit Examples available here.
Links from Anthony's presentation:
- Beyond Compare - www.ScooterSoftware.com
- ModelMaker Code Explorer - www.ModelMakerTools.com
- WinKey - www.copernic.com/winkey/
January 2002:
Coming Soon
- Photos available here.
- Steve's presentation available here.
December 2001:
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.
November 2001:
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.
October 2001:
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).
September
2001:
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
August 2001:
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).
July 2001:
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
|