Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TWordApplication [D6, Win95/98]


skiph ©   (2002-06-03 06:40:00) 

Как можно создать новый документ? Или где можно скачать полный хэлп по вордовым компонентам.
Есть метод TWordApplication.Documents.Add(), но у него куча параметров, и какой что означает нигде не написано (уже скачал один справочник).


skiph   (2002-06-06 04:30:00) [1]

Согласен, прогнал. Лежачего не бьют :) Просто когда работал через vvWord:=CreateOleObject("Word.Application.8"); приходилось использовать цифры


EternalWonderer   (2002-06-05 16:52:00) [2]

А вот это из Word_TLB:
// Constants for enum WdUnits
type
WdUnits = TOleEnum;
const
wdCharacter = $00000001;
wdWord = $00000002;
wdSentence = $00000003;
wdParagraph = $00000004;
wdLine = $00000005;
wdStory = $00000006;
wdScreen = $00000007;
wdSection = $00000008;
wdColumn = $00000009;
wdRow = $0000000A;
wdWindow = $0000000B;
wdCell = $0000000C;
wdCharacterFormatting = $0000000D;
wdParagraphFormatting = $0000000E;
wdTable = $0000000F;
wdItem = $00000010;

Видимо, Word не находит справа от курсора Column и возвращает ошибку. Попробуй в первый параметр передать wdCharacter и убедись в том, что курсору есть куда двигаться вправо...


EternalWonderer   (2002-06-05 16:14:00) [3]

А кто сказал, что первый параметр - цифра?
Вот макрос:
Selection.MoveLeft Unit:=wdCharacter, Count:=3
Selection.MoveRight Unit:=wdCharacter, Count:=3


skiph   (2002-06-05 10:51:00) [4]

Да нет:
OleV1:=9;OleV2:=1;
Application.Selection.MoveRight(OleV1,OleV2,EmptyParam);
не проходит.


EternalWonderer   (2002-06-05 09:42:00) [5]

> skiph © (05.06.02 06:29)
Может, не тот тип присваиваешь?
Например, если в приведённом выше примере
присвоить TemplateNameToOpen := "1" (Если есть такой файл :),
то всё пройдёт на-ура, а TemplateNameToOpen := 1 не прокатит.


skiph   (2002-06-05 09:28:00) [6]

Есть у меня уж такой хэлп (борландовский). :( Толку от него - больше места занимает


MBo   (2002-06-05 06:38:00) [7]

хелп, правда, неполный, есть на странице Download у Borland
(d5ms97.zip)
Кое-что можно посмотреть на http://www.afalinasoft.com/


skiph   (2002-06-05 06:29:00) [8]

Ашо вопрос. Часто в качестве аргументов требуется указать переменную типа OLEVariant. Пробовал просто заводить переменные соответствующего типа и им присваивать нужные значения, но программа вылетает. Например, команда MoveRight(OleV1,OleV2,EmptyParam)


AFROLOV   (2002-06-04 10:37:00) [9]

посмотри Information в справке по VBA


skiph   (2002-06-04 04:17:00) [10]

Я раньше так же делал (через Variant), только не всякий макрос проходил в дельфе, вот я и решил попробовать эти компоненты. Кстати, кто-нибудь знает как можно узнать сколько сантиметров (или пунктов, или еще чего) осталось до конца страницы, чтобы отчеты красиво формировать?


kull   (2002-06-03 13:30:00) [11]

Открываем Word, нажимаем записать макрос, делаем то что нужно (например создаем новый документ), а потом смотрим что в макросе записалось и используем в Delphi.
Очени помогает когда не знаешь как чтот-то сделать в Word или Excel.


AFROLOV   (2002-06-03 11:57:00) [12]


> Я думал с компонентами больше возможностей будет.

Возможностей будет не больше чем позволяет объект ворда.


skiph   (2002-06-03 11:46:00) [13]

Ой извиняюсь ошибся. Спасибо


skiph   (2002-06-03 11:43:00) [14]

А ну так-то я тоже умею. :( Я думал с компонентами больше возможностей будет.


AFROLOV   (2002-06-03 10:41:00) [15]

К выше сказанному, можно еще посоветовать использовать запись макросов. Выполнив последовательность действий будет получена необходимая последовательность команд.


EternalWonderer   (2002-06-03 10:33:00) [16]

Читай справку по WordBasic из комплекта Office.

Function GetWordDoc: _Document;
Var MSWord: _Global;
EP,TemplateNameToOpen: OleVariant;
Begin
EP := EmptyParam;
//Открытие нового документа Normal (poNew) или из шаблона (poNewTempl).
Try // попытка найти и подключиться к открытому Word
MSWord := CoWordGlobal.Create;
Case DocOut Of
0{poNew}: Result := MSWord.Documents.Add(EP,EP{,EP,EP{});
1{poNewTempl}: Begin
TemplateNameToOpen := ...;
Result := MSWord.Documents.Add(TemplateNameToOpen,EP{,EP,EP{});
End;
2{poCurDoc}: Result := MSWord.ActiveDocument;
End;
Except // в случае неудачи запуск нового экземпляра Word
Result := CoWordDocument.Create;
If DocOut = 1{poNewTempl} Then Begin
TemplateNameToOpen := ...
Result := Result.Application.Documents.Add(TemplateNameToOpen,EP{,EP,EP{});
End;
End;
End;

Закомментированные EP в фигурных скобках - для Office2000. Правда, при этом работать с 97 становится нельзя. Наоборот - можно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо