Модератор: Модераторы
*** odfproc.pas 2011-11-09 21:39:08.522435327 +0300
--- odfproc.pas.1 2011-11-09 21:33:21.000000000 +0300
***************
*** 482,492 ****
exe_path:=ExtractFilePath(Application.ExeName);
{$IFDEF Linux}
! templ_path:=exe_path+'template/';
! GenerateDocument(templ_path,'doc','');
try
Proc:=TProcess.Create(nil);
! Proc.CommandLine:='ooffice -writer '+templ_path+'doc.odt';
Proc.Options:=[poWaitOnExit];
Proc.ShowWindow:=swoShowMaximized;
Proc.Execute;
--- 482,492 ----
exe_path:=ExtractFilePath(Application.ExeName);
{$IFDEF Linux}
! templ_path:=exe_path+'temp/';
! GenerateDocument(templ_path,'doc.odt','');
try
Proc:=TProcess.Create(nil);
! Proc.CommandLine:='xdg-open '+templ_path+'doc.odt';
Proc.Options:=[poWaitOnExit];
Proc.ShowWindow:=swoShowMaximized;
Proc.Execute;
v-t-l писал(а):Кстати, для открытия сгенерированного документа программой по умолчанию можно использовать кроссплатформенную (win,unix,mac) функцию OpenDocument из модуля LCLIntf!
leo_bsv писал(а):v-t-l писал(а):Кстати, для открытия сгенерированного документа программой по умолчанию можно использовать кроссплатформенную (win,unix,mac) функцию OpenDocument из модуля LCLIntf!
Спасибо, добавлено как задание по оптимизации на SF! Рассмотрим!
procedure TOdt.ShowDocument(n_path,name_doc:String);//жесткий путь запуска и имя док-та
var exe_path, templ_path, sh: string; //если n_path='' или name_doc='' то запуск или имя по умолчанию
f_name: string = 'doc.odt';
Proc: TProcess;
begin
exe_path:=ExtractFilePath(Application.ExeName);
{$IFDEF Linux}
templ_path:=IncludeTrailingPathDelimiter(exe_path+'temp');
if Trim(name_doc)<>'' then f_name:=name_doc+'.odt';
GenerateDocument(templ_path,f_name,'');
try
Proc:=TProcess.Create(nil);
if Trim(n_path)<>'' then
Proc.CommandLine:=Trim(n_path)+' '+templ_path+f_name
else
Proc.CommandLine:='xdg-open '+templ_path+f_name;
Proc.Options:=[poWaitOnExit];
Proc.ShowWindow:=swoShowMaximized;
Proc.Execute;
finally
sleep(2000);//пару сек ждем - иногда приложение по умолчанию не успевает запуститься
if Proc.WaitOnExit then begin
Proc.CommandLine:='rm '+templ_path+' -r';
Proc.Execute;
Proc.Free;
end;
end;
{$ENDIF}
end;
leo_bsv писал(а):volodya25, спасибо за участие, изменения внесены.
procedure TOdtTable.AppendRow(TextStyle: string);
var Root, Node: TDOMNode;
i:integer;
begin
Node:=FDocument.CreateElement('table:table-row');
Root:=RootNode.AppendChild(Node);//Root = table:table-row
for i:=1 to Cols do
begin
Node:=FDocument.CreateElement('table:table-cell');
TDOMElement(Node).SetAttribute('table:style-name',DefoultCellStyle);
TDOMElement(Node).SetAttribute('office:value-type','string');
Root:=Root.AppendChild(Node);//root = table:table-cell
Node:=FDocument.CreateElement('text:p');
if length(TextStyle)>0 then
TDOMElement(Node).SetAttribute('text:style-name',TextStyle)
else
TDOMElement(Node).SetAttribute('text:style-name',DefTextStyle);
Root.AppendChild(Node);
Root:=Root.ParentNode;//Root = table:table-row
end;
end;
Владимир писал(а):Table.RemoveEmptyRow('bla-bla');- не работает (вешает все)
Владимир писал(а):Приложил код доработанной процедуры ShowDocument к своему сообщению от 08.12
ShowDocument сделана перегружаемой, теперь может запускаться как с параметрами, так и без, если не сложно - проведите тестирование.
ODT:=TOdt.Create;
ODT.LoadTemplate('/arch/shop/template/cennik.odt');
ODT.ShowDocument(' ',' ');//ошибка чтения /temp
// ODT.ShowDocument(' ','ddd.odt');//нет запуска по умолчанию
//ODT.ShowDocument('/opt/openoffice.org3/program/swriter','ddd.odt');//работает
//ODT.ShowDocument('/opt/openoffice.org3/program/swriter',' ');//открывает док и валится
Odt.Destroy;
str_0,str_1:String;
begin
str_0:=' '; str_1:=' ';
ODT:=TOdt.Create;
ODT.LoadTemplate('/arch/shop/template/cennik.odt');
//ODT.ShowDocument; //ERROR
// ODT.ShowDocument(str_0,str_1);//ничего не происходит
//ODT.ShowDocument(str_0,'ddd.odt');/ничего не происходит
//ODT.ShowDocument('/opt/openoffice.org3/program/swriter','ddd.odt');//работает
//ODT.ShowDocument('/opt/openoffice.org3/program/swriter',str_0);//открывает док и валится
Odt.Destroy;
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1