|Where the old API required you to derive a class from
the new API has you implement one or more interfaces. You wizard class can inherit from
any base class, but usually you will use
IOTAWizard and its inherited interfaces (in particular,
even though Delphi doesn't call any notifier methods*).
An add-in wizards implements,
Delphi never calls the
A menu wizard was called a standard wizard in the old API. It
Form and project wizards must implement
IOTANotifier. Delphi never calls
Form wizards implement
IOTAFormWizard, and project wizards implement
To register a wizard in a package, call
RegisterPackageWizard, which is
the equivalent of
RegisterLibraryExpert in the old API.
In a DLL, though, do not call
RegisterPackageWizard. Instead, use the
wizard services to add your wizard. In your DLL's
Terminate procedure, use
the wizard services to remove your wizard.
You must do this because Delphi 4 has a bug that causes an access violation if you
register your wizard in any other way.
*Note: If your wizard is in a package, and you
register your wizard by calling the register procedure that Delphi passes to your DLL's
initialization function, Delphi will call your wizard's
which it implements from the
IOTANotifier interface. Delphi then crashes with
an access violation, so this tidbit of information isn't particularly useful.