Автор | Сообщение |
Dima
|
| |
Пост N: 2372
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.05.12 16:52. Заголовок: Снова EXCEL (продолжение)
Ранее с Excel из Harbour ни когда не работал. Поставили тут задачу. У некоторых поставщиков есть определенные формы заказов. Набраны они в Excel. Сейчас народ руками заполняет эти формы и шлет по электронке поставщикам. Задача сводится к тому что бы в этих формах находить нужные коды товара и в нужной ячейке проставлять заказ. Может ткнет кто носом с чего начать что бы не напороться на грабли. Спасибо Сами формы тут http://zalil.ru/33279066
|
|
|
Ответов - 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)
|
|
|
Dima
|
| |
Пост N: 6238
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.01.17 15:13. Заголовок: Oskar_AAA пишет: вы..
Oskar_AAA пишет: цитата: | вылетает по ошибке Warning W8065 Call to function 'HB_ISNUM' |
| Нужно смотреть какой аналог этой функции в Xharbour , я "сижу" на Harbour
|
|
|
Pasha
|
| Администратор
|
Пост N: 3521
Зарегистрирован: 23.05.05
|
|
Отправлено: 05.01.17 15:36. Заголовок: ISNUM( 2 ) регистр ..
ISNUM( 2 ) регистр существенен.
|
|
|
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 )
|
|
|
Dima
|
| |
Пост N: 6239
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.01.17 18:53. Заголовок: Oskar_AAA пишет: Ко..
Oskar_AAA пишет: цитата: | Коллеги, функция SETCONSOLETITLE (удаление возможности закрыть программу по "крестику") работает не зависимо от регистра.. |
| Не вижу связи крестика и функции что рисует заголовок у окна. Или я вопрос не понял ?
|
|
|
Oskar_AAA
|
| |
Пост N: 104
Зарегистрирован: 09.09.11
|
|
Отправлено: 05.01.17 18:57. Заголовок: Pasha пишет: ISNUM( ..
Pasha пишет: ISNUM( 2 ) регистр существенен.
|
|
|
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 не происходит... что сделано не так???
|
|
|
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 )
|
|
|
Oskar_AAA
|
| |
Пост N: 106
Зарегистрирован: 09.09.11
|
|
Отправлено: 05.01.17 21:58. Заголовок: Andrey окно Excel и ..
Andrey окно Excel и так является активным, мне надо его сделать видимым но не активным, т.е пусть будет на экране в фоновом режиме... или если Хенд Excel просто получить, надо сделать окно таблицы на второй план как? Спасибо. Посмотрю ссылки Григория
|
|
|
Dima
|
| |
Пост N: 6240
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.01.17 22:31. Заголовок: Oskar_AAA пишет: Sh..
Oskar_AAA пишет: Тут имеет значение 2 параметр если не ошибаюсь. Андрей уже показал. У Вас его нет совсем.
|
|
|
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 стало маленьким, но осталось на переднем плане, как его сделать на ВТОРОМ плане?
|
|
|
|
fil
|
| |
Пост N: 490
Зарегистрирован: 17.06.10
|
|
Отправлено: 05.01.17 23:13. Заголовок: Поменять Z-последова..
Поменять Z-последовательность окна можно через SetWindowPos, а проще ShowWindow другого-какого окна вот Excel и уйдет в фон. Можно свое окно посадить на передний план
|
|
|
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) на передний план сове окно не возвращается..
|
|
|
fil
|
| |
Пост N: 491
Зарегистрирован: 17.06.10
|
|
Отправлено: 05.01.17 23:42. Заголовок: SetWindowPos(hWnd, ..
SetWindowPos(hWnd, -1, 0,0,0,0,3)
|
|
|
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 у меня такая связка работает.
|
|
|
Oskar_AAA
|
| |
Пост N: 109
Зарегистрирован: 09.09.11
|
|
Отправлено: 06.01.17 11:02. Заголовок: Dima попробуем, рахм..
Dima попробуем, рахмат... программа xHarbour - консольный 25 х 80,
|
|
|
Oskar_AAA
|
| |
Пост N: 110
Зарегистрирован: 09.09.11
|
|
Отправлено: 06.01.17 12:58. Заголовок: Dima где взять функ..
Dima где взять функцию Isconic()? if isiconic(Askar_Win) ///
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5285
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.01.17 13:41. Заголовок: Oskar_AAA пишет: гд..
Oskar_AAA пишет: цитата: | где взять функцию Isconic()? |
| Смотри в этой ветке Пост N: 5282 HB_FUNC( ISICONIC )
|
|
|
Oskar_AAA
|
| |
Пост N: 111
Зарегистрирован: 09.09.11
|
|
Отправлено: 06.01.17 13:50. Заголовок: ok..
ok
|
|
|
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 Может Паша или Пётр чего подскажут Скрытый текст ? "Test" Askar_Win:=GETFOREGROUNDWINDOW() Inkey(10) 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) wait ************** #pragma BEGINDUMP #include <windows.h> #include <hbapi.h> #include "hbapiitm.h" HB_FUNC (GETFOREGROUNDWINDOW) { HWND hWnd = GetForegroundWindow(); hb_retnl ((LONG) hWnd); } HB_FUNC( BRINGWINDOWTOTOP ) { BringWindowToTop( ( HWND ) hb_parnl( 1 ) ); } HB_FUNC( ISICONIC ) { hb_retl( IsIconic( ( 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
|
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|