OpenOffice & Delphi

Тема в разделе "Delphi - СОМ", создана пользователем Guest, 2 окт 2004.

Статус темы:
Закрыта.
  1. Guest

    Guest Гость

    Как передать данные (текст, таблицу) из программы на Delphi в OpenOffice? Может, кто знает, подскажите или хотя бы где есть какая-л. инфа
     
  2. Barmutik

    Barmutik Гость

    Пример с их сайта.. там у них в SDK куча примеров как работать .. часть из них на Дельфях... так что нваерно стоит попытаться почитать доку... Но это последнее что мы(программеры) всегда делаем :) :)

    Код (Text):
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, ComObj, Buttons, ComCtrls;

    type
    TForm1 = class(TForm)
     BitBtn1: TBitBtn;
     StatusBar1: TStatusBar;
     BitBtn2: TBitBtn;
     BitBtn3: TBitBtn;
     procedure BitBtn1Click(Sender: TObject);
     procedure BitBtn2Click(Sender: TObject);
     procedure BitBtn3Click(Sender: TObject);
    private
     { Private declarations }
    public
     { Public declarations }
    end;

    type
    TsampleCode = class
      function Connect(): boolean;
      procedure Disconnect();
      function CreateDocument(): boolean;
      function CreateTextTable(oDoc: Variant; oCursor: Variant; sName:
    String; iRow: Integer; iColumn: Integer): Variant;
      // need many more procs and funcs here ....
    private
     { Private declarations }
      staroffice : variant;
      document:variant;

    public
     { Public declarations }
    end;




    var
    Form1: TForm1;

    sample:tsamplecode;

    implementation

    {$R *.dfm}



    function TSampleCode.CreateTextTable(oDoc: Variant; oCursor: Variant;
     sName: String; iRow: Integer; iColumn: Integer): Variant;
    var
     ret: Variant;
    begin
     ret := oDoc.createInstance('com.sun.star.text.TextTable');
     ret.setName(sName);
     ret.initialize(iRow, iColumn);
     oDoc.Text.InsertTextContent(oCursor, ret, False);
     CreateTextTable := ret;
    end;

    function TSampleCode.Connect(): boolean;
    begin
     if VarIsEmpty(StarOffice) then
     StarOffice := CreateOleObject('com.sun.star.ServiceManager');
     Connect := not (VarIsEmpty(StarOffice) or VarIsNull(StarOffice));
     end;

    procedure TSampleCode.Disconnect();
    begin
     StarOffice := Unassigned;
    end;


    function TSampleCode.CreateDocument(): boolean;
    var
     StarDesktop: Variant;
     otext:variant;
     ocursor:variant;
    begin
     StarDesktop := StarOffice.createInstance('com.sun.star.frame.Desktop');
     Document := StarDesktop.LoadComponentFromURL(
            'private:factory/swriter', '_blank', 0,
            VarArrayCreate([0, - 1], varVariant));
     CreateDocument := not (VarIsEmpty(Document) or VarIsNull(Document));
     //insert text here ... does not work tough....
     //otext:=Document.text;
     // need a proc in tsamplecode which creates the textcursor .....
     //ocursor:=otext.createtextcursor();
     //otext.insertstring(ocursor,'MyText',false);
     end;


    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
    StatusBar1.SimpleText := 'Connecting to StarOffice ...';
     Sample := TSampleCode.Create();
     if Sample.Connect() then
     StatusBar1.Panels[0].text:='Creating new text document ...';
     try
      if Sample.CreateDocument() then
      begin
       // can do someting here
        //Button4.Enabled := true;
       // Button5.Enabled := true;
       // Button6.Enabled := true;
      end;
      StatusBar1.panels[0].Text := 'Ready';
     except
      StatusBar1.panels[0].Text := 'Error';
     end;
    end;


    procedure TForm1.BitBtn2Click(Sender: TObject);
    begin
     StatusBar1.panels[0].Text := 'Disconnecting from StarOffice ...';
     // also do not know how to close the opened document from within delphi
     Sample.Disconnect(); // this disconnects the delphi program but leaves
    the the openoffice program running.
     StatusBar1.SimpleText := 'Closed';
    close;
    end;

    procedure TForm1.BitBtn3Click(Sender: TObject);
    var
    oDoc, oCursor:variant;

    begin
    //insert some more text
    // how to insert text ?
    // how to add lines, change fonts etc
    end;
    end.
     
  3. Barmutik

    Barmutik Гость

Загрузка...
Похожие Темы - OpenOffice Delphi
  1. Manticor
    Ответов:
    0
    Просмотров:
    1.837
  2. stolen
    Ответов:
    0
    Просмотров:
    1.378
  3. NickProstoNick
    Ответов:
    16
    Просмотров:
    6.839
  4. puh14
    Ответов:
    2
    Просмотров:
    4.389
  5. azat20
    Ответов:
    0
    Просмотров:
    4.250
Статус темы:
Закрыта.

Поделиться этой страницей