Форматирование таблицы в MS Word

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Форматирование таблицы в MS Word

Сообщение woodhead » 23.04.2016 09:23:29

Здравствуйте.
Никак не получается отформатировать таблицу в 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 без ошибок. В чём может быть дело?
woodhead
новенький
 
Сообщения: 21
Зарегистрирован: 24.12.2014 12:23:20

Re: Форматирование таблицы в MS Word

Сообщение slyubez » 23.04.2016 10:16:13

Практически такой же код работает в Delphi без ошибок. В чём может быть дело?

В разнице версий Ворда.
slyubez
постоялец
 
Сообщения: 180
Зарегистрирован: 31.03.2015 08:44:07

Re: Форматирование таблицы в MS Word

Сообщение woodhead » 23.04.2016 10:29:36

slyubez писал(а):В разнице версий Ворда.

Оба кода выполняются на одной и той же машине, где установлена одна-единственная версия Word'а.
woodhead
новенький
 
Сообщения: 21
Зарегистрирован: 24.12.2014 12:23:20

Re: Форматирование таблицы в MS Word

Сообщение Sharfik » 23.04.2016 15:15:44

woodhead писал(а):Оба кода выполняются на одной и той же машине, где установлена одна-единственная версия Word'а.

Попробуй в режиме delphi mode компилировать код, может что то изменится.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: Форматирование таблицы в MS Word

Сообщение woodhead » 23.04.2016 15:49:03

Разобрался. Работает, если процедуру AutoFormat записывать так:
Код: Выделить всё
    W.ActiveDocument.Tables.Item(1).AutoFormat(
       OleVariant(16),
       true,
       false,
       false,
       false,
       false,
       false,
       false,
       false,
       true);
woodhead
новенький
 
Сообщения: 21
Зарегистрирован: 24.12.2014 12:23:20


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 237

Рейтинг@Mail.ru