Автор | Сообщение |
Andrey
|
| постоянный участник
|
Пост N: 1929
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.11.11 21:36. Заголовок: Примеры из Минигуи -ошибки, вопросы..... (продолжение)
Всем привет. Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах) Предложение Григорию: Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ? Пример: \MiniGUI\SAMPLES\Advanced\Tsb_filter - вылетает на ХР -------------------------------------------------------------------------------- Harbour MiniGUI Errorlog File Harbour MiniGUI Extended Edition 2.0.1 - 2011.09.21 -------------------------------------------------------------------------------- Date: 11/15/2011 Time: 22:13:24 Error BASE/1124 Argument error: LEFT Called from LEFT(0) Called from SCANSOFT(195) Called from MAIN(84) Пример: \MiniGUI\SAMPLES\BASIC\MsgEdit - не собирается... Z:\MiniGUI\SAMPLES\BASIC\MsgEdit>call ..\..\..\batch\compile.bat demo /L shell32 Harbour 3.1.0dev (Rev. 17042) Copyright (c) 1999-2011, http://harbour-project.org/ Compiling 'demo.prg'... Lines 20133, Functions/Procedures 30 Generating C source output to 'demo.c'... Done. Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland demo.c: Error E2141 demo.prg 993: Declaration syntax error *** 1 errors in Compile *** C compile error.
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
SergKis
|
| постоянный участник
|
Пост N: 2599
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.06.19 21:01. Заголовок: PS nTyp это, к приме..
PS nTyp это, к примеру 0 - main 1 - standatt 2 - child 3 - modal
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6314
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.06.19 13:34. Заголовок: SergKis пишет: Если..
SergKis пишет: цитата: | Если надо усложнить добавь в #xcommand переменную WTYPE <nTyp> и в ф-ю параметр nTyp и обрабатывай как надо |
| Понял, СПАСИБО !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6315
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.06.19 16:36. Заголовок: Собираю тестовые про..
Собираю тестовые проги в Far'e на МиниГуи. После того как ехе-ник запустится, каждый раз приходится мышкой тыкать на запущенную прогу, т.к. Far всегда поверх запущенной программы. Можно ли как то сделать, чтобы после запуска программа МиниГуи выходила на передний план ? У меня тестовые проги имеют код такой (специфика тестирования): DEFINE WINDOW Form_Main ; AT 20 , 20 ; WIDTH 500 HEIGHT 480 ; TITLE "Test-MiniGui" ; MAIN ; ..... ON INIT {|| Form_Main.Minimize, TestPrint("Печать",,,cDebugPath) , Form_Main.Release } .... Т.е. далее запускается TestPrint("Печать",,,cDebugPath) и это окно всегда под Far'ом. Я знаю что можно сделать в окне TestPrint() следующую конструкцию: DEFINE WINDOW wTestPrint ; .... MODAL .... END WINDOW CENTER WINDOW wTestPrint // переносим сюда, чтобы не дергалось окно ACTIVATE WINDOW wTestPrint ON INIT {|| This.Minimize, This.Restore, ; This.Label_0.SetFocus } RETURN NIL Но потом после переноса в основную программу, это окно wTestPrint появляется снизу - это не совсем красиво для основной программы. Можно как то сделать "передёргивание окна wTestPrint" из основной программы ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6316
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.06.19 19:55. Заголовок: Сделал так: ..
Сделал так: Скрытый текст
....... DEFINE TIMER Timer_1 ; INTERVAL 500 ; ACTION Bring_window_to_front() END WINDOW ACTIVATE WINDOW Form_Main RETURN ////////////////////////////////////////////////////////////////////////////////// FUNCTION Bring_window_to_front() LOCAL cForm := "wTestPrint" IF IsWindowActive( &cForm ) Domethod( cForm, "Minimize" ) INKEYGUI(100) Domethod( cForm, "Restore" ) Form_Main.Timer_1.Enabled := .F. // ОТКЛЮЧИТЬ таймер M->oBrwP:Setfocus() ENDIF RETURN NIL
| В Win8.1 отрабатывает нормально, а в WinXP окошко сворачивается и разворачивается - остановить нельзя... Бесконечный цикл, можно только снять программу через менеджер программ. Почему остановка таймера не происходит ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2603
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.06.19 20:37. Заголовок: Andrey Добавь в TIM..
Andrey Добавь в TIMER параметр ONCE (вып. один раз) см. i_timer.ch А topmost пробовал ? DEFINE WINDOW wTestPrint ; ... ON INIT This.Topmost := .F. ; ... ACTIVATE WINDOW wTestPrint ON INIT {|| This.Minimize, This.Restore, This.Topmost := .T., ; This.Label_0.SetFocus }
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6317
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.06.19 21:27. Заголовок: Что то в доке нет ON..
Что то в доке нет ONCE ! Как писать правильно ? DEFINE TIMER Timer_1 ; INTERVAL 500 ; ACTION Bring_window_to_front() ONCE Так ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2604
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.06.19 21:33. Заголовок: Andrey i_timer.ch#c..
Andrey i_timer.ch #command DEFINE TIMER <name> ; [ <dummy1: OF, PARENT> <parent> ] ; [ INTERVAL <interval> ] ; [ ACTION <action> ] [ <lOnce: ONCE> ] ; => ; _DefineTimer ( <"name">, <"parent">, <interval>, <{action}>, <.lOnce.> )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6318
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.06.19 21:40. Заголовок: Да так сработало ! Н..
Да так сработало ! На XP и 8-ке работает теперь одинаково ! СПАСИБО БОЛЬШОЕ ! SergKis пишет: Пробовал так: DEFINE WINDOW wTestPrint ; ... ON INIT {|| OnInitPrintF5(), This.Topmost := .F., oBrwP:Setfocus() } ... ACTIVATE WINDOW wTestPrint ON INIT {|| This.Topmost := .T. } Окно на переднем плане, т.е. поверх Far'a, но при прокрутке колесиком мышки - ездит по папкам Far'a. Лучший вариант для отладки всё таки таймер !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2605
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.06.19 23:24. Заголовок: Andrey Попробуй так..
Andrey Попробуй так (с SET OOP ON) DEFINE WINDOW wTestPrint ; ... ON INIT ( This.Topmost := .F., _wPost(1), DoEvents() ) ... (This.Object):Event(1, {|| OnInitPrintF5(), oBrwP:Setfocus() }) END WINDOW ACTIVATE WINDOW wTestPrint ON INIT {|| This.Topmost := .T. }
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2606
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.06.19 07:39. Заголовок: PS И Form_Main попра..
PS И Form_Main поправь DEFINE WINDOW Form_Main ; AT 20 , 20 ; WIDTH 500 HEIGHT 480 ; TITLE "Test-MiniGui" ; MAIN ; ..... ON INIT ( This.Minimize, _wPost(1), DoEvents() ) ... (This.Object):Event( 1, {|| TestPrint("Печать",,,cDebugPath) , This.Release } ) ....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6319
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.06.19 14:59. Заголовок: Сделал ! Всё равно к..
Сделал ! Всё равно колесико мышки и клавиши продолжают ездить по Far'у. Хотя окно программы Минигуи становится поверх всех окон. Нужно кликнуть мышкой по форме, тогда на ней можно нажимать клавиши и мышку. Вообще то я с таким поведением давно сталкиваюсь, но всё некогда было разобраться с таким поведением. И ещё ошибка появилась, при выходе из окна wTestPrint, у меня на кнопку выход назначено: ACTION { || wTestPrint.Release() } Выдает теперь ошибку: Error MGERROR/0 Control: Of Form_Main Not defined. Program terminated. --------------------------------- Stack Trace --------------------------------- Called from MSGMINIGUIERROR(99) in module: h_error.prg Called from DOMETHOD(5205) in module: h_controlmisc.prg Called from (b)MAIN(349) in module: f5main.prg Called from DO_WINDOWEVENTPROCEDURE(82) in module: h_objmisc.prg Called from TWNDDATA:DOEVENT(667) in module: h_objects.prg Called from DO_ONWNDLAUNCH(234) in module: h_objmisc.prg Called from (b)INIT(123) in module: h_init.prg Called from EVENTS(1215) in module: h_events.prg Called from DOEVENTS(0) Called from (b)MAIN(323) in module: f5main.prg Called from _PROCESSINITPROCEDURE(1672) in module: h_windows.prg Called from _ACTIVATEWINDOW(1487) in module: h_windows.prg Called from MAIN(354) in module: f5main.prg Строка 349 - (This.Object):Event( 1, {|| TestPrint("Печать",,,cDebugPath) , This.Release } ) Строка 354 - ACTIVATE WINDOW Form_Main This.Release - не срабатывает ....
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6320
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.06.19 18:39. Заголовок: А есть такая команда..
А есть такая команда, которая бы эмулировала нажатие мышки на окне, чтобы фокус окну переходил ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2619
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.07.19 11:00. Заголовок: Возможно, будет инте..
Возможно, будет интересно. Пример по окнам с DEF WINDOW ... и WTYPE nTypWindow : 0 - main 1 - child 2 - modal 3 - standart и галочка для :Action := .T.\.F. окна Если галочки нет, окно не активно и сообщения не работают, убрать окно по [X] крестику нельзя, кнопки не работают. Если галочка есть, окно активно и все кнопки работают. Пример тут https://TransFiles.ru/s4x9y
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6322
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.07.19 15:52. Заголовок: SergKis пишет: Прим..
SergKis пишет: цитата: | Пример по окнам с DEF WINDOW ... и WTYPE nTypWindow : |
| Пример интересный ! Можно применять в ситуациях, когда юзеру нужно запретить выходить из окна пока все GETBOX не заполнит или пока что-то не посчитается.... Применений много. Спасибо !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6323
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.19 14:15. Заголовок: Всем привет ! Появил..
Всем привет ! Появилась ошибка у меня после изменения кода. Правда не всегда появляется. Error BASE/1004 Message not found: NIL:EVENT --------------------------------- Stack Trace --------------------------------- Called from __ERRRT_SBASE(0) Called from NIL:ERROR(0) Called from (b)HBOBJECT(0) Called from NIL:MSGNOTFOUND(0) Called from NIL:EVENT(0) Called from FORM_F5PRINT(191) in module: Source\form_f5print.prg Called from FORMPRINTF5(106) in module: Source\form_f5print.prg Код программы: DEFINE WINDOW Form_F5 ; ..... MODAL ; ..... ON INIT ( This.Topmost := .F., _wPost(1), DoEvents() ) (This.Object):Event(1, {|| OnInitPrintF5(),; oBrwP:Setfocus(), nStaticViewRecno := 1 }) // строка 191 Почему и что нужно править ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2622
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.07.19 15:22. Заголовок: Andrey пишет Появила..
Andrey пишет цитата: | Появилась ошибка у меня после изменения кода |
| NIL:EVENT(0) - нет объекта окна. Он создается в DEFINE WINDOW ... SET OOP ON стоит, не отключен ? #define _HMG_OUTLOG LOCAL oWnd ... DEFINE WINDOW Form_F5 ; ... oWnd := This.Object ? This.Name, This.Handle, oWnd, _HMG_lOOPEnabled oWnd:Event(1, {|| OnInitPrintF5(), ; oBrwP:Setfocus(), nStaticViewRecno := 1 }) выделенным цветом это опечатка ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6324
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.19 18:20. Заголовок: SergKis пишет: выде..
SergKis пишет: цитата: | выделенным цветом это опечатка ? |
| Да, опечатка. SergKis пишет: цитата: | SET OOP ON стоит, не отключен ? |
| Перепроверю.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6327
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.19 20:49. Заголовок: В основной программе..
В основной программе не стоит у меня SET OOP ON . А везде в других стоит. Пропустил наверное. Буду проверять заново. СПАСИБО БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6331
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.07.19 18:01. Заголовок: Всем привет. Непонят..
Всем привет. Непонятка возникла по окнам. Делаю форму: DEFINE WINDOW Form_Calc ; ...... WINDOWTYPE STANDARD ; с неё вызываются допустим 3 окна: cFormName := "WinMemo_" + HB_NtoS( _GetId() ) DEFINE WINDOW &cFormName ; ...... WINDOWTYPE STANDARD ; После выхожу с формы Form_Calc и прога падает с ошибкой: Error MGERROR/0 Window: Form_Calc is not defined. Program terminated. --------------------------------- Stack Trace --------------------------------- Called from MSGMINIGUIERROR(100) in module: h_error.prg Called from GETPROPERTY(4387) in module: h_controlmisc.prg Called from (b)PROVDB_3HMG(2458) in module: form_calc1.prg Called from _DOCONTROLEVENTPROCEDURE(1865) in module: h_windows.prg Called from EVENTS(1828) in module: h_events.prg Called from DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1499) in module: h_windows.prg Called from MSGEDIT(245) in module: Util_MsgEdit.prg Called from REPORTTXTNOTEPAD(49) in module: ReportTxt.prg Called from REPORTTXTONE(19) in module: ReportTxt.prg Called from (b)PROVDB_2HMG(1422) in module: form_calc1.prg Called from _DOCONTROLEVENTPROCEDURE(1865) in module: h_windows.prg Called from EVENTS(1828) in module: h_events.prg Called from DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1499) in module: h_windows.prg Called from SHOW_CALC2(238) in module: form_calc.prg Что не так делаю ? Наверное нужно закрывать эти 3 открытые формы ? А как их закрыть, если не знаю эти названия форм ? Или эти окна могут оставаться на экране, даже если закрыта форма Form_Calc ? P.S. Эти 3 формы вызываю по кнопке, типа: bAction := { || SetProperty(ThisWindow.Name, This.Name, "Enabled", .F.),; ReportTxtOne( cFileError, .T. ) ,; SetProperty(ThisWindow.Name, This.Name, "Enabled", .T.) }
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2636
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.07.19 08:29. Заголовок: Andrey Покрути прим..
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|