Automation has nothing to do with VBA. That's the whole point of Automation, that it's language independent.

As Felipe rightly points out, many Laz users could profit from a library for creating office documents. Ideally it would have 3 notable characteristics:

(1) Can create any type of office document programmatically without a particular office app or version being present. For word processing documents, RTF is perfect since it's a text format that is well supported by all word processors. FPC includes a unit for working with RTF documents. I created a thin wrapper for it that allows you to create RTF documents:

http://wiki.lazarus.freepascal.org/XDev_Toolkit

(2) Can manipulate the resulting RTF file with the office app. On Windows, Automation works great for that purpose. Your only real challenges here are: (a) Figuring out a way to mark the place in the document where the table should be inserted. You can do this in a number of ways, for example if your app or your users create documents based on a template that you provide, you could insert a hidden bookmark in the template and look for this in the document's Fields collection via Automation. (b) FPC 2.2.2 does not fully support Automation yet, it appears.

You can insert text into a Word document from the clipboard via Automation with something like this:

worddoc.ActiveWindow.Selection.Paste;

To insert an RTF file into the document:

worddoc.ActiveWindow.Selection.InsertFile(rtffilename, ConfirmConversions:=False);

(3) Can do (2) across a variety of word processors in a cross- platform, cross-app way. This includes Word, OO and Apple's Pages. On Windows you can use Automation to manipulate both Word and OO. On OS X you can use AppleScript to manipulate word processors that include a dictionary of classes:

http://wiki.lazarus.freepascal.org/ Multiplatform_Programming_Guide#Making_do_without_Windows_COM_Automation

Thanks.

-Phil

_______________________________________________
Lazarus mailing list
[email protected]
http://www.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to