Модератор: Модераторы
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;
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