Модератор: Модераторы
v-t-l писал(а):Re: Работа с uOpenOffice
Непрочитанное сообщение v-t-l » 16.01.2012 15:29:23
Но стоит только "Сохранить как..." под другое имя файла, и документ становится редактируемым!

procedure TForm1.Button1Click(Sender: TObject);
var ODT: tOdt;
    T: TOdtTable;
    i:integer;
    TableWidth, NewColWidth: TLength;
begin
   ODT:=TOdt.Create;
   ODT.LoadTemplate(FNE.Text);
   // Настроим свойства таблицы
   T:=ODT.GetTable('Таблица1');
   TableWidth:=T.Properties.Width;
   // ставлю ширину первой колонки в 5 см
   // остальные колонки - одинаковые
   NewColWidth.Value:=(TableWidth.Value-5.0)/(T.ColCount-1);
   NewColWidth.Measure:=TableWidth.Measure;
   for i:=0 to T.ColsProperties.Count-1 do begin
     if i=0 then begin
       T.ColsProperties[i].Width.Value:=5.0;
     end
     else T.ColsProperties[i].Width:=NewColWidth;
   end;
   T.SetColsProperties;
   T.SetColumns;
   ODT.ShowDocument;
   ODT.Destroy; 


procedure TForm1.Button1Click(Sender: TObject);
var ODT: tOdt;
    T: TOdtTable;
    i:integer;
    TableWidth, NewColWidth: TLength;
begin
   ODT:=TOdt.Create;
   ODT.LoadTemplate(FNE.Text);
   // Настроим свойства таблицы
   T:=ODT.GetTable('Таблица1');
   TableWidth:=T.Properties.Width;
   // ставлю ширину первой колонки в 5 см
   // остальные колонки - одинаковые
   NewColWidth.Value:=(TableWidth.Value-5.0)/(T.ColCount-1);
   NewColWidth.Measure:=TableWidth.Measure;
   for i:=0 to T.ColsProperties.Count-1 do begin
     if i=0 then begin
       T.ColsProperties[i].Width.Value:=5.0;
     end
     else T.ColsProperties[i].Width:=NewColWidth;
   end;
   T.SetColsProperties;
   T.SetColumns;
   ODT.ShowDocument;
   ODT.Destroy;  Лазарь скачал буквально на днях и все эти 2-3 дня бьюсь в попытках запустить тупой project "Hello, World!"
 Лазарь скачал буквально на днях и все эти 2-3 дня бьюсь в попытках запустить тупой project "Hello, World!"Arkano писал(а):odfproc.pas(756,15) Error: Forward declaration not solved "TOdt.ShowDocument(AnsiString="xdg-open",AnsiString="doc.odt");"

