Форум: "Потрепаться";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
ВнизОтчет в WORDе Найти похожие ветки
← →
silenser (2003-04-14 09:27) [0]Вот файл отчета который открывает ворд и вставляет отчет мне нужно чтоб он при открытии открывал заданный шаблон а у меня не открывает в чем ошибка? и как здесь можно развернуть лист Ворда на альбомный без макросов ворда или сменить шрифт и его размер
procedure TFormF1.Button1Click(Sender: TObject);
var kstr1,kstr2,urmax,urt,uro,uro1,i,i1,ii,uroi,kod_kor1,kod_kor2,x1:integer;
f:textfile;
mybookmark : TBookmark;
abs: array of record
np1,np2:integer;
k1,k2,sum1,sum2:real;
naim1,naim2:string;
l1,l2:Boolean;
end;
st,ogl,strv1,strv,indp,ishind,
str1,str2,str3,str4,str5,str6,str7,str8:string;
var Template,NewTemplate,ItemIndex:OleVariant;
begin
if FormNew.MainMenu1.Items.Items[4].Items[1].Checked then
begin
kod_kor1:=1;
kod_kor2:=2;
end
else
begin
kod_kor1:=0;
kod_kor2:=789;
end;
str3:="";
x1:=64;
str4:="|";
for i:=2 to 40 do str4:=str4+"_";
str4:=str4+"|";
if CheckListBox1.Checked[0] then
begin
x1:=x1+26;
for i:=1 to 19 do str4:=str4+"_";
str4:=str4+"|";
end;
for i:=1 to 4 do str4:=str4+"_";
str4:=str4+"|";
for i:=1 to 11 do str4:=str4+"_";
str4:=str4+"|";
if CheckListBox1.Checked[1] then
begin
x1:=x1+20;
for i:=1 to 15 do str4:=str4+"_";
str4:=str4+"|";
end;
if CheckListBox1.Checked[2] then
begin
x1:=x1+10;
for i:=1 to 10 do str4:=str4+"_";
str4:=str4+"|";
end;
if CheckListBox1.Checked[3] then
begin
x1:=x1+5;
for i:=1 to 4 do str4:=str4+"_";
str4:=str4+"|";
end;
for i:=0 to 3 do if CheckListBox1.Checked[i] then str3:=str3+"1" else str3:=str3+"0";
MmItog.Clear;
mybookmark := dm.Table1.GetBookmark;
NewForm.flagotchet:=true;
FormNew.ListBox1.Visible:=false;
FormNew.ListBox2.Visible:=false;
FormNew.DolgGrid.Visible:=false;
str7:="Итого:";
if CheckListBox1.Checked[0] then kstr1:=53 else kstr1:=40;
for i:=1 to kstr1 do str7:=str7+".";
button1.Enabled:=true;
Button2.Enabled:=true;
dm.Table1.first;
ishind:=FormNew.LBindex.Items[0] ;
ogl:=FormNew.ListBox1.Items[0];
uro:=strtoint(FormNew.LBlevel.Items[0]);
strv1:=trim(ishind);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("select * from newpodr where lev_pod=(select max(lev_pod) from newpodr)");
Query1.Open;
urmax:=Query1.Fieldbyname("lev_pod").AsInteger;
Query1.Close;
SetLength(abs,urmax+1);
strv:="";
for i:=1 to uro do
begin
strv:=strv+copy(strv1,1,pos(" ",strv1));
strv1:=copy(strv1,pos(" ",strv1)+1,length(strv1)-pos(" ",strv1));
end;
strv1:=strv;
uro1:=length(strv);
Button1.Enabled:=false;
Memo1.Clear;
Memo2.Clear;
Memo3.Clear;
Memo4.Clear;
kstr1:=0;
kstr2:=0;
while (strv=strv1) and (not dm.Table1.Eof) do
begin
indp:=FormNew.LBindex.Items[FormNew.ListBox1.itemindex];
urt:=strtoint(FormNew.LBlevel.Items[FormNew.ListBox1.itemindex]);
abs[urt].naim1:=FormNew.ListBox1.Items[FormNew.ListBox1.itemindex];
abs[urt].naim2:=FormNew.ListBox1.Items[FormNew.ListBox1.itemindex];
abs[urt].np1:=0;
abs[urt].np2:=0;
abs[urt].k1:=0;
abs[urt].k2:=0;
abs[urt].sum1:=0;
abs[urt].sum2:=0;
abs[urt].l1:=true;
abs[urt].l2:=true;
while (FormNew.LBindex.Items[FormNew.ListBox1.itemindex]=indp) and (not dm.Table1.Eof) do
begin
if ((dm.Table1.FieldByName("kor").AsInteger=kod_kor1) or(dm.Table1.FieldByName("kor").AsInteger=kod_kor2)) and (dm.Table1.FieldByName("izm").asstring=Edit4.Text) then
begin
str2:="";
str(dm.Table1.fieldbyname("kol").asfloat:5:1,str1);
str2:=str2+str1;
str(dm.Table1.fieldbyname("okl").asfloat:9:1,str1);
str2:=str2+" "+str1;
if CheckListBox1.Checked[1] then
begin
str(dm.TableDolg.FieldByName("n5").asfloat:9:1,str1);
str2:=str2+" "+str1;
str(dm.TableDolg.FieldByName("n6").asfloat:9:1,str1);
str2:=str2+"-"+str1;
end;
if CheckListBox1.Checked[2] then
begin
str(dm.Table1.fieldbyname("nad").asfloat:9:1,str1);
str2:=str2+" "+str1;
end;
if CheckListBox1.Checked[3] then
begin
str(dm.Table1.fieldbyname("tn").AsInteger:5,str1);
str2:=str2+str1;
end;
str1:="";
str5:=trim(dm.Table1.Fieldbyname("naim").AsString);
if Length(str5)>45 then
if pos(" ",str5)<>0 then
begin
str5:=str5+" ";
while Length(str1+copy(str5,1,pos(" ",str5)-1))<=45 do
begin
str1:=str1+copy(str5,1,pos(" ",str5));
str5:=copy(str5,pos(" ",str5)+1,length(str5)-pos(" ",str5));
end;
← →
silenser (2003-04-14 09:33) [1]Продолжение
end
else
begin
str1:=copy(str5,1,44)+"-";
str5:=copy(str5,45,length(str5)-44);
end
else
begin
str1:=str5;
str5:="";
end;
str1:=trim(str1);
for i:=length(str1)+1 to 40 do str1:=str1+" ";
if CheckListBox1.Checked[0] then
begin
str1:=str1+" "+trim(dm.Table1.Fieldbyname("fio1").AsString);
for i:=length(str1)+1 to 58 do str1:=str1+" ";
end;
str2:=str1+" "+str2;
end;
if (dm.Table1.FieldByName("kor").AsInteger=kod_kor1) and (dm.Table1.FieldByName("izm").asstring=Edit4.Text) then
begin
for i:=urt downto uro do
begin
abs[i].l1:=true;
abs[i].np1:=abs[i].np1+1;
abs[i].sum1:=abs[i].sum1+dm.Table1.fieldbyname("okl").Value*1.15;
abs[i].k1:=abs[i].k1+dm.Table1.fieldbyname("kol").Value;
end;
Memo1.Lines.Add(str2);
if Length(str5)<>0 then Memo1.Lines.Add(str5);
end;
if (dm.Table1.FieldByName("kor").AsInteger=kod_kor2) and (dm.Table1.FieldByName("izm").asstring=Edit4.Text) then
begin
for i:=urt downto uro do
begin
abs[i].l2:=true;
abs[i].np2:=abs[i].np2+1;
abs[i].k2:=abs[i].k2+dm.Table1.fieldbyname("kol").Value;
abs[i].sum2:=abs[i].sum2+dm.Table1.fieldbyname("okl").Value*1.15;
end;
Memo2.Lines.Add(str2);
if Length(str5)<>0 then Memo2.Lines.Add(str5);
end;
dm.Table1.Next;
strv1:=copy(FormNew.LBindex.Items[FormNew.ListBox1.itemindex],1,uro1);
end;
if abs[urt].np1<>0 then
begin
if (kstr1=0) and (kod_kor1=1) then
begin
ii:=trunc((x1-8)/2);
str1:="";
for i:=1 to ii do str1:=str1+" ";
Memo3.Lines.Add(str1+"ВВОДЯТСЯ");
end;
for i:=uro to urt do if Length(abs[i].naim1)<>0 then
begin
kstr1:=kstr1+1;
ii:=trunc((x1-length(abs[i].naim1))/2);
str1:="";
for i1:=1 to ii do str1:=str1+" ";
Memo3.Lines.Add(str1+abs[i].naim1);
abs[i].naim1:="";
end;
for i:=1 to memo1.lines.count do Memo3.Lines.Add(Memo1.Lines[i-1]);
kstr1:=kstr1+memo1.lines.count;
str(abs[urt].k1:5:1,str1);
str(abs[urt].sum1:9:1,str2);
Memo3.Lines.Add(str7+str1+" "+str2);
abs[urt].l1:=false;
end;
if abs[urt].np2<>0 then
begin
if (kstr2=0) and (kod_kor1=1) then
begin
ii:=trunc((x1-11)/2);
str1:="";
for i:=1 to ii do str1:=str1+" ";
Memo4.Lines.Add(str1+"ИСКЛЮЧАЮТСЯ");
end;
for i:=uro to urt do if Length(abs[i].naim2)<>0 then
begin
kstr2:=kstr2+1;
ii:=trunc((x1-length(abs[i].naim1))/2);
str1:="";
for i1:=1 to ii do str1:=str1+" ";
Memo4.Lines.Add(str1+abs[i].naim2);
abs[i].naim2:="";
end;
← →
silenser (2003-04-14 09:35) [2]
for i:=1 to memo2.lines.count do Memo4.Lines.Add(Memo2.Lines[i-1]);
kstr2:=kstr2+memo2.lines.count;
str(abs[urt].k2:5:1,str1);
str(abs[urt].sum2:9:1,str2);
Memo4.Lines.Add(str7+str1+" "+str2);
abs[urt].l2:=false;
end;
Memo1.Clear;
Memo2.Clear;
if (strtoint(FormNew.LBlevel.Items[FormNew.ListBox1.itemindex])<=urt) or (dm.Table1.Eof) then
begin
if (strv<>strv1) or (dm.Table1.Eof) then uroi:=uro else uroi:=strtoint(FormNew.LBlevel.Items[FormNew.ListBox1.itemindex]);
for i:=urt-1 downto uroi do
if (abs[i].np1>abs[i+1].np1) and (abs[i].l1) then
begin
str(abs[i].sum1:9:1,str1);
str(abs[i].k1:5:1,str2);
Memo3.Lines.Add(str7+str2+" "+str1);
abs[i].l1:=false;
end;
for i:=urt-1 downto uroi do
if (abs[i].np2>abs[i+1].np2) and (abs[i].l2) then
begin
str(abs[i].sum2:9:1,str1);
str(abs[i].k2:5:1,str2);
Memo4.Lines.Add(str7+str2+" "+str1);
abs[i].l2:=false;
end;
end;
end;
Memo1.Clear;
if memo5.lines.count<memo6.lines.count then kstr1:=memo6.lines.count else kstr1:=memo5.lines.count;
for i:=0 to kstr1 do
begin
str1:="";
ii:=x1-length(Memo5.Lines[i]+Memo6.Lines[i]);
for kstr2:=1 to ii do str1:=str1+" ";
Memo1.Lines.Add(Memo5.Lines[i]+str1+Memo6.Lines[i]);
end;
if edit4.Text="0" then
begin
edit4.Text:="";
label6.Caption:="";
end
else
begin
edit4.Text:="0";
label6.Caption:="-";
end ;
Memo1.Lines.Add("");
str1:="";
ii:=trunc((x1-length(ogl))/2);
for i:=1 to ii do str1:=str1+" ";
Memo1.Lines.Add(str1+ogl);
Memo1.Lines.Add("");
str1:="";
ii:=trunc((x1-length(label1.caption+" "+edit1.text+" "+Label6.Caption+" "+Edit4.Text))/2);
for i:=1 to ii do str1:=str1+" ";
Memo1.Lines.Add(str1+label1.caption+" "+edit1.text+" "+Label6.Caption+" "+Edit4.Text);
Memo1.Lines.Add(str1+label3.caption+" "+edit2.text+" "+label4.caption);
Memo1.Lines.Add(label2.caption+" "+edit3.text+" "+label5.caption);
str1:=" ";
for i:=1 to x1-15 do str1:=str1+"_";
Memo1.Lines.Add(str1);
str2:="|Наименование структурного подразделения|";
if CheckListBox1.Checked[0] then str2:=str2+" Ф.И.О. |";
str2:=str2+"Кол-|Должностной|";
if CheckListBox1.Checked[1] then str2:=str2+" Схема |";
if CheckListBox1.Checked[2] then str2:=str2+" Надбавка |";
if CheckListBox1.Checked[3] then str2:=str2+"Таб.|";
Memo1.Lines.Add(str2);
str2:="| Наименование должности |";
if CheckListBox1.Checked[0] then str2:=str2+" |";
str2:=str2+" во |оклад, руб.|";
if CheckListBox1.Checked[1] then str2:=str2+" Д/О, руб. |";
if CheckListBox1.Checked[2] then str2:=str2+" руб. |";
if CheckListBox1.Checked[3] then str2:=str2+" № |";
Memo1.Lines.Add(str2);
Memo1.Lines.Add(str4);
str2:="| 1 |";
kstr1:=2;
if CheckListBox1.Checked[0] then
begin
str2:=str2+" "+inttostr(kstr1)+" |";
kstr1:=kstr1+1;
end;
str2:=str2+" "+inttostr(kstr1)+" |";
kstr1:=kstr1+1;
str2:=str2+" "+inttostr(kstr1)+" |";
kstr1:=kstr1+1;
if CheckListBox1.Checked[1] then
begin
str2:=str2+" "+inttostr(kstr1)+" |";
kstr1:=kstr1+1;
end;
if CheckListBox1.Checked[2] then
begin
str2:=str2+" "+inttostr(kstr1)+" |";
kstr1:=kstr1+1;
end;
if CheckListBox1.Checked[3] then str2:=str2+" "+inttostr(kstr1)+" |";
Memo1.Lines.Add(str2);
Memo1.Lines.Add(str4);
Assignfile(f,"c:\fom\res.doc");
Rewrite(f);
for i:=1 to memo1.lines.count do Writeln(f,Memo1.Lines[i-1]);
for i:=1 to memo3.lines.count do Writeln(f,Memo3.Lines[i-1]);
for i:=1 to memo4.lines.count do Writeln(f,Memo4.Lines[i-1]);
closefile(f);
MmItog.Lines.Add(Memo1.text);
MmItog.Lines.Add(Memo4.text);
MmItog.Lines.Add(Memo3.text);
ShellExecute(Handle,nil,"c:\fom\res.doc",nil,nil,sw_restore);
NewForm.flagotchet:=false;
FormNew.ListBox1.Visible:=true;
FormNew.ListBox2.Visible:=true;
FormNew.DolgGrid.Visible:=true;
dm.Table1.GotoBookmark(myBookmark);
begin
Template := EmptyParam;
NewTemplate := True;
ItemIndex := 1;
try
SplashForm.WordApplication1.Connect;
except
MessageDlg("Word may not be installed", mtError, [mbOk], 0);
Abort;
end;
SplashForm.WordApplication1.Caption := "ОТЧЕТ";
if str3="1111" then Template := "C:\fom\Shablon\sh1.dot";
if str3="1110" then Template := "C:\fom\Shablon\sh2.dot";
if str3="1101" then Template := "C:\fom\Shablon\sh3.dot";
NewTemplate := False;
MmItog.SelectAll;
MmItog.CopyToClipboard;
FormNew.MainMenu1.Items.Items[4].Items[0].Items[0].Checked:=false;
FormNew.MainMenu1.Items.Items[4].Items[1].Checked:=false;
button1.Enabled:=true;
FormF1.Close;
ShowMessage("Закрывайте Word только после завершения работы со штатным расписанием");
SplashForm.Wordapplication1.Visible := false;
end;
end;
← →
Hooch (2003-04-14 09:55) [3]мало исходных данных, давай ещё ! :-)
← →
Anatoly Podgoretsky (2003-04-14 10:02) [4]Кажется ты не все привел
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c