On-line: Andrey, MIKHAIL, Haz, гостей 1. Всего: 4 [подробнее..]
АвторСообщение
Dima
администратор




Пост N: 2372
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 21.05.12 16:52. Заголовок: Снова EXCEL (продолжение)


Ранее с Excel из Harbour ни когда не работал.
Поставили тут задачу.
У некоторых поставщиков есть определенные формы заказов.
Набраны они в Excel. Сейчас народ руками заполняет эти формы
и шлет по электронке поставщикам.
Задача сводится к тому что бы в этих формах находить
нужные коды товара и в нужной ячейке проставлять заказ.
Может ткнет кто носом с чего начать что бы не напороться на грабли.
Спасибо
Сами формы тут http://zalil.ru/33279066

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]


Oskar_AAA



Пост N: 102
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 14:32. Заголовок: Dima вылетает по оши..


Dima
вылетает по ошибке Warning W8065 Call to function 'HB_ISNUM' with no prototype in function HB_FUN_SHOWWINDOW

вот фрагмент головного модуля...

Procedure MAIN(Shifr) //INGAZ
# Include 'Achoice.Ch'
# Include 'Inkey.Ch'
# Include 'Directry.Ch'
# Include 'Setcurs.Ch'
# Include 'Dbstruct.Ch'
# Include 'Command.Ch'
# Include 'Dbedit.Ch'
# Include 'Excel.Ch'
# Include 'Hbgtinfo.Ch'
# Include 'Dbedit.Ch'

Public Ctitle
Ctitle:='INGAZ'
C_Title=Ctitle+'.EXE'
//
SetConsoleTitle(cTitle)
hWnd := FindWindow( cTitle )
DeleteCloseButton( hWnd )

#PRAGMA BEGINDUMP
# include "Hbapi.h"
# include "Windows.h"
# include "Hbapiitm.h"
HB_FUNC( SETCONSOLETITLE )
{
hb_retl( SetConsoleTitle( hb_parc( 1 ) ) ) ;
}
HB_FUNC( FINDWINDOW )
{
hb_retnl( (LONG)FindWindow( NULL, hb_parc( 1 ) ) ) ;
}
HB_FUNC( DELETECLOSEBUTTON )
{
DeleteMenu(GetSystemMenu( (HWND)hb_parnl( 1 ), FALSE), SC_CLOSE,
MF_BYCOMMAND ) ;
DrawMenuBar( (HWND)hb_parnl( 1 ) ) ;
}
HB_FUNC_STATIC( SETFILEAPIS ) // OEM
{
SetFileApisToOEM();
}

HB_FUNC (GETFOREGROUNDWINDOW)
{
HWND hWnd = GetForegroundWindow();
hb_retnl ((LONG) hWnd);
}

HB_FUNC( BRINGWINDOWTOTOP )
{
BringWindowToTop( ( HWND ) hb_parnl( 1 ) );
}

HB_FUNC( SHOWWINDOW )
{
ShowWindow( ( HWND ) hb_parnl( 1 ), HB_ISNUM( 2 ) ? hb_parni( 2 ) : SW_SHOW );
}

HB_FUNC( SETFOCUS )
{
hb_retnl( ( LONG_PTR ) SetFocus( ( HWND ) hb_parnl( 1 ) ) );
}

HB_FUNC( SETFOREGROUNDWINDOW )
{
SetForegroundWindow( ( HWND ) hb_parnl( 1 ) );
}

#pragma ENDDUMP
//
REQUEST HB_CODEPAGE_RU866
REQUEST DBFCDX,DBFFPT
HB_SetCodePage( "RU866" )
RDDSetDefault('DBFCDX')
SetMode(25,80)




Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6238
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.01.17 15:13. Заголовок: Oskar_AAA пишет: вы..


Oskar_AAA пишет:

 цитата:
вылетает по ошибке Warning W8065 Call to function 'HB_ISNUM'


Нужно смотреть какой аналог этой функции в Xharbour , я "сижу" на Harbour

Спасибо: 0 
Профиль
Pasha
Администратор




Пост N: 3521
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 05.01.17 15:36. Заголовок: ISNUM( 2 ) регистр ..


ISNUM( 2 )

регистр существенен.

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 103
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 18:37. Заголовок: Коллеги, функция SE..


Коллеги, функция SETCONSOLETITLE (удаление возможности закрыть программу по "крестику") работает не зависимо от регистра..
в HbApi.h нашел
#define ISNUM( n ) ( hb_param( n, HB_IT_NUMERIC ) != NULL )

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6239
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.01.17 18:53. Заголовок: Oskar_AAA пишет: Ко..


Oskar_AAA пишет:

 цитата:
Коллеги, функция SETCONSOLETITLE (удаление возможности закрыть программу по "крестику") работает не зависимо от регистра..