procedure TMainFrm.BitOkPrinterOClick(Sender: TObject);
var
i,k:Integer;
sum,sum_all,sum_st,s_qty,s_qty_st:Double;
Table:TODTTable;
begin
  PanPrinterO.Visible:=False;
   if PanPrinterO.Tag=1 then BEgin//
   if CheckFRFO.Checked=False then Begin
       if GridOstat.Cells[0,1]<>'' then begin
  Odt:=TOdt.Create;
  if Odt.LoadTemplate('/arch/shop/template/invent.odt') then begin
  Odt.FindAndReplace('firm',sh_head);
  Odt.FindAndReplace('sh_num',UTF8ToSys(LabShiftNum.Caption));
  Odt.FindAndReplace('curdatetime',UTF8ToSys(LabD_beg.Caption));
  Odt.FindAndReplace('suminvent',suminvent);
  Odt.FindAndReplace('factor',suminvent_n);
  Table:=Odt.GetTable('Таблица1');
  sum:=0;sum_all:=0;
  k:=1;
  for i:=1 to GridOstat.RowCount-1 do begin
    if  (Trim(GridOstat.Cells[2,i])<> Trim(GridOstat.Cells[4,i]))then begin
  Table.MultiplyRow(k,1);//добавили строку
  Table.Cell[0,k]:=GridOstat.Cells[0,i];
  Table.Cell[1,k]:=Utf8ToSys(GridOstat.Cells[1,i]);
  Table.Cell[2,k]:=GridOstat.Cells[2,i];
  Table.Cell[3,k]:=GridOstat.Cells[3,i];
  Table.Cell[4,k]:=GridOstat.Cells[4,i]
  sum:=(StrToFloat(GridOstat.Cells[4,i])-StrToFloat(GridOstat.Cells[2,i]))*StrToFloat(GridOstat.Cells[3,i]);
  sum_all:=sum_all+sum;
    if Trim(GridOstat.Cells[7,i])<>'' then Table.Cell[1,k]:=Table.Cell[1,k]+'   (я│п╨п╩п╟п╢)';
   k:=k+1;
   end;//if
  end;//for
  Table.Cell[1,k]:='п≤п╥п╠я▀я┌п╬п╨/п╫п╣п╢п╬я│я┌п╟я┤п╟ '+Format('%.2f',[sum_all])+' я─я┐п╠';
  Odt.ShowDocument(UnMark.Path_oowrite,'п╦п╫п╡п╣п╫я┌п╟я─п╦п╥п╟я├п╦я▐');
  end else ShowMessage('п²п╣ п╫п╟п╧п╢п╣п╫ я┬п╟п╠п╩п╬п╫');//п╣я│п╩п╦  я┐я│п©п╣я┬п╫п╬ п╥п╟пЁя─я┐п╥п╦п╩п╦ я┬п╟п╠п╩п╬п╫
  Odt.Destroy;
    end;//<>''
  End else PrintInventFR;
 PanPrinterO.Tag:=0;//
 PanOst.Visible:=False;
 GridOstat.RowCount:=2;
 OnMenu;
 ENd else BEgin
  if CheckFRFO.Checked=False then Begin
    if flCheck=False then begin
    if GridOstat.Cells[0,1]<>'' then begin
  Odt:=TOdt.Create;
  if Odt.LoadTemplate('/arch/shop/template/ostatki.odt') then begin
  Odt.FindAndReplace('firm',sh_head);
  Odt.FindAndReplace('grp',UTF8ToSys(ComboGrpOst.Text)+' ('+Utf8ToSys(PanOst.Caption)+')'); //п╢п╬п╠п╟п╡п╩я▐я▌ п╨п╟я┌п╣пЁп╬я─п╦я▌
  Odt.FindAndReplace('curdatetime',DateToStr(date)+' '+TimeToStr(time));
  Table:=Odt.GetTable('п╒п╟п╠п╩п╦я├п╟1');
  sum_all:=0;s_qty:=0;s_qty_st:=0;sum_st:=0;
  for i:=1 to GridOstat.RowCount-1 do begin
  Table.MultiplyRow(i,1);//п╢п╬п╠п╟п╡п╦п╩п╦ я│я┌я─п╬п╨я┐ ARow,count
  Table.Cell[0,i]:=GridOstat.Cells[0,i];//п╟я─я┌п╦п╨
  Table.Cell[1,i]:=Utf8ToSys(GridOstat.Cells[1,i]);//п╦п╪я▐
  Table.Cell[2,i]:=GridOstat.Cells[2,i];//п╨п╬п╩-п╡п╬
  s_qty:=s_qty+StrToFloat(GridOstat.Cells[2,i]);
  Table.Cell[3,i]:=GridOstat.Cells[3,i];//я├п╣п╫п╟
  sum:=StrToFloat(GridOstat.Cells[2,i])*StrToFloat(GridOstat.Cells[3,i]);
  Table.Cell[4,i]:=Format('%.2f',[sum]);//я│я┐п╪п╪п╟
  sum_all:=sum_all+sum;
   if GridOstat.Cells[4,i]<>'' then begin
   Table.Cell[1,i]:=Table.Cell[1,i]+'   (я│п╨п╩п╟п╢)';
   s_qty_st:=s_qty_st+StrToFloat(GridOstat.Cells[2,i]);
   sum_st:=sum_st+sum;
    end;//п╣я│п╩п╦ я│п╨п╩п╟п╢
   end;//for
  Table.Cell[0,i+1]:='п▓я│п╣пЁп╬';
  Table.Cell[2,i+1]:=FloatToStr(s_qty);//п╬п╠я┴.п╨п╬п╩-п╡п╬
  Table.Cell[4,i+1]:=Format('%.2f',[sum_all]);//я│я┐п╪п╪п╟
    if s_qty_st>0 then begin
  Table.Cell[2,i+1]:=FloatToStr(s_qty)+ ' п╡ я┌.я┤. п╫п╟ я│п╨п╩п╟п╢п╣ '+FloatToStr(s_qty_st);
  Table.Cell[4,i+1]:=Format('%.2f',[sum_all])+ ' п╡ я┌.я┤. п╫п╟ я│п╨п╩п╟п╢п╣ '+Format('%.2f',[sum_st]);
   end;//>0
  Odt.ShowDocument(UnMark.Path_oowrite,'п╬я│я┌п╟я┌п╨п╦');
  end else ShowMessage('п²п╣ п╫п╟п╧п╢п╣п╫ я┬п╟п╠п╩п╬п╫');//п╣я│п╩п╦  я┐я│п©п╣я┬п╫п╬ п╥п╟пЁя─я┐п╥п╦п╩п╦ я┬п╟п╠п╩п╬п╫
  Odt.Destroy;
    end;//<>''
   end else begin;//flCheck=flase
   if GridOstat.Cells[0,1]<>'' then begin
  Odt:=TOdt.Create;
  if Odt.LoadTemplate('/arch/shop/template/stockcheck.odt') then begin
  Odt.FindAndReplace('firm',sh_head);
  Odt.FindAndReplace('grp',UTF8ToSys(ComboGrpOst.Text));
  Odt.FindAndReplace('curdatetime',DateToStr(date)+' '+TimeToStr(time));
  Table:=Odt.GetTable('Таблица1');
    for i:=1 to GridOstat.RowCount-1 do begin
   if i< GridOstat.RowCount-1 then
  Table.MultiplyRow(i,1);
  Table.Cell[0,i]:=GridOstat.Cells[0,i];
  Table.Cell[1,i]:=Utf8ToSys(GridOstat.Cells[1,i]);
  Table.Cell[2,i]:=GridOstat.Cells[2,i];//п╨п╬п╩-п╡п╬
  Table.Cell[3,i]:=GridOstat.Cells[5,i];//п©я─п╦я┘п╬п╢
  Table.Cell[4,i]:=GridOstat.Cells[3,i];//я├п╣п╫п╟
  Table.Cell[5,i]:=GridOstat.Cells[6,i];//п©я─п╬п╢п╟п╤п╟
  sum:=StrToFloat(GridOstat.Cells[2,i])+StrToFloat(GridOstat.Cells[6,i])-StrToFloat(GridOstat.Cells[5,i]);
  Table.Cell[6,i]:=FloatToStr(sum);//п╬я│я┌п╟я┌п╨п╦+п©я─п╬п╢п╟п╤п╟-п©я─п╦я┘п╬п╢
    end;//for
  Odt.ShowDocument(UnMark.Path_oowrite,'проверка');
  end else ShowMessage('не найден шаблон');//
  Odt.Destroy;
    end;//<>''
    end;//flCheck=True
   End else PrintOstFr;//п©п╣я┤п╟я┌п╟п╣п╪ п╬я│я┌п╟я┌п╨п╦ п╦п╩п╦ п©я─п╬п╡п╣я─п╨я┐ я│п╨п╩п╟п╢п╟ п╫п╟ п╓п═
   ActiveControl:=GridOstat;
 ENd;
end;               
v-t-l писал(а):http://freepascal.ru/forum/viewtopic.php?f=24&t=7297&start=45#p57544



Brainenjii писал(а):Возможно ли разделить код на зависимые и независимые от X части? Вернее, не будете ли против патча? ^_^

Brainenjii писал(а):Возможно ли объединять ячейчи в таблице?
Brainenjii писал(а):Возможно ли вставить колонтитулы/картинки?
Brainenjii писал(а):Возможно ли получить число страниц для сгенерированного документа? Получить номер текущей страницы?
 но к сожалению нет свободного времени на то чтобы вплотную заниматься... если допишите - будет очень хорошо!
 но к сожалению нет свободного времени на то чтобы вплотную заниматься... если допишите - будет очень хорошо!



 интересная придумка
 интересная придумка 

 
 
Brainenjii писал(а):ИМХО, может получится даже вкуснее, чем LazReport ^_^
 
 

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1