procedure TForm1.Button3Click(Sender: TObject);
var n: OleVariant;
vcol: OleVariant;
vListTemplate: OleVariant;
vLevel: OleVariant;
OutlineNum: OleVariant;
Level: OleVariant;
ContinuePrev: OleVariant;
Range: OleVariant;
OutLineNumber : OleVariant;
paraStart, paraEnd: Integer;
templ,templ1,templ2,templ3,d,dd,ddd,word:OleVariant;
i,j: integer;
s: string;
begin
{кароче эта часть кода отвечает за копирование шаблона в новый документ BEGIN}
n:=GetCurrentDir+'\№3_(со списками)_1.doc';
try
Word := CreateOleObject('Word.Application');
except
ShowMessage('Microsoft Word не доступен!');
exit;
end;
Word.Documents.Add(n);
Word.Selection.WholeStory;
Word.Selection.Copy;
Word.Selection.TypeParagraph;
Word.Selection.EndKey(Unit := wdStory);
Word.Selection.PasteAndFormat(wdPasteDefault);
{кароче эта часть кода отвечает за копирование шаблона в новый документ END}
vcol:=wdcollapseend;
for i:=1 to listbox1.Count do
begin
word.documents.item(1).lists.item(1).range.select;
word.selection.collapse(vcol);
word.selection.insertafter('item '+inttostr(i));
word.documents.item(1).lists.item(1).range.select;
word.selection.collapse(vcol);
word.selection.insertafter(#13);
end;
word.visible:=true;
end;
Глюки при работе со списками в Word
материалами отсюда и отсюда....и сделал вот такой вот код:
Код:
но получается как-то коряво :( пробовал по разному! По методу второй ссылки с применением шаблонов списка тоже не прокатило! Если кто-то выводил в ворде списки -подскажите пожалуйста как делали!Самое главное не могу понять: почему из ListBox'а данные в список заносятся в обратном порядке?
Проще всего записать макрос в Word, повторяющий нужные действия, открыть редактор VBA, посмотреть что получилось и перевести код уже на Delphi.
В обратном порядке скорее всего потому, что как ни пытаешься вставить "после" - в результате вставляется "до". Надо прогнать под отладчиком построково и посмотреть что получается. И справку по используемым методам объектов ворда изучить не помешает
Delphi 7, MS Word 2003. Могу дать код своего юнита экспорта данных в ворд.
Код:
procedure TForm1.Button3Click(Sender: TObject);
var n: OleVariant;
vcol: OleVariant;
vListTemplate: OleVariant;
vLevel: OleVariant;
OutlineNum: OleVariant;
Level: OleVariant;
ContinuePrev: OleVariant;
Range: OleVariant;
OutLineNumber : OleVariant;
paraStart, paraEnd: Integer;
templ,templ1,templ2,templ3,d,dd,ddd,word:OleVariant;
i,j: integer;
s: string;
begin
{кароче эта часть кода отвечает за копирование шаблона в новый документ BEGIN}
n:=GetCurrentDir+'\№3_(со списками)_1.doc';
try
Word := CreateOleObject('Word.Application');
except
ShowMessage('Microsoft Word не доступен!');
exit;
end;
word.visible:=true;
Word.Documents.Add(n);
Word.Selection.WholeStory;
Word.Selection.Copy;
Word.Selection.TypeParagraph;
Word.Selection.EndKey(Unit := wdStory);
Word.Selection.PasteAndFormat(wdPasteDefault);
//Word.Connect;
i:=Word.Documents.item(1).tables.count;
//Word.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
//Word.Documents.item(1).ConnectTo(Word.ActiveDocument);
{кароче эта часть кода отвечает за копирование шаблона в новый документ END}
vcol:=wdCollapseEnd;
word.documents.item(1).lists.item(1).range.select;
for i:= 1 to listbox1.Count do
begin
if i=1 then
begin
vcol:=wdCollapseStart;
word.selection.collapse(vcol);
word.selection.insertafter('item '+inttostr(1));
vcol:=wdCollapseEnd;
word.selection.collapse(vcol);
word.selection.TypeParagraph;
end else
begin
word.selection.insertafter('item '+inttostr(i));
word.selection.collapse(vcol);
if i<> listbox1.Count then word.selection.TypeParagraph;
end;
end;
end;
var n: OleVariant;
vcol: OleVariant;
vListTemplate: OleVariant;
vLevel: OleVariant;
OutlineNum: OleVariant;
Level: OleVariant;
ContinuePrev: OleVariant;
Range: OleVariant;
OutLineNumber : OleVariant;
paraStart, paraEnd: Integer;
templ,templ1,templ2,templ3,d,dd,ddd,word:OleVariant;
i,j: integer;
s: string;
begin
{кароче эта часть кода отвечает за копирование шаблона в новый документ BEGIN}
n:=GetCurrentDir+'\№3_(со списками)_1.doc';
try
Word := CreateOleObject('Word.Application');
except
ShowMessage('Microsoft Word не доступен!');
exit;
end;
word.visible:=true;
Word.Documents.Add(n);
Word.Selection.WholeStory;
Word.Selection.Copy;
Word.Selection.TypeParagraph;
Word.Selection.EndKey(Unit := wdStory);
Word.Selection.PasteAndFormat(wdPasteDefault);
//Word.Connect;
i:=Word.Documents.item(1).tables.count;
//Word.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
//Word.Documents.item(1).ConnectTo(Word.ActiveDocument);
{кароче эта часть кода отвечает за копирование шаблона в новый документ END}
vcol:=wdCollapseEnd;
word.documents.item(1).lists.item(1).range.select;
for i:= 1 to listbox1.Count do
begin
if i=1 then
begin
vcol:=wdCollapseStart;
word.selection.collapse(vcol);
word.selection.insertafter('item '+inttostr(1));
vcol:=wdCollapseEnd;
word.selection.collapse(vcol);
word.selection.TypeParagraph;
end else
begin
word.selection.insertafter('item '+inttostr(i));
word.selection.collapse(vcol);
if i<> listbox1.Count then word.selection.TypeParagraph;
end;
end;
end;
Вот так вот надо было сделать!Спасибо всем откликнувшимся!:)