Форум » GUI » Примеры из Минигуи -ошибки, вопросы..... » Ответить

Примеры из Минигуи -ошибки, вопросы.....

Andrey: Всем привет. Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах) Предложение Григорию: Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ? Пример: \MiniGUI\SAMPLES\Advanced\DisplayMode - не работает под ХР и далее.... Пример: \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.

Ответов - 301, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All

Andrey: Спасибо БОЛЬШОЕ. Сделал, работает. Теперь другой вопрос. Как вернуть текущему окну (в котором работает юзер) фокус ввода из моей задачи ? А то, после запуска моей задачи из трея, приходится мышкой тыкать в то окно, с которым работал.

Haz: на вскидку два варианта 1) получить указатель окна пользователя ( ShrinkIt из примеров минигуи в помощь ) и читать типа этого http://www.wasm.ru/forum/viewtopic.php?pid=123607 2) Вообще не забирать фокус у окна пользователя а писать статистику в лог ( базу ). Из программы пользователя анализировать этот лог ( базу ) и выводить сообщения из нее.

Andrey: Haz пишет: на вскидку два варианта Спасибо БОЛЬШОЕ ! Второй вариант лучше. Меньше "париться" !


Andrey: Если я создаю объект: DEFINE WINDOW Win_Zaiv ; MODAL ; NOSHOW ; ..... END WINDOW Win_Zaiv.Center Win_Zaiv.Activate То почему то окно все равно показывается на экран. Что не так делаю ?

Haz: вроде все так, без живого примера не понять перед Win_Zaiv.Center добавь Win_Zaiv.Hide и забудь

Andrey: Haz пишет: перед Win_Zaiv.Center добавь Win_Zaiv.Hide и забудь Не получается ! Окно все равно выводиться. Почему ? Я же ставлю при создание окна NOSHOW ! А окно появляется: Вот полный код: //////////////////////////////////////////////////////////// // создание БД измененных записей FUNCTION CHANGE_ZAIVKI(cDbfZaivIzm,cPathDbf,dZaivka,cTypeWin) LOCAL cTitle := "Подготовка измененых записей" LOCAL cDbfZip := "" DEFAULT cTypeWin TO "" DEFINE WINDOW Win_Zaiv ; ROW 0 COL 0 ; WIDTH 480 ; HEIGHT 240 ; TITLE cTitle ; ICON "ICON2SITE" ; MODAL ; NOSHOW ; NOSIZE NOSYSMENU ; FONT 'Tahoma' SIZE 10 ; ON INIT { || cDbfZip := InitChangeZaivki(cDbfZaivIzm,cPathDbf,dZaivka,cTypeWin) } @ 80, 0 LABEL Label_Up VALUE "" ; WIDTH 480 HEIGHT 260 ; BACKCOLOR COLOR_BUTTONE_LIGHT_RED @ 10,80 ANIMATEBOX Avi_1 ; WIDTH 32 HEIGHT 40 ; FILE 'AVICHECK' AUTOPLAY TRANSPARENT NOBORDER @ 120,20 PROGRESSBAR Progress_1 ; RANGE 0,100 ; VALUE 0; WIDTH 430 HEIGHT 34 @ 100,10 LABEL Label_1 ; WIDTH 450 HEIGHT 16 ; VALUE '0%' ; BOLD ; BACKCOLOR COLOR_BUTTONE_LIGHT_RED ; CENTERALIGN @ 155,10 LABEL Label_2 ; WIDTH 450 HEIGHT 46 ; VALUE "создаю БД" ; BOLD ; BACKCOLOR COLOR_BUTTONE_LIGHT_RED ; CENTERALIGN END WINDOW Win_Zaiv.Hide Win_Zaiv.Center Win_Zaiv.Activate RETURN cDbfZip //////////////////////////////////////////////////////////// // Инициализация формы FUNCTION InitChangeZaivki(cDbfZaivIzm,cPathDbf,dZaivka,cTypeWin) LOCAL nJ, nI, aFieldArray, lRet, cFileDbf, bErrHandler, aDbf, nAllRecno LOCAL aRecno := {}, cDateZ, cTimeZ, cNumZ, cID, cMsg MsgDebug(cTypeWin) У Григория есть пример \MiniGUI\SAMPLES\BASIC\SPLASHDEMO\demo.prg Там нормально отрабатывает NOSHOW: Function Main DEFINE WINDOW Form_Main ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE 'Main Window' ; MAIN ; NOSHOW END WINDOW DEFINE WINDOW Form_Splash ; PICTURE 'DEMO' ; SPLASH ; DELAY 4 ; ON RELEASE Form_Main.Show END WINDOW CENTER WINDOW Form_Main ACTIVATE WINDOW ALL Return Nil По доке окно MODAL тоже может быть NOSHOW... Или глюк какой то ?

Haz: видимо косячек в минигуи с модальным окном. как вариант в ON INIT засунуть ThisWindow.hide , прячет но мелькает всеравно

SergKis: Haz пишет:видимо косячек в минигуи с модальным окном. и не только в модальном (было в версии 2.07) всегда show

