![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Как сделать так что было как на картинки?
Код:
procedure TClav.N10Click(Sender: TObject); var i:integer; k,b:OleVariant; begin WordApplication1.Visible:= true; WordApplication1.Connect; WordDocument1.Connect; //==================================================================================== k:=23; b:=0; WordDocument1.Range(b).Text:='Отчет по подразделениям'; WordDocument1.Range(b).Select; WordDocument1.Range.ParagraphFormat.LineSpacing:= 20; WordDocument1.Range.Font.Size:=16; WordDocument1.Range.ParagraphFormat.Alignment:=$00000001; //==================================================================================== for i:=2 to ADOQuery1.RecordCount+1 do begin WordDocument1.Range(b).InsertBefore(ADOQuery1.FieldValues['podr']); WordDocument1.Range(b).Select; WordApplication1.Selection.Font.Size:=12; WordApplication1.Selection.ParagraphFormat.Alignment:=$00000000; WordApplication1.Selection.TypeParagraph; WordDocument1.Range(b).InsertAfter(ADOQuery1.FieldValues['sot_familiya']+' '+ADOQuery1.FieldValues['sot_imya']+' '+ADOQuery1.FieldValues['sot_otchestvo']); WordDocument1.Range(b).Select; WordApplication1.Selection.Font.Size:=12; WordApplication1.Selection.ParagraphFormat.Alignment:=$00000000; ADOQuery1.Next; end; И можете объяснить свойство Range ели вам не сложно, а то я не до конца понимаю? |
#2
|
|||
|
|||
![]() Range это область.незнаю как с одной цифрой (как в примере Range(b). но точно помню юзал диапазон,типа .Range(1,50).text:='блаблабал'.
Range также может содержать раздел,,абзац,таблицу и тд. удобно тем что в переменные типа variant можно по ходу обработки текста присвоить нужные куски и потом работать с ними. Сделать как на кратинке? ну мы же не видим структуру твоей таблийцы =)какие откуда значения брать.додумай сам... В твоем примере наверное лучше просто последовательно писать текст лучше юзай не range а typetext Код:
WordApp.Selection.Font.Size:=16;//формируем заголовок.шрифт 16 WordApp.Selection.Paragraphs.Alignment:=1;//по центру WordApp.Selection.TypeText('Отчет по подразделениям'); //печатаем основной текст WordApplication1.Selection.Font.Size:=12; for i:=2 to ADOQuery1.RecordCount-1 do begin WordDocument1.selection.typetext(#13#10+ADOQuery1.FieldValues['podr']); //#13#10 чтоб на следующую стороку перешло WordApp.Selection.Paragraphs.Alignment:=0;//по левому краю WordApplication1.Selection.ParagraphFormat.Alignment:=$00000000; WordApplication1.Selection.TypeParagraph; WordDocument1.selection.typetext(ADOQuery1.FieldValues['sot_familiya']+' '+ADOQuery1.FieldValues['sot_imya']+' '+ADOQuery1.FieldValues['sot_otchestvo']); WordApplication1.Selection.Font.Size:=12; WordApplication1.Selection.ParagraphFormat.Alignment:=$00000000; ADOQuery1.Next; end; да и кажется цикл у тебя не правильно написан,не ADOQuery1.RecordCount+1 а МИНУС 1,не? а то ошибка EOF будет Последний раз редактировалось Snake22, 29.04.2012 в 15:36. |