Не вижу связи крестика и функции что рисует заголовок у окна. Или я вопрос не понял ?

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 104
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 18:57. Заголовок: Pasha пишет: ISNUM( ..


Pasha пишет:
ISNUM( 2 )

регистр существенен.




Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 105
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 21:09. Заголовок: Добрый вечер, с Ваше..


Добрый вечер, с Вашей помощью вот что получилось:
В головной программе, после вывода меню на экран
Handl_Win=GetForeGroundWindow()
?Handl_Win
5178634
далее обработка БД и создание Xls файлов (43 шт)

создание из макета сводного отчета Xls с 42 листами

oExcel_S:=ToleAuto():New("Excel.Application")
oExcel_S:Workbooks:Open(Day_Excel)
oExcel_S:Set("DisplayAlerts",.F.)
oExcel_S:Visible :=.T. // ¢¨§ã «¨§ æ¨ï ᢮¤-®£® ®âç¥â 
oBook_S :=oExcel_S:ActiveWorkBook
oAs_S :=oExcel_S:ActiveSheet()
oSheet_S:=oBook_S :Sheets(1):Select()
oSheet_S:=oBook_S :Sheets(1)
oAs_S :Cells(1,15):Select()
oSheet_S:Cells(1,15):Value=Cdata // ¤ â  ®âç¥â 
oSheet_S:Cells(1,18):Value=Bom(Cdata) // ¤ â  - ç «  ¬¥áïæ 
oAs_S :Cells(1,1):Select()
//
ShowWindow(Handl_Win)
BringWindowToTop(Handl_Win)
SetFocus(Handl_Win)
?Handl_Win
5178634
wait

перехода (активации) к программе из Excel не происходит...

что сделано не так???





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




Пост N: 5284
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.01.17 21:52. Заголовок: Oskar_AAA пишет: пе..


Oskar_AAA пишет:

 цитата:
перехода (активации) к программе из Excel не происходит...

что сделано не так???



Найди хендл окна Excel и потом переключись на него !
Хенд у окна Excel получить просто - смотреть пример ExcelOle.prg
.... выложил готовые примеры у Григория на сайте - http://hmgextended.com/applications.html

    // окно таблицы Excel на передний план 
hWnd := oExcel:hWnd
ShowWindow( hWnd, 6 ) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6
INKEYGUI(100)
ShowWindow( hWnd, 3 ) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6
BringWindowToTop( hWnd )


Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 106
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 21:58. Заголовок: Andrey окно Excel и ..


Andrey
окно Excel и так является активным, мне надо его сделать видимым но не активным, т.е пусть будет на экране в фоновом режиме...
или если Хенд Excel просто получить, надо сделать окно таблицы на второй план
как?
Спасибо.
Посмотрю ссылки Григория

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6240
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 05.01.17 22:31. Заголовок: Oskar_AAA пишет: Sh..


Oskar_AAA пишет:

 цитата:
ShowWindow(Handl_Win)


Тут имеет значение 2 параметр если не ошибаюсь.
Андрей уже показал.
У Вас его нет совсем.

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 107
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 22:57. Заголовок: поставил из из его м..


поставил из из его модуля
hWnd := oExcel_S:hWnd
ShowWindow( hWnd, 6 ) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6

окно Excel стало маленьким, но осталось на переднем плане, как его сделать на ВТОРОМ плане?


Спасибо: 1 
Профиль
fil



Пост N: 490
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 05.01.17 23:13. Заголовок: Поменять Z-последова..


Поменять Z-последовательность окна можно через SetWindowPos, а проще ShowWindow
другого-какого окна вот Excel и уйдет в фон. Можно свое окно посадить на передний план

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 108
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 05.01.17 23:29. Заголовок: FIL Как свое окно СН..


FIL
Как свое окно СНОВА посадить на Передний план (вычислил Хедлы по своей программе и Excel). но :
в головном модуле:
Askar_Win=GetForeGroundWindow()


hWnd := oExcel_S:hWnd
*ShowWindow(hWnd,6) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6
ShowWindow(hWnd,3) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6
//
ShowWindow(Askar_Win,3) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6
BringWindowToTop(Askar_Win)

на передний план сове окно не возвращается..

Спасибо: 0 
Профиль
fil



Пост N: 491
Зарегистрирован: 17.06.10
ссылка на сообщение  Отправлено: 05.01.17 23:42. Заголовок: SetWindowPos(hWnd, ..


SetWindowPos(hWnd, -1, 0,0,0,0,3)



Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6241
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.01.17 10:59. Заголовок: Oskar_AAA А если та..


Oskar_AAA
А если так
 
if isiconic(Askar_Win)
SetForeGroundWindow(Askar_Win)
endif
ShowWindow(Askar_Win, 9) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6 RESTORE=9
BringWindowToTop(Askar_Win)



Задача под каким терминалом собрана ?
Под GTWVT у меня такая связка работает.

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 109
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 06.01.17 11:02. Заголовок: Dima попробуем, рахм..


Dima
попробуем, рахмат...
программа xHarbour - консольный 25 х 80,


Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 110
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 06.01.17 12:58. Заголовок: Dima где взять функ..


Dima
где взять функцию Isconic()?
if isiconic(Askar_Win) ///

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




Пост N: 5285
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.01.17 13:41. Заголовок: Oskar_AAA пишет: гд..


Oskar_AAA пишет:

 цитата:
где взять функцию Isconic()?



Смотри в этой ветке Пост N: 5282
HB_FUNC( ISICONIC )

Спасибо: 0 
Профиль
Oskar_AAA



Пост N: 111
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 06.01.17 13:50. Заголовок: ok..


ok

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 6242
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 06.01.17 16:25. Заголовок: Oskar_AAA Наваял пр..


Oskar_AAA
Наваял простой пример на Harbour , терминал STD.
Запускаем пример и после куда то переключаемся. Через 10 секунд , окно примера появляется ,
но окно фокус ввода не получает , даже если и указать Setfocus(Askar_Win).
Но если собрать под терминалом GTWVT , добавив REQUEST HB_GT_WVT_DEFAULT
то все работает , как я выше и писал.

PS
Может Паша или Пётр чего подскажут

Скрытый текст



Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 126
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет