On-line: PSP, гостей 4. Всего: 5 [подробнее..]
АвторСообщение



Пост N: 2
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 22.04.15 20:48. Заголовок: шаблон Microsoft Word


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

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 103 , стр: 1 2 3 4 5 6 All [только новые]


администратор




Пост N: 4757
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 23.04.15 15:27. Заголовок: Вероятно все действи..


Вероятно все действия проделать в WORD с записью в макрос а затем пробовать
все повторить в Harbour используя текст макроса.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 4
Зарегистрирован: 22.04.15
ссылка на сообщение  Отправлено: 25.04.15 10:39. Заголовок: шаблон Microsoft Word


спс но... данный вариант я итак использую...
- то есть я в программе создаю весь документ Word, а при изменении текста в Word, соответственно приходится изменять исходный код в программе.
- хотелось бы использовать шаблон Word, чтобы при изменении текста в документе - пользователям и мне достаточно было изменить этот шаблон не изменяя исходный код программы

И во-вторых, в дальнейшем мне было бы достаточно предоставить =Справочник выходных переменных=, с помощью которого пользователи могли бы создавать свои любые отчеты, документы - просто создав шаблон, указав переменные и установив в определенную директорию моей программы.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4761
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 25.04.15 13:17. Заголовок: Так сразу и храни эт..


Так сразу и храни эти переменные в шаблоне. Затем его грузим ,
поиск и замена переменных по тексту из справочника. И все.

Например шаблон:

Директор [value1]
Бухгалтер [blabla]

В справочнике есть value1 и есть на что ее заменять ,
как и blabla.



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 28.11.14
ссылка на сообщение  Отправлено: 27.04.15 08:00. Заголовок: если я правильно пон..


если я правильно понял проблему
то возможно подойдет мое решение (о котором я уже здесь упоминал)

1. Нужные места в документе ворд помечаю именами.
В 2003-м - Меню/Вставка/Закладка

2. в программе делаю так

 
....
aAdd(aBookMarks, {"Team", s})
aAdd(aBookMarks, {"Sign3", wMain.txt_Manager3.Value})
aAdd(aBookMarks, {"Sign4", wMain.txt_Manager4.Value})
aAdd(aBookMarks, {"Sign2", wMain.txt_Manager2.Value})



If oResDoc:Bookmarks:Count > 0
BkMrk:=""
For Each BkMrk In oResDoc:Bookmarks
bmName:=BkMrk:Name
if (n:=AScan( aBookMarks, {|x| x[ 1 ] == bmName} ))>0
//BkMrk:Range := BkMrk:Name
BkMrk:Range := aBookMarks[n,2]
endif
Next //BkMrk
EndIf


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 4782
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.04.15 18:59. Заголовок: SadStar3333 пишет: ..


SadStar3333 пишет:

 цитата:
то возможно подойдет мое решение


Да тоже нормальный вариант !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5175
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.11.16 22:17. Заголовок: Думал что не буду по..


Думал что не буду пользоваться таблицами Ворда. А не получилось, нужно делать....
Подскажите решение (может кто поделиться функциями) как сделать из шаблона таблицы Ворда:
как найти в тексте таблицу, как сделать добавление столбца и вставку данных из базы ?



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3502
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 24.11.16 08:08. Заголовок: Если поставить закла..


Если поставить закладку внутри таблицы, то найти ее можно так:

oSelect:Goto(-1,,, <BookmarkName>)

Вставить столбец в таблицу в указанном месте можно вызовами методов:

oSelect:InsertColumns()

или

oSelect:InsertColumnsRight()

Вставить текст:

oSelect:TypeText(<text>)

Перемещение между ячейками таблицы:

oSelect:MoveRight(1, 1)

аналогично есть методы MoveLeft, MoveUp, MoveDown, и еще несколько Move*


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5176
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.11.16 10:58. Заголовок: Pasha пишет: Если п..


Pasha пишет:

 цитата:
Если поставить закладку внутри таблицы, то найти ее можно так:


Спасибо БОЛЬШОЕ !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5192
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.11.16 21:48. Заголовок: Всем привет ! Вопрос..


Всем привет !
Вопрос возник по ходу решения поиск/замена выражения в Ворде.
Не хочу делать закладку, уже имел печальный опыт, юзера при правке шаблона стирают закладки.
Если будет стоять текст другого цвета (у меня в шаблоне синий) то они этот текст не трогают.
Сделал макрос поиск/замена всех строк:
 
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "#M->Date1"
.Replacement.Text = "01/01/2016"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

Как его перевести на Харбор ?
Помогите пожалуйста, уже лет 5 не занимался этим.

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3510
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 01.12.16 08:10. Заголовок: Вместо точки ставить..


Вместо точки ставить двоеточие
После вызова метода ставить скобки
Так:

oFind := oSelec:Find
oFind:ClearFormatting()
oFind:Replacement:ClearFormatting()
oFind:Text := "#M->Date1"
oFind:Replacement:Text := "01/01/2016"
oFind:Forward := .T.
oFind:Wrap := 1
и так далее
в конце
oFind:Execute(,,,,,,,,,, 2)

справку по методам смотреть в файле VBAWD10.CHM

Из этого файла:

Runs the specified find operation. Returns True if the find operation is successful. Boolean.

expression.Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl)

видно, что Replace - это 11-й параметр метода Execute. В таком порядке и надо передавать значения
ну и подставлять значения констант wd*

поправил опечатки

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5194
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.12.16 14:39. Заголовок: Pasha СПАСИБО БОЛЬШО..


Pasha СПАСИБО БОЛЬШОЕ !!!
Пошёл делать...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5197
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.12.16 18:57. Заголовок: Сразу большая непоня..


Сразу большая непонятка.
Открываю Ворд так:
    oWord := TOleAuto():New( "Word.Application" ) 
oDocs := oWord:Documents
oDocs:Open( cFileDoc )
oActive := oWord:ActiveDocument
oSelect := oWord:Selection

oFind: нужно менять на что ?
Не пойму где здесь работа с oFind

И ещё вопрос, если есть #include "word.ch" можно же не менять значения констант wd* ?


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6163
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.12.16 19:04. Заголовок: Andrey Попробуй вар..


Andrey
Попробуй вариант с созданием таблицы в EXCEL и после просто скопируй ее и вставь в WORD ,
должно сработать , да и гимора меньше мне кажется.

PS
Проверил в рукопашную , работает на ура

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5198
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.12.16 19:21. Заголовок: Dima пишет: Попробу..


Dima пишет:

 цитата:
Попробуй вариант с созданием таблицы в EXCEL и после просто скопируй ее и вставь в WORD ,
должно сработать , да и гимора меньше мне кажется.



Не пойдёт. Нужно пример сделать для учёбы. Чтобы потом любой желающий к себе в прогу забирал.
Пример работы с EXCEL я сделал ( с вашей помощью). Теперь нужно так же с Вордом сделать.
У меня есть вставка/замена через rtf файл, есть с закладками. Но это не то. Этот пример гибче будет.
Да и работы с таблицами в Ворде так и не нашёл нигде.

Будем биться с Вордом !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6164
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.12.16 19:44. Заголовок: Andrey пишет: Будем..


Andrey пишет:

 цитата:
Будем биться с Вордом !


Удачи !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5200
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.12.16 18:47. Заголовок: Вот здесь есть похож..


Вот здесь есть похожее решение.
http://clipper.borda.ru/?1-4-0-00001048-000-0-0-1426699788

С помощью Паши и Haz - поиск/замена заработала !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5201
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.12.16 20:35. Заголовок: Как получить хендл о..


Как получить хендл открытого Вордом окна ?

Для Экселя знаю как получить:
    // окно таблицы Excel на передний план 
hWnd := oExcel:hWnd
ShowWindow( hWnd, 3 ) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6
BringWindowToTop( hWnd )

Для Ворда не срабатывает...
hWnd := oWord:hWnd

Выдаёт ошибку:
Error Word.Application/0 S_OK: HWND</p>
Called from TOLEAUTO:HWND(0)
Called from MYWORD2OLE(56)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1355
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 03.12.16 21:23. Заголовок: Если для Excel exp..


Если для Excel

expression .Hwnd
expression A variable that represents an Application object.

то в Word

expression .Hwnd
expression A variable that represents a Window object.

Поэтому, должно сработать что-то типа
hWnd := oWord:ActiveDocument:ActiveWindow:Hwnd

или oWord:Windows("Document1"):Hwnd

ShowWindow( hWnd, 3 )..
можно заменить на
:Windows("Document1"):Activate
:Windows("Document1"):WindowState := wdWindowStateMaximize


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5202
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.12.16 22:28. Заголовок: Петр пишет: oWord:W..


Петр пишет:

 цитата:
oWord:Windows("Document1"):Hwnd



Не работает !
Причём у меня Русский MS Word и всегда создаётся "Документ2", у юзеров тоже может быть по другому.

Вот и не хочется делать перебор разных вариантов:
   cTitle  := "Документ2 - MICROSOFT WORD" 
cTitle2 := "Документ2 [Режим ограниченной функциональности] - MICROSOFT WORD"
hWnd := FindWindowEx(,,, cTitle )
hWnd2 := FindWindowEx(,,, cTitle2 )


А получить хенд созданного ворд-документа:
oWord:Documents:Add()
oActive := oWord:ActiveDocument()
oMarks := oActive:BookMarks
oText := oWord:Selection()

Как это сделать ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1356
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.16 00:08. Заголовок: Andrey пишет: Не ра..


Andrey пишет:

 цитата:
Не работает !


Да, действительно, хотя по документации должно бы работать.

Andrey пишет:

 цитата:
А получить хенд созданного ворд-документа:
oWord:Documents:Add()
oActive := oWord:ActiveDocument()



Пробуйте так

oWord:Documents:Add()
oActive := oWord:ActiveDocument()

cTitle := oActive:Name
hWnd := FindWindowEx(,,, cTitle )


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5203
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.16 00:44. Заголовок: Петр пишет: oWord:D..


Петр пишет:

 цитата:
oWord:Documents:Add()
oActive := oWord:ActiveDocument()

cTitle := oActive:Name
hWnd := FindWindowEx(,,, cTitle )



Не пашет !

Додумался до следующего:
   cTitle := oActive:Name  
hWnd := FindWindowEx(,,, cTitle )
? cTitle, hWnd
cTitle += " - MICROSOFT WORD"
hWnd := FindWindowEx(,,, cTitle )
? cTitle, hWnd

Результат такой:
Документ1	0	 
Документ1 - MICROSOFT WORD 396408


Как быть с таким окном Ворда (у юзеров периодически попадают) ?
cTitle := "Документ2 [Режим ограниченной функциональности] - MICROSOFT WORD"


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1357
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.16 01:05. Заголовок: Andrey пишет: Додум..


Andrey пишет:

 цитата:
Додумался до следующего:



Нет универсальности, лучше сначала использовать коллекцию Documents, а потом Windows

 cTitle := oActive:Name  
hWnd := FindWindowEx(,,, cTitle )

IF hWnd == 0
cTitle := oWord:Windows(1):Caption
hWnd := FindWindowEx(,,, cTitle )
ENDIF


если нет уверенности, сколько окон открыто в Ворде, а нужно последнее

 цитата:
nCount := oWord:Windows:Count
cTitle := oWord:Windows(nCount ):Caption



или перебор можно сделать

 
cTitle := oActive:Name
FOR nI := 1 TO nCount
IF cTitle $ oWord:Windows(nI):Caption
..


В отличие от коллекции Documents, в коллекцию Windows попадут и служебные окна (диалоги) Word, имейте ввиду.

В общем выход есть - пробуйте, и не ждите готового ответа.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5204
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.16 02:34. Заголовок: Петр пишет: В отлич..


Петр пишет:

 цитата:
В отличие от коллекции Documents, в коллекцию Windows попадут и служебные окна (диалоги) Word, имейте ввиду.



Что-то не работает:
nCount := oWord:Windows:Count
? nCount
? oWord:Windows(1):Caption


Выдает 1 и вылет с ошибкой на следующем операторе:
Error Word.Application/0 S_OK: WINDOWS
Called from TOLEAUTO:WINDOWS(0)
Called from MYWORD1OLE(83)


Хотя по Менеджеру памяти 5 скрытых процесса Ворд висят....


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1285
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 04.12.16 12:07. Заголовок: Andrey Может ЭТО по..


Andrey
Может ЭТО поможет?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5205
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.16 13:41. Заголовок: PSP пишет: Может ЭТ..


PSP пишет:

 цитата:
Может ЭТО поможет?


Не, не понимаю... Уже совсем заработался... Достали эти окна...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1358
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.16 14:45. Заголовок: Andrey пишет: Выдае..


Andrey пишет:

 цитата:
Выдает 1 и вылет с ошибкой на следующем операторе:
Error Word.Application/0 S_OK: WINDOWS
Called from TOLEAUTO:WINDOWS(0)
Called from MYWORD1OLE(83)



Замените библиотеку hbole на hbwin.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5207
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.16 16:06. Заголовок: Петр пишет: Заменит..


Петр пишет:

 цитата:
Замените библиотеку hbole на hbwin.


Поменял местами библиотеки, совсем избавиться не могу, т.е. проверка на наличие ВОРДА - требуется hbole.
Сразу не работает код:
   oWord := TOleAuto():NEW( "Word.Application" ) 
IF Ole2TxtError() != 'S_OK'
MsgStop( "На этом компьютере MS Word не установлен !" , "Ошибка!" )
RETURN .F.
ENDIF

Если убрать выход, то ошибка пропадает, код этот работает:
   nCount := oWord:Windows:Count 
? nCount
? "Caption=",oWord:Windows(1):Caption

Но результат всё равно не верен:
1
Caption= Документ5

Хотя 7 штук скрытых WORD сидят в памяти.
Опять перебора не получается...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1359
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.16 16:46. Заголовок: Andrey пишет: прове..


Andrey пишет:

 цитата:
проверка на наличие ВОРДА - требуется hbole


Да вы что,
 
IF ( oWord := win_oleCreateObject( "Word.Application" ) ) != NIL
oWord:Documents:Add()
..
ELSE
? "Error. MS Word not available.", win_oleErrorText()
ENDIF

Я вас не понимаю, что значит поменял библиотеки местами - просто используйте hbwin вместо hbole! ВСЕ!

Что значит убрать выход?
При чем здесь скрытые Word в памяти - что вы от них хотите?
Что значит верно - не верно? Это согласно документации или вашим ожиданиям?

Если вы хотите бороться с Word - боритесь.
Если хотите, что бы кто-то помог - приведите полноценный фрагмент кода, в котором вы сомневаетесь, укажите, что и как используете и т.д.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6170
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.12.16 17:17. Заголовок: Петр пишет: IF ( o..


Петр пишет:

 цитата:
IF ( oWord := win_oleCreateObject( "Word.Application" ) ) != NIL


А не лучше ли так ?
IF ( oWord := win_oleCreateObject( "Word.Application" ) ) == "O"

PS
Я про Valtype забыл , нужно его туда прицепить

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5208
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.16 17:21. Заголовок: Петр пишет: Я вас н..


Петр пишет:

 цитата:
Я вас не понимаю, что значит поменял библиотеки местами - просто используйте hbwin вместо hbole! ВСЕ!


Убрал воообще hbole.
На экране 3 открытых вордовых документов. Ещё один WORD скрытый процесс.
Вот полноценный фрагмент кода:
  oWord := TOleAuto():NEW( "Word.Application" ) 
oWord:Documents:Add()
oActive := oWord:ActiveDocument()
oText := oWord:Selection()
oWord:ActiveDocument:PageSetup:Orientation := wdOrientLandscape
oWord:ActiveDocument:PageSetup:LeftMargin := 72.0 //~2.5 см
....// построение таблицы и т.д.
nCount := oWord:Windows:Count
? nCount

Выдает 1. Почему ?




Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6171
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.12.16 17:22. Заголовок: Andrey пишет: Вот п..


Andrey пишет:

 цитата:
Вот полноценный фрагмент кода:
nCount := oWord:Windows:Count
? nCount


Начни с самого начала , где создается объект

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1360
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.16 17:38. Заголовок: Andrey пишет: Вот п..


Andrey пишет:

 цитата:
Вот полноценный фрагмент кода:
nCount := oWord:Windows:Count
? nCount



Полноценный - так полноценный..

Вы каким-то образом создали экземпляр OLE обьекта

Дальше, наверное, вы создали новый документ добавив его в коллекцию Documents
oWord:Documents:Add()
При этом, поскольку документы Word живут в Window, добавился также обьект в коллекцию Windows (заметим, что 1 обьект!)

Поэтому oWord:Windows:Count вернет 1

Если вызвать
oWord:Documents:Add()
oWord:Documents:Add()
получим 2 и т.д.

Все ваши действия относятся к конкретному OLE экземпляру, а не к процессам в памяти или чему вы там решили.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1361
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.16 17:41. Заголовок: Dima пишет: А не лу..


Dima пишет:

 цитата:
А не лучше ли так ?
IF ( oWord := win_oleCreateObject( "Word.Application" ) ) == "O"



win_oleCreateObject в случае неуспеха вернет NIL, когда-то это активно обсуждалось разработчиками.

На том и порешили

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1362
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.16 17:49. Заголовок: Andrey пишет: Убрал..


Andrey пишет:

 цитата:
Убрал воообще hbole.
На экране 3 открытых вордовых документов. Ещё один WORD скрытый процесс.
Вот полноценный фрагмент кода:
oWord := TOleAuto():NEW( "Word.Application" )



Класс TOleAuto определен в библиотеке hbole.
Что вы там делаете не знаю, но часть ваших слов вызывает определенные сомнения.





Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5209
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.16 18:02. Заголовок: Петр пишет: Все ваш..


Петр пишет:

 цитата:
Все ваши действия относятся к конкретному OLE экземпляру, а не к процессам в памяти или чему вы там решили.


А я решил что это относиться к процессам в памяти.

Вопрос был изначален - как узнать хендл окна Worda с открытым документом, чтобы его на экран впереди всех задач вынести.
В противном случае он остается после МиниГуи задачи.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6172
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 04.12.16 18:41. Заголовок: Andrey А ты пробова..


Andrey
А ты пробовал вообще , то что Петр советовал ?
Использовать для создания объекта Word , win_oleCREATEOBJECT , ну а далее то что он предлагал.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1364
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.16 18:41. Заголовок: Andrey пишет: Вопро..


Andrey пишет:

 цитата:
Вопрос был изначален - как узнать хендл окна Worda с открытым документом, чтобы его на экран впереди всех задач вынести.



Вы сами дали на него ответ - FindWindowEx

В чем затык?


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5211
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.16 19:10. Заголовок: Петр пишет: Вы сами..


Dima пишет:

 цитата:
А ты пробовал вообще , то что Петр советовал ?
Использовать для создания объекта Word , win_oleCREATEOBJECT , ну а далее то что он предлагал.


Пробовал. Разница в одном операторе, который мне не нужен. Мне нужен хендл открытого документа, который я сам создал.

Петр пишет:

 цитата:
Вы сами дали на него ответ - FindWindowEx

В чем затык?



Это моё временное решение. Нужно добавлять к названию документа такую штуку:
cTitle := "Документ2 - MICROSOFT WORD"
cTitle2 := "Документ2 [Режим ограниченной функциональности] - MICROSOFT WORD"
А для английской версии Ворда что нужно добавлять ?

Вот и озадачился я сделать как в Excel'е - он же сразу правильно выдаёт хендл созданного окна.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1365
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 04.12.16 19:17. Заголовок: Andrey пишет: Это м..


Andrey пишет:

 цитата:
Это моё временное решение.


И опять позвольте усомниться в ваших словах

Andrey пишет:

 цитата:
Нужно добавлять к названию документа такую штуку:
cTitle := "Документ2 - MICROSOFT WORD"
cTitle2 := "Документ2 [Режим ограниченной функциональности] - MICROSOFT WORD"
А для английской версии Ворда что нужно добавлять ?



Нужно добавлять ТАКУЮ штуку
cTitle := oWord:ActiveDocument():Name + "-" + oWord:Caption
или
nIndex := 1
cTitle := oWord:Windows(nIndex):Caption + "-" + oWord:Caption

И еще раз: hbole старая версия OLE из hbwin, в ней больше ошибок, в частности не исправлена работа с коллекциями по индексу.
А значит вы не можете использовать циклы по коллекциям.

Но, по моему, это вас и не интересует.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5212
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.12.16 19:42. Заголовок: Петр пишет: Но, по ..


Петр пишет:

 цитата:
Но, по моему, это вас и не интересует.


Интересует. Понял что hbwin лучше !
А хендл окна сразу можно получить, без FindWindowEx() ?

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3511
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.12.16 09:45. Заголовок: Что-то не работает: ..



 цитата:
Что-то не работает:
nCount := oWord:Windows:Count
? nCount
? oWord:Windows(1):Caption



К элементу коллекции надо обращаться не через круглые скобки, это же не метод, а через квадратные, т.е:

oWord:Windows[1]

Свойство Caption объекта Window r/w, т.е ему можно присвоить что хочется, без головняка с получением хэндла окна:

oWord:Windows[1]:Caption := "blabla.."

дополню: с экселем заголовок окна можно также изменить стандартным способом.
вот пример из хэлпа по vba:
ActiveWorkbook.Windows(1).Caption = "Consolidated Balance Sheet"


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3512
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.12.16 09:51. Заголовок: По поводу примеров р..


По поводу примеров работы с таблицами word из fw: в том разделе это не по теме, напишу здесь
Андрей, я тебе дал пример заполнения таблицы. Если ты не хочешь использовать закладки, то надо только
заменить начальное позиционирование на 1-й элемент таблицы

вместо

oSelect:Goto(-1, ...

поставить

<table>:Cells(nR, nC):Range:Select()

и оставить последующий код без изменений

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5214
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 12:57. Заголовок: Pasha пишет: Андрей..


Pasha пишет:

 цитата:
Андрей, я тебе дал пример заполнения таблицы. Если ты не хочешь использовать закладки, то надо только
заменить начальное позиционирование на 1-й элемент таблицы



А я никак сделать его под себя не могу... Пошёл переделывать.

Pasha пишет:

 цитата:
Свойство Caption объекта Window r/w, т.е ему можно присвоить что хочется, без головняка с получением хэндла окна:


Мне нужен хенд окна, для того чтобы переместить это окно поверх всех окон.
Чтобы юзер не искал на рабочем столе созданный документ.
С Экселем получилось, с Вордом нет !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6173
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.16 13:53. Заголовок: Andrey пишет: С Экс..


Andrey пишет:

 цитата:
С Экселем получилось, с Вордом нет !


Вероятно так
Hwnd:=oWord:Windows[1]:hwnd

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5215
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 13:57. Заголовок: Pasha получилось ! З..


Pasha получилось ! Заработало....
Спасибо огромное !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5216
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 14:00. Заголовок: Dima пишет: Вероятн..


Dima пишет:

 цитата:
Вероятно так
Hwnd:=oWord:Windows[1]:hwnd



Ошибка:
Error 3277332/0 S_OK: HWND
Called from TOLEAUTO:HWND(0)
Called from MYWORD2OLE(105)


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6174
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.16 14:21. Заголовок: Andrey А так Hwnd:=..


Andrey
А так
Hwnd:=oWord:Windows:hwnd


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3514
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.12.16 14:37. Заголовок: Свойство hWnd присут..


Свойство hWnd присутствует у объекта Window, а не у коллекции Windows, что логично.
По-видимому, в ранних версиях офиса его нет, поэтому и происходит ошибка.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5217
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 15:27. Заголовок: Pasha пишет: Свойст..


Dima пишет:

 цитата:
Hwnd:=oWord:Windows:hwnd


Ошибка !

Pasha пишет:

 цитата:
Свойство hWnd присутствует у объекта Window, а не у коллекции Windows, что логично.
По-видимому, в ранних версиях офиса его нет, поэтому и происходит ошибка.



А как правильно узнать хенл окна у современных версиях офиса ?
Чтобы точно работало !

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3515
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.12.16 15:34. Заголовок: В Office 2010 свойст..


В Office 2010 свойство hWnd у объекта Window еще отсутствует.
В Office 2013, судя по доке, уже есть.
А как узнать хендл - ну так и узнать, обратиться к свойству hWnd, если версия office выше, чем 2013

Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3516
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.12.16 15:41. Заголовок: Насчет hWnd так и е..


Насчет hWnd так и есть:

Window.Hwnd Property (Word)
Returns a Long that indicates the window handle of the specified window. Read-only.

Collapse sectionVersion information
Version Added: Word 2013

т.е, обращаться к нему можно, если oWord:Version больше чем значение (определенная константа) для office 2013

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5219
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 15:43. Заголовок: Понял. Пока писал, у..


Понял. Пока писал, уже сделал.

Word 2014 выдает правильно и по ошибке не слетает...
hWnd := oWord:ActiveDocument:ActiveWindow:Hwnd

Спасибо, понял в чем моя ошибка - искал там, где нет.
У меня у юзеров еще 2003 офисы стоят...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6175
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.16 15:59. Заголовок: Вообще не много стра..


Вообще не много странно. В Excel 2003 можно поймать хендл окна Excel по Excel:Hwnd а в той
же версии Word уже нет.


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3517
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.12.16 16:06. Заголовок: Странно и то, что в ..


Странно и то, что в Excel 2003 свойство hWnd есть у объекта Application, а не у Window. Может так оказаться, что это хендл не того окна, которое нужно.
В Excel 2013 свойство hWnd добавили и у Window.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6176
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.16 16:08. Заголовок: Pasha пишет: Может ..


Pasha пишет:

 цитата:
Может так оказаться, что это хендл не того окна, которое нужно.


Пока ни кто не жаловался , и промахов не было
В основном у юзеров стоит 2003 офис.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5220
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 16:22. Заголовок: Dima пишет: В основ..


Dima пишет:

 цитата:
В основном у юзеров стоит 2003 офис.


А как делаешь ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6177
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.16 16:34. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как делаешь ?


чито ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5221
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 16:46. Заголовок: Хендл окна поймал. ..


Хендл окна поймал.
Вывожу на передний план так:
ShowWindow( hWnd, 3 ) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6
BringWindowToTop( hWnd )
MsgDebug(hWnd)
Не выводится... Фар всё равно на переднем плане...
Как правильно поместить окно Word поверх всех окон ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6178
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.16 16:49. Заголовок: Andrey Для Excel та..


Andrey
Для Excel так , норм вроде
 
Func Showexcel(ex)
local hWnd
hWnd := Ex:hWnd
ShowWindow(hWnd, 3)
BringWindowToTop(hWnd)
return nil


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5222
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 16:53. Заголовок: Dima пишет: Для Exc..


Dima пишет:

 цитата:
Для Excel так , норм вроде


Да у меня с ним тоже в порядке, а с Вордом проблема....

Делаю так:
ShowWindow( hWnd, 6 ) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6 
INKEYGUI(800)
ShowWindow( hWnd, 3 ) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6
BringWindowToTop( hWnd )
MsgDebug(hWnd)

Окно Ворда исчезает, а потом появляется. Но окно Проводника или Фара не перекрывают, почему то Ворд на заднем плане.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6179
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.16 17:05. Заголовок: Возможно не тот хенд..


Возможно не тот хендл поймал у Word

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5223
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 17:09. Заголовок: Dima пишет: Возможн..


Dima пишет:

 цитата:
Возможно не тот хендл поймал у Word


Нет, то окно.
Окно Ворда исчезает, а потом появляется.

Разобрался.Нужно ставить задержку.
Потом желающие смогут проверить у себя.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5224
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 17:37. Заголовок: Остался ещё один воп..


Остался ещё один вопрос:

Как сделать в таблице авто суммирование столбца ?
Т.е. я в конце таблицы добавляю колонку и хочу сделать в ней сумму столбца.
Хотя можно и самому в цикле посчитать, но лучше сделать как положено.

oTbl:Cell(nRowDbf,2):Range:ParagraphFormat:Alignment:= wdAlignParagraphRight
oTbl:Cell(nRowDbf,2):Range:Font:Bold = .T.
// ------------ как сделать автосумирование колонки ???
//oTbl:Cell(nRowDbf,2):Range:InsertFormula := "=Sum()"



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6180
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.16 17:42. Заголовок: SUM (ABOVE)..


SUM (ABOVE)

ЗЫ
Всегда можно спросить гугл

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5225
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 18:42. Заголовок: Dima пишет: Всегда ..


Dima пишет:

 цитата:
Всегда можно спросить гугл


Не всегда... Не получается вставит формулу.

По макросу так:
Selection.InsertFormula Formula:="=SUM(ABOVE)", NumberFormat:="# ##0,00"


А как оператором написать формулу и формат ?
oTbl:Cell(nRowDbf,2):Range:InsertFormula????? := "=Sum(ABOVE)"


Перебрал несколько вариантов. Так не работает:
     oTbl:Cell(nRowDbf,3):Range:InsertFormula:Formula := "=Sum(ABOVE)" - ошибка 
oTbl:Cell(nRowDbf,3):Range:InsertFormula := "=Sum(ABOVE)" - ошибка
oTbl:Cell(nRowDbf,3):Range:Formula := "=Sum(ABOVE)" - ошибка



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6181
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.16 18:51. Заголовок: Andrey пишет: Не по..


Andrey пишет:

 цитата:
Не получается вставит формулу.


Подсмотри как это делается в Excel , делал же наверное уже.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5226
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.12.16 18:57. Заголовок: Dima пишет: Подсмот..


Dima пишет:

 цитата:
Подсмотри как это делается в Excel , делал же наверное уже.



Вот так:
oSheet:Cells( nLine, nI ):SET( 'NumberFormat', '## ### ###0,00' ) // числовая ячейка 
и
oSheet:Cells[ nI, nRowXls + 1 ] := "=СУММ(R[-" + HB_NtoS(nRowXls + 1 - nLine) + "]C:R[-1]C)"


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1366
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 05.12.16 21:00. Заголовок: Andrey пишет: По ма..


Andrey пишет:

 цитата:
По макросу так:
Selection.InsertFormula Formula:="=SUM(ABOVE)", NumberFormat:="# ##0,00"



Selection:InsertFormula( "=SUM(ABOVE)", "# ##0,00" )


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6182
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.12.16 22:27. Заголовок: Andrey пишет: Хотя ..


Andrey пишет:

 цитата:
Хотя можно и самому в цикле посчитать, но лучше сделать как положено.


Я делаю в цикле , ведь это же отчет по реальным цифрам а иначе это будет подгонка
нужного результата.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5227
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.12.16 02:09. Заголовок: Петр пишет: Selecti..


Петр пишет:

 цитата:
Selection:InsertFormula( "=SUM(ABOVE)", "# ##0,00" )


Сделал так:
    oTbl:Cell(nRowDbf,3):Range:Select() // перейти и выделить ячейку таблицы 
Selection:InsertFormula( "=SUM(ABOVE)", "# ##0,00" )

Не проходит... Выдаёт ошибку:
Error BASE/1003 Переменная не существует: SELECTION
Called from MYWORD1OLE(148)



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5228
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.12.16 03:42. Заголовок: Уф... Сделал ... :sm..


Уф... Сделал ...
Надо так:
   oText   := oWord:Selection() 
....
// ---------- сделать автосуммирование колонки -----------
FOR nI := 3 TO 7
oTbl:Cell(nRowDbf,nI):Range:Select() // перейти и выделить ячейку таблицы
oText:InsertFormula( "=SUM(ABOVE)", "# ##0,00" )
NEXT



Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3518
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 09.12.16 09:51. Заголовок: Оставлю здесь ссылку..


Оставлю здесь ссылку на Office 2013 VBA Documentation в формате chm:

http://www.microsoft.com/en-us/download/details.aspx%3Fid%3D40326


Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5245
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.12.16 14:24. Заголовок: По просьбе желающих ..


По просьбе желающих выложил готовые примеры у Григория на сайте - http://hmgextended.com/applications.html

Преобразование DBF в DOC через объект ОЛЕ в МиниГуи / Convert DBF to DOC via the OLE object in MiniGui
Преобразование DBF в XLS через объект ОЛЕ в МиниГуи / Convert DBF to XLS via the OLE object in MiniGui




Спасибо: 1 
ПрофильЦитата Ответить
постоянный участник


Пост N: 258
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 14.12.16 15:55. Заголовок: Andrey пишет: Преоб..


Andrey пишет:

 цитата:
Преобразование DBF в DOC
Преобразование DBF в XLS



Вам бы надо было все это в TsBrows вклюючить.
И добавить преобразование DBF в PDF

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5248
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.12.16 10:55. Заголовок: ММК пишет: Вам бы н..


ММК пишет:

 цитата:
Вам бы надо было все это в TsBrows вклюючить.


Это только Григорий может....

ММК пишет:

 цитата:
И добавить преобразование DBF в PDF


Я не делал такого. Может присоединишься ?

Сейчас делаю: DBF_to_PostgreSQL

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 261
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 15.12.16 18:40. Заголовок: Andrey пишет: Я не ..


Andrey пишет:

 цитата:
Я не делал такого. Может присоединишься ?

Сейчас делаю: DBF_to_PostgreSQL



Понимаете Андрей , когда Вам нужна помощь при разработке какой-то задачи - понимаю. Но зачем заниматься Минигуи если все это есть в FW ? Какой смысл? :)


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5250
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.12.16 22:11. Заголовок: ММК пишет: Но зачем..


ММК пишет:

 цитата:
Но зачем заниматься Минигуи если все это есть в FW ? Какой смысл?


Не нашел я что-то вариант DBF в DOC в FW... DBF в PostgreSQL тоже нет в FW... Или есть ?
На МиниГуи это уже работает, правда привыкнуть надо к PostgreSQL.

FW платный продукт, покупать нужно, осваивать тоже нужно...
А МиниГуи бесплатен, правда время много потратил на освоение, но чтобы уходить на другую платформу тоже придётся тратить время. Да и подсказки Григория, и других форумчан тоже много дают.
На МиниГуи классные примеры получаются... Да и с терминалки мигрировать в МиниГуи возможно, чем и занимаюсь.

FW тоже хороший продукт, смотрел в своё время, но подкупил МиниГуи с русскоязычной поддержкой.


Спасибо: 0 
ПрофильЦитата Ответить
Администратор




Пост N: 3519
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.12.16 08:43. Заголовок: Как-то здесь все в к..


Как-то здесь все в кучу намешано.
Есть харбор с библиотекой hbwin, которая позволяет выгружать документы в word/excel посредством механизма ole.
Пример использования этого механизма можно сделать с использованием интерфейса хоть fw/hmg/hwgui, хоть консольного. Консольный пример даже будет предпочтительнее, так как в нем не будет ничего лишнего.
Надо выдать на экран какое-то окно с кнопочкой, вот и вся функция fw или hmg Окно с кнопочкой можно сделать красивым, но эта красота никак не связана с выгрузкой таблицы в word.
Вот если для класса tsbrowse hmg добавить метод выгрузки в word аналогично методу ExcelOle, тогда это станет частью hmg, и можно будет говорить и примере его использования в hmg.
Тоже самое касается и конвертации в pdf или postgres.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5252
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.12.16 14:58. Заголовок: Спасибо Pasha - всё ..


Спасибо Pasha - всё по полочкам поставил !
Осталось только сделать - Консольный пример или
для класса tsbrowse hmg добавить метод выгрузки в word аналогично методу ExcelOle.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6206
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.12.16 15:05. Заголовок: Andrey пишет: Остал..


Andrey пишет:

 цитата:
Осталось только сделать - Консольный пример


А я сразу и писал про консоль ))

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5257
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.12.16 16:41. Заголовок: Всем привет ! Для ц..


Всем привет !

Для центровки строки в таблице по горизонтали использую так:
          oTbl:Cell(nI,nJ):Range:ParagraphFormat:Alignment:= wdAlignParagraphCenter 


А как сделать центровку строки по вертикали ?

Пробовал так - oTbl:Cell(nI,nJ):Range:VerticalAlignment := wdCellAlignVerticalCenter - не работает....


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5258
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.12.16 17:15. Заголовок: Нашёл как: ..


Нашёл как:
// ветикальная ценровка строки в ячейке
oTbl:Cell(nI,nJ):Cells:VerticalAlignment := wdCellAlignVerticalCenter


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5259
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.12.16 13:05. Заголовок: Печатаю в Ворде 2010..


Печатаю в Ворде 2010 таблицу из 400 записей...
Простая таблица 5 граф: ФИО, номер документа, дата документа, ну и ещё 2 номера.

Сдыхает Ворд, и закрывается программа, таблицу не доделывает...
Пишет что слишком много ошибок при проверки правописания...
Как программно отключить проверку правописания в Ворде ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6216
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.12.16 13:07. Заголовок: wdApp.Options.CheckS..


wdApp.Options.CheckSpellingAsYouType = False

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 266
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 19.12.16 14:20. Заголовок: Уже достаточно давн..