Haz: Андрей , держи таблетку и играй в прятки с модальными окнами в h_windows.prg в строке 1295 вместо If _HMG_aFormType == "M" _ShowWindow ( _HMG_aFormNames , .F. ) нужно прописать условие IF ... и пересобратьбиблиотеки минигуи If _HMG_aFormType == "M" if _HMG_aFormNoShow == .F. _ShowWindow ( _HMG_aFormNames , .F. ) ELSE _hIDEWindow ( _HMG_aFormNames , .F. ) end

Панченко: Андрей, убери Win_Zaiv.Activate (ну и Hide перед ним тоже не нужен)

Andrey: Панченко пишет: Андрей, убери Win_Zaiv.Activate (ну и Hide перед ним тоже не нужен) Конечно. Ставил я это из-за того: Haz пишет: видимо косячек в минигуи с модальным окном.

Панченко: Andrey пишет: Haz пишет:  цитата: видимо косячек в минигуи с модальным окном. Андрей, описываешь модальное окно с NOSHOW. ACTIVATE не надо !!! (это активация окна, которая выводит его на экран). Окно нормально создается, но на экран не выводится.

Andrey: Панченко пишет: Окно нормально создается, но на экран не выводится. Да, создается. Только при повторном обращении к этой функции, теперь программа слетает ! С ошибкой: Error: Window: Win_Zaiv is already defined.</p><BR> Called from _DEFINEMODALWINDOW(440) Called from CHANGE_ZAIVKI(311) А с Win_Zaiv.Activate нормально работает. Т.е. если я делаю модальное окно: DEFINE WINDOW Win_Zaiv ; MODAL ; NOSHOW ; ON INIT { || cDbfZip := InitChange(cDbfZaivIzm,cPathDbf,dZaivka,cTypeWin) } ..... END WINDOW Win_Zaiv.Center RETURN NIL //////////////////////////////////////////////////////////// // Инициализация формы FUNCTION InitChange(cDbfZaivIzm,cPathDbf,dZaivka,cTypeWin) ..... IF LEN(cTypeWin) == 0 Win_Zaiv.Show ELSE Win_Zaiv.Hide // "NOWIN" ENDIF ............ То программа с параметром "NOWIN" - работает один раз. При повторном обращении падает с ошибкой указанной выше... Где и что править ? Или придется делать ДВЕ отдельные функции: с окном и без окна ? Но это же неправильно !

SergKis: Andrey для проверки наличия есть: _IsWindowDefined('Form_1') - для окон _IsControlDefined('Label_1', 'Form_1') - для контролов

Andrey: SergKis пишет: для проверки наличия есть: _IsWindowDefined('Form_1') - для окон _IsControlDefined('Label_1', 'Form_1') - для контролов СПАСИБО БОЛЬШОЕ ! Буду пользоваться. Я не пойму только одного у себя, если модальное окно с NOSHOW и БЕЗ Win_Zaiv.Activate у меня окно показывается. А у Григория в примере \MiniGUI\SAMPLES\BASIC\SPLASHDEMO\demo.prg стоит ACTIVATE WINDOW ALL то у него все работает. Панченко пишет: Андрей, убери Win_Zaiv.Activate (ну и Hide перед ним тоже не нужен) Тогда неправ Панченко ?

SergKis: Andrey пишет:А у Григория в примере \MiniGUI\SAMPLES\BASIC\SPLASHDEMO\demo.prg стоит ACTIVATE WINDOW ALL то у него все работает У него другая схема - сначала MAIN, потом другое окно. Начинать приложение сразу с MODAL у меня тоже были проблемы с управлением в окне. Сделал как у Григория, сначала MAIN в небольших координатах, сверху в OnInit MODAL и hide MAIN, но фокус эта конструкция будет забирать на себя при запуске из Tray - возможно запускать надо раньше, при старте своей проги и пусть сидит в фоне, или управлять заголовками (переключением фокуса между окнами по HWND)

SergKis: Andrey при вызове (click-ом) из Tray фокус на Tray меню, hide в новом запуске вернет фокус на последний фокус где был, т.е. на окно задачи не вернет.

Andrey: SergKis пишет: Начинать приложение сразу с MODAL у меня тоже были проблемы с управлением в окне. Так у меня тоже приложение начинается не с MODAL, а с MAIN. У меня в трее сидит приложение. Через 5 минут идет (открытие/проверка), выводит окно MODAL -бегунка подготовки БД. Вот это окно, я хочу убрать это окно, не показывать вообще (NOSHOW). А это окно все равно показывается на экране. У меня 2-3 места в программе, где я не хочу показывать такие MODAL-окна. Вот и получается, что есть тогда 3 варианта: 1) Исправить этот баг в библиотеке МиниГуи 2) написать аналогичные процедуры у себя в программе - без использования окон 3) переключением фокуса между окнами по HWND Пока хочу попробовать 3-вариант. SergKis пишет: или управлять заголовками (переключением фокуса между окнами по HWND) А как вы это делаете ? Подскажите пожалуйста.

SergKis: Andrey Я это делаю AutiIt3, мы это уже обсуждали, в hb через FindWindow в ваших темах где-то было

SergKis: Andrey пишет:А это окно все равно показывается на экране. NOSHOW я не использую, когда надо делаю DoMethod(cWnd, 'Hide', .T.) или .F., работает как надо, претензий нет



полная версия страницы