Tema: delphi ir Open Officas
Autorius: Leon
Data: 2010-01-04 13:58:53
Sveiki,
atsibodo kariaut su Open offic'u :). Gal kas pades. Iki OO 3 versijos viskas 
vyko normaliai. A su naujomis versijomis niekaip negaliu susitvarkyt. 
Atidarineju per delphi paruosta faila. Problema ta, ka visuomet man ji OO 
atidaro read-only rezime. Kaip minejau, su ankstesnemis versijomis tiko tas 
pats kodas, dabar niekaip neapgaunu open offic'o. Gal kas pagelbes.


function TForm1.OpenDocument(const aFileUrl:string): boolean;
var
   StarDesktop: Variant;
   ooParams: variant;
begin
  StarDesktop := StarOffice.CreateInstance('com.sun.star.frame.Desktop');
  ooParams:=VarArrayCreate([0, 0], varVariant);
  ooParams[0]:=MakePropertyValue('ReadOnly', false);
   Document := StarDesktop.LoadComponentFromURL(aFileUrl, '_blank', 0, 
ooParams);
end;

ir sitas nepadeda:

function TForm1.OpenDocument(const aFileUrl:string): boolean;
var
   StarDesktop: Variant;
   ooParams: variant;
begin
   StarDesktop := StarOffice.CreateInstance('com.sun.star.frame.Desktop');
   ooParams := VarArrayCreate([0, -1], varVariant);
   Document := StarDesktop.LoadComponentFromURL(
                  aFileUrl, '_blank', 0, ooParams);
end;

papildoma funkcija, kuria nustatomi atidarinejamo failai parametrai:

function TForm1.MakePropertyValue(PropName:string; 
PropValue:Variant):variant;
var Struct: variant;
begin
    Struct := 
StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue');
    Struct.Name := PropName;
    Struct.Value := PropValue;
    Result := Struct;
end;