Никак не получается отформатировать таблицу в MS Word при работе из Lazarus через COM-объект. Возникает ошибка на методе AutoFormat:
Method 'AutoFormat' is not supported by automation object
Вот код:
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComObj, LazUTF8;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormShow(Sender: TObject);
const
NUM_ROWS = 7;
NUM_COLS = 6;
var
W, WD, MyRange: OleVariant;
begin
//запуск приложения Word
try
W := GetActiveOleObject('Word.Application');// активация запущенного Word
except
On E : Exception do
begin
ShowMessage('Error: ' + WinCPToUTF8(E.Message));
W := CreateOleObject('Word.Application');// запуск Word
end;
end;
// включение видимости Word
W.Parent.Visible:=true;
WD:=W.Documents.Add;
// добавление таблицы
MyRange:=W.ActiveDocument.Range(0,0);
W.ActiveDocument.Tables.Add(Range:=MyRange,NumRows:=NUM_ROWS,NumColumns:=NUM_COLS);
// форматирование таблицы
try
W.ActiveDocument.Tables.Item(1).AutoFormat(Format:=16,
ApplyBorders:=true,
ApplyShading:=false,
ApplyFont:=false,
ApplyColor:=false,
ApplyHeadingRows:=false,
ApplyLastRow:=false,
ApplyFirstColumn:=false,
ApplyLastColumn:=false,
AutoFit:=true);
except
On E : Exception do
ShowMessage('Error: ' + WinCPToUTF8(E.Message));
end;
end;
end.
Практически такой же код работает в Delphi без ошибок. В чём может быть дело?