Уже достаточно давно пользуюсь вот таким классом - https://cloud.mail.ru/public/8Xve/UTv9YCg65/RTFTEKST.7z
Здесь исходники и примеры.
Написан для FW поэтому подойдет для минигуи. Удобно и просто формировать отчеты, на выходя файл RTF что позволяет не заморачиваться версией офиса.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5261
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.12.16 14:28. Заголовок: Dima пишет: wdApp.O..


Dima пишет:

 цитата:
wdApp.Options.CheckSpellingAsYouType = False



А как для Харбора это сделать ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6217
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.12.16 14:39. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как для Харбора это сделать ?


А поиграться...
oWord:Options:CheckSpellingAsYouType:= .F.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 267
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 19.12.16 15:51. Заголовок: Andrey пишет: Остал..


Andrey пишет:

 цитата:
Осталось только сделать - Консольный пример или
для класса tsbrowse hmg добавить метод выгрузки в word аналогично методу ExcelOle.


Совершенно правильно. Сделать консольный пример , потом добавить все это в TsBrows, потом туда же добавить конвертацию в PDF и другие
возможности, потом сделать так ,что бы бровс нормально работал с базами SQL и т.д. и т.п.
... И таких вопросов много не только на уровне бровса.
Другими словами нужно сделать инструмент с помощью которого любой мог бы писать пр-мы ,а не делать из крестовидной отвертки плоскую ,что бы
прикрутить костылик .
Andrey пишет:

 цитата:
Не нашел я что-то вариант DBF в DOC в FW... DBF в PostgreSQL тоже нет в FW...


Думаю Андрей Вы искали, но Вас кто-то отвлек . В бровсе есть возможность формировать таблицы различной конфигурации, формирования филтров ( все встроенно ,
придумывать не надо ) ....
А дальше -
Все эти возможности уже включены в бровс
METHOD ToWord( bProgress, aCols, nTableFormat, nOrientation )
METHOD ToHTML( cHtmlFile, [lShow := .t.] ) --> Saved cHtmlFile with full path
METHOD Report( cTitle, lPreview, lModal, bSetUp, aGroupBy, cPDF ) // PDF
METHOD ToExcel( bProgress, nGroupBy, aCols, lShow )
Включая картинки , с группами, можно выгружать в ексел ..

А можно формировать бровс не из DBF, а прямо из екселя.

Или в бровсе работать с текстом.

Можно с SQL. Это ADORDD
13) What SQL engines can I use ?

ADS
ACCESS
ANYWHERE
DBASE
POSTGRE
FIREBIRD
FOXPRO
INFORMIX
MSSQL
MYSQL
ORACLE
POSTGRE
SQLITE
But others can be easily added to be supported.

Кстати в бровсе можно работать и с таким синтаксисом - cSql := ;
"SELECT COUNT(*) AS EMPLOYEES, SUM(SALARY) AS TOTSALARY FROM CUSTOMER"

Все. Надо останавливаться :)) Тут столько возможностей ,что хоть отдельную тему создавай.
Даже самому стало интересно :)
Andrey пишет:

 цитата:
FW платный продукт, покупать нужно, осваивать тоже нужно...


Да, осваивать нужно :(( Действительно FW платный ,но с учетом потраченного времени и сил на решение давно решенных вопросов МиниГуи обходится дороже.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 17
Зарегистрирован: 07.02.13
ссылка на сообщение  Отправлено: 19.12.16 16:12. Заголовок: ММК пишет: Все. Над..


ММК пишет:

 цитата:
Все. Надо останавливаться :)) Тут столько возможностей ,что хоть отдельную тему создавай.
Даже самому стало интересно :)
Andrey пишет:

цитата:
FW платный продукт, покупать нужно, осваивать тоже нужно...


Да, осваивать нужно :(( Действительно FW платный ,но с учетом потраченного времени и сил на решение давно решенных вопросов МиниГуи обходится дороже.





Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5262
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.12.16 19:44. Заголовок: ММК пишет: Да, осва..


ММК пишет:

 цитата:
Да, осваивать нужно :(( Действительно FW платный ,но с учетом потраченного времени и сил на решение давно решенных вопросов МиниГуи обходится дороже.



Не знаю сейчас как FW, но пока МиниГуи менять не согласен.
Ещё свою большую систему не переделал на него !
2 менюшки осталось переделать... Надеюсь в след.году доделаю....

ММК пишет:

 цитата:
METHOD ToExcel( bProgress, nGroupBy, aCols, lShow )
Включая картинки , с группами, можно выгружать в ексел ..


Пробовал использовать - что-то не сложилось. Нужно тоже самостоятельно где-то хранить высоту шапки, строк и т.д. для Экселя.
Покрутил и бросил... Да и не всегда нужно строить бровс, а потом выводить через Эксель. Проще сделать самому.
Сделал из-за этого свой пример DBF_to_XLS

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5267
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.12.16 23:06. Заголовок: // ветикал..


// ветикальная ценровка строки в ячейке
oTbl:Cell(nI,nJ):Cells:VerticalAlignment := wdCellAlignVerticalCenter
Вот такая конструкция в Ворде 2003 работает, а в 2010 нет.
Как можно модифицировать этот код для 2010 и выше ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5268
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.12.16 14:14. Заголовок: Я так понял, что офи..


Я так понял, что офисы работают по разному ?
У заказчика одно, а у себя ставишь как у заказчика офис - ошибка такая же не получается...


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 638
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 20.12.16 14:49. Заголовок: ММК Да, осваивать ну..


ММК

 цитата:
Да, осваивать нужно :(( Действительно FW платный


К сожалению отсутствие Визуального дизайнера сводит все эти плюсы к нулю (для меня).

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5269
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.12.16 15:08. Заголовок: Vlad04 пишет: К сож..


Vlad04 пишет:

 цитата:
К сожалению отсутствие Визуального дизайнера сводит все эти плюсы к нулю (для меня).


Я тоже с этим согласен.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 268
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 20.12.16 19:19. Заголовок: Andrey пишет: Я тож..


Andrey пишет:

 цитата:
Я тоже с этим согласен.


И Вы тоже... Один раз Вы уже разыгривали меня визуальным дизайнером для Харбора :)
Vlad04 пишет:

 цитата:
К сожалению отсутствие Визуального дизайнера сводит все эти плюсы к нулю (для меня).


Ну, насчет нуля это перебор :) Тем более ,что альтернативы нет.
Если не ошибаюсь мы с Вами уже как-то обсуждали этот вопрос :)) Что на сегодня -
1.можно использовать Visual Studio IDE .Все настойки для FW сделаны
2.можно использовать UEStudio и здесь все настройки есть
3.http://forums.fivetechsupport.com/viewtopic.php?f=3&t=29991&start=240 это скорее IDE , но они его постоянно дорабатывают, что-то может и будет
4.Разные Visual (включая поставку ) Они периодически всплывают и так же тихо исчезают. Но , тем не менее обновляются. Видимо с ними надо просто работать
5.Ну и на уровне "форм" и "экранов" работает наверное любой ресурсредактор. Сам использовал два. В каких-то ситуациях удобно...





Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5270
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.12.16 20:23. Заголовок: ММК Спасибо за полны..


ММК Спасибо за полный обзор по FW !
Жалко, что такого нет для МиниГуи...
Про ResHack для МиниГу у Григория спрашивал уже, не помню что он ответил...


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6220
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 20.12.16 22:30. Заголовок: Andrey пишет: ММК ..


Andrey пишет:

 цитата:

ММК Спасибо за полный обзор по FW !


Это далеко не полный обзор.
И да , лично мне такой дизайнер не нужен , спокойно можно обойтись и без него.
Михаил такого же мнения , во всяком случае Михаил из прошлого ...лет так 5 назад или более.

Но на вкус и цвет как говорится.........

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 335
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 21.12.16 09:11. Заголовок: Поддержу слова Димы ..


Поддержу слова Димы . Дизайнер форм вещь хорошая , но ручками делать (лично мне) удобнее . Львиная доля времени при написании программ уходит не на написание форм , а на логику , работы с базами и т д .... Сколько той формы : поля ввода , таблицы , надписи .... : для каждого контрола всего 1-2 строки кода ....;

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 269
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 21.12.16 10:13. Заголовок: Dima пишет: Михаил ..


Dima пишет:

 цитата:
Михаил такого же мнения , во всяком случае Михаил из прошлого ...лет так 5 назад или более.



Все по прежнему , Дима :)) Действительно, в этом нет особой необходимости тем более ,что в FW очень много примеров.
Совсем в сложном случае можно нарисовать экран в Ресхакере.
Может только настройка цветов, гамы, картинок..... Не знаю, как это правильно назвать :)) Одним словом раскрасить этот экран. Вот для этого есть пр-мы Ukoenig'а
( поиск по этому слову на форуме ) Он их регулярно выкладывает . Удобный инструмент :)) Поищите по форуму, ссылок много будет. Посмотрите просто картинки, это интересно !
http://forums.fivetechsupport.com/viewtopic.php?f=3&t=31388&hilit=ukoenig
http://forums.fivetechsupport.com/viewtopic.php?f=3&t=31622&hilit=ukoenig


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6221
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.12.16 10:54. Заголовок: ММК пишет: Может то..


ММК пишет:

 цитата:
Может только настройка цветов, гамы, картинок..... Не знаю, как это правильно назвать


Я делаю по простому.
Снимаю скрин своей формы , гружу его в Paint и там "издеваюсь" над цветовой гаммой :)
Опа , подобрал цвет , списал RGB , занес в код проги.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 270
Зарегистрирован: 29.05.10
ссылка на сообщение  Отправлено: 21.12.16 18:06. Заголовок: Dima пишет: Опа , п..


Dima пишет:

 цитата:
Опа , подобрал цвет , списал RGB , занес в код проги.



Можно и так. Но там более конкретно. Т.е. можно , к примеру , сделать градиент и добавить картинку, сместить и т.д.
Т.е. сделать все по месту. Надписи...
Хотя, повторюсь, для меня это не принципиально :))
Кстати там екзешники поэтому их можно использовать и для МиниГуи

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 639
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 22.12.16 20:25. Заголовок: Видел такой Дизайн..


Видел такой Дизайнер форм
 цитата:
visualfw.exe

лет 5 назад. Но толком неработающий.
Может , сейчас улучшили или совсем забросили.

 цитата:
Действительно, в этом нет особой необходимости


А в этом вы ММК ,Softlog86 неправы.
Платформа, претендующая на популярность, обязательно должна иметь
Визуальный дизайнер или какой-то механизм создания форм.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1287
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 22.12.16 20:33. Заголовок: Dima пишет: Я делаю..


Dima пишет:

 цитата:
Я делаю по простому.
Снимаю скрин своей формы , гружу его в Paint и там "издеваюсь" над цветовой гаммой :)
Опа , подобрал цвет , списал RGB , занес в код проги.


Вот http://www.nattyware.com/pixie.php
еще проще)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 103 , стр: 1 2 3 4 5 6 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 370
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет