1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
OO_Service : Variant;
OO_Desktop : Variant;
OO_Doc : Variant;
OO_FileName : String;
function TForm2.FileToURL(F : String) : String;
var i : Word;
R : String;
begin
R:='file:///'+OpenDialog1.FileName;
// transforme le nom du fichier en adresse URL
while (Pos('\',R)>0) do {les \ en /}
begin
i:=Pos('\',R);
Delete(R,i,1);
Insert('/',R,i);
end;
while (Pos(' ',R)>0) do {les espaces en %20}
begin
i:=Pos(' ',R);
Delete(R,i,1);
Insert('%20',R,i);
end;
result:=R;
end;
// fermer
procedure TForm2.Button2Click(Sender: TObject);
begin
OO_Service:=unassigned;
close;
end;
// ouvrir
procedure TForm2.Button3Click(Sender: TObject);
var properties,CoreServ,prop : Variant;
begin
if OpenDialog1.Execute then
begin
if (VarIsEmpty(OO_Service) or VarIsNull(OO_Service)) then
OO_Service:=CreateOleObject('com.sun.star.ServiceManager');
if not(VarIsEmpty(OO_Service) or VarIsNull(OO_Service)) then
begin
if (VarIsEmpty(OO_DeskTop) or VarIsNull(OO_DeskTop)) then
OO_Desktop:= OO_Service.CreateInstance('com.sun.star.frame.Desktop');
end;
if (VarIsEmpty(OO_DeskTop) or VarIsNull(OO_DeskTop)) then
begin
MessageDlg('Le service Open Office n''est pas ouvert',mtError,[mbOk],0);
Exit;
end;
properties:=VarArrayCreate([0,0],varVariant);
CoreServ:= OO_Service.CreateInstance('com.sun.star.reflection.CoreReflection');
CoreServ.forName('com.sun.star.beans.PropertyValue').CreateObject(prop);
prop.name:='Hidden';
prop.Value:=True;
properties[0]:=prop;
OO_FileName:=FileToURL(OpenDialog1.FileName);
OO_Doc := OO_Desktop.LoadComponentFromURL(OO_FileName,
'_blank',
0,
properties);
end; |
Partager