Форум » 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.

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

Andrey: После кучи перестановок и шаманства выяснил, блин как фокусник - легким движением на клавиатуре убираем HANDCURSOR и всё начинается компилироваться... Вспомнил, такая же беда второй раз происходит, и в другом модуле тоже пришлось убирать HANDCURSOR.... Вывод .ppo который компилируется: _DefineOwnerButton ( "BUTTON_Ok",, 155, 245, "Ввод", { || nRet := 0, cUserName := cLogin, cPassword := cPswd, domethod("Form_LoginPass", "Release") }, 90, 32,,,,, .F., .F.,, .F., .F., .F.,,, nFBSize, .T., .F., .F., .F., .F., .F., .F., { 0 , 128 , 0 }, aButtColor, .T., .T., .F. ) _DefineOwnerButton ( "BUTTON_Cancel",, 255, 245, "Отмена", { || nRet := -1, domethod("Form_LoginPass", "Release") }, 90, 32,,,,, .F., .F.,, .F., .F., .F.,,, nFBSize, .T., .F., .F., .F., .F., .F., .F., { 128 , 0 , 0 }, aButtColor, .T., .T., .F. ) Вывод .ppo который НЕ компилируется: @ 245,155 BUTTONEX BUTTON_Ok WIDTH 90 HEIGHT 32 CAPTION "Ввод" FONTCOLOR aButtColor BACKCOLOR { 0 , 128 , 0 } SIZE nFBSize BOLD NOHOTLIGHT NOXPSTYLE HANDCURSOR ACTION { || nRet := 0, cUserName := cLogin, cPassword := cPswd, DoMethod ( _HMG_SYSDATA[254] , "Release" ) } @ 245,255 BUTTONEX BUTTON_Cancel WIDTH 90 HEIGHT 32 CAPTION "Отмена" FONTCOLOR aButtColor BACKCOLOR { 128 , 0 , 0 } SIZE nFBSize BOLD NOHOTLIGHT NOXPSTYLE HANDCURSOR ACTION { || nRet := -1, DoMethod ( _HMG_SYSDATA[254] , "Release" ) } Ну что за приколы ?

SergKis: Andrey пишет:убираем HANDCURSOR и всё начинается компилироваться... _HMG_aControlInputMask [k] := handcursor // см. h_button.prg line 634 попробуй такой вариант: @ 245,155 BUTTONEX BUTTON_Ok ... без HANDCURSOR добавь nInd := GetControlIndex('BUTTON_Ok', ThisWindow.Name) _HMG_aControlInputMask [ nIndex ] := .T.

Andrey: Работает !!! Спасибо !!! Только вот так: _HMG_aControlInputMask [ nInd ] := .T.


SergKis: Andrey пишет:Вывод .ppo который НЕ компилируется: @ 245,155 BUTTONEX BUTTON_Ok WIDTH 90 HEIGHT 32 CAPTION "Ввод" FONTCOLOR aButtColor BACKCOLOR { 0 , 128 , 0 } SIZE nFBSize BOLD NOHOTLIGHT NOXPSTYLE HANDCURSOR ACTION { || nRet := 0, cUserName := cLogin, cPassword := cPswd, DoMethod ( _HMG_SYSDATA[254] , "Release" ) } MiniGui.chm [pre2] @ <nRow>,<nCol> BUTTONEX <ButtonName> [ OF | PARENT <ParentWindowName> ] [ CAPTION <cCaption>] [ WIDTH <nWidth> HEIGHT <nHeight> ] [ PICTURE <cBitmapName>] | [ ICON <cIconName>] [ ACTION | ONCLICK | ON CLICK <ActionProcedureName> | <bBlock> [ FONT <cFontName> ] [ SIZE <nFontSize> ] [ BOLD ] [ ITALIC ] [ UNDERLINE ] [ STRIKEOUT ] [ FONTCOLOR <aFontcolorRGBArray> ] [ BACKCOLOR <aBackcolorRGBArray> ] [ VERTICAL ] [ LEFTTEXT ] [ UPPERTEXT ] [ ADJUST ] [ TOOLTIP <cTooltip>] [ NOHOTLIGHT ] [ FLAT ] [ NOTRANSPARENT ] [ NOXPSTYLE ] [ ON GOTFOCUS | ON MOUSEHOVER <OnGotfocusProcedure | bBlock> ] [ ON LOSTFOCUS | ON MOUSELEAVE <OnLostProcedure | bBlock> ] [ HANDCURSOR ] [ NOTABSTOP ] [ HELPID <nHelpId>] [ INVISIBLE ] [ DEFAULT [/pre2] может тут собака порылась ?

Andrey: SergKis пишет: может тут собака порылась ? Попробую. Но больше всего убило, что маленький пример (6 файлов) нормально собирается, а большой проект (58 файлов) - НЕТ !

Andrey: Сделал НОВОЕ меню ввода пароля. И опять проблема... После закрытия окна ввода пароля главная форма прячется на задний план всех программ, переключаешься на неё, а задача не откликается (кнопочки не реагируют, крестик закрытия не работает) т.е. висит задача, приходиться снимать через Диспетчер задач. В чем проблема и как её решить ?

Andrey: Если первый раз неправильно введу пароль, то опять возвращаюсь в это окно ввода и тогда программа не вешается... Что-то связано с инициализацией окна ? Как можно вернуть фокус ввода на главное окно задачи ? SetForegroundWindow( M->hIdWindows ) - так делал, но это не помогает....

Haz: Andrey пишет: Как можно вернуть фокус ввода на главное окно задачи так ShowWindow(hWnd, 3) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6 BringWindowToTop(hWnd) Но думаю проблема не в фокусе. Скорее всего чего то намудрил при проверке пароля, и обработчик ошибки это не ловит

Andrey: Haz пишет: Скорее всего чего то намудрил при проверке пароля, До этого использовал окно пароля из \MiniGUI\SAMPLES\Advanced\GetPassword прекрасно всё работало. Заменил GetPassword() на свою форму: DEFINE WINDOW Form_LoginPass AT 0,0 WIDTH 370 HEIGHT 320 + IIF( IsXPThemeActive(), 10, 0 ) ; TITLE cTitle ; ICON cIco ; MODAL ; BACKCOLOR aBackColor ; NOSIZE ; ON INIT { || Form_LoginPass.Text_Login.SetFocus } ну и там 2 GETBOX и 2 кнопки. И перестало работать с первого раза - висит главное окно задачи ! Если первый раз неправильно ввести пароль, но происходит повторное обращение к окну - функция заново отрабатывает. и ТОЛЬКО после этого главное окно задачи работает нормально ! Шайтан - однако... После проверки пароля я даже пробовал переключать на картинку на форме, там висит функция обработки на ней... CheckPassword() // проверка пароля BringWindowToTop( M->hIdWindows ) Form_Main.Image_1.Setfocus Безрезультатно... Висит главная форма и всё тут.... Полная

Andrey: Блин, ну что за невезуха... Полдня убил на это... Поменял окно на CHILD и всё заработало.... Безо всяких переключений...

Haz: Andrey пишет: Поменял окно на CHILD и всё заработало У меня подобная вещь работает вне зависимости CHILD | MODAL ... похоже ты нашел "заплатку" на проблему, может аукнуться позже

Andrey: Haz пишет: У меня подобная вещь работает вне зависимости CHILD | MODAL ... Это как ?

Haz: Andrey пишет: Это как Да все просто , при старте программы главная форма прячется и управление получает окно запроса пароля ( не важно CHILD или MODAL работает с любым вариантом ). При вводе правильного пароля окно запроса закрывается и показывается главная форма. При неправильном пароле предлагается угадать еще разик, при отказе от ввода пароля программа завершается. Ничего не виснет .

Andrey: Haz пишет: при старте программы главная форма прячется и управление получает окно запроса пароля Понял. Спасибо.

Andrey: Вот опять непонятка: FOR nI := 1 TO 8 nRow := aRow[nI] + nHButt + 5 nCol := aCol[nI] + 10 //nWButt @ nRow, nCol CHECKBOX &cObjLog ; CAPTION 'Включить ХХХХ' ; VALUE aLogic[nI] ; WIDTH nWButt-20 HEIGHT 20 ; FONTCOLOR RED ; SIZE 11 TRANSPARENT ; ON CHANGE { || MsgDebug(nI), aLogic[nI] := GetProperty("Form_PC", cObjLog, "Value" ) } // строка 230 NEXT При редактировании выдаёт ошибку: Error BASE/1133 Переполнение массива: доступ к массиву Called from (b)MYPAGE_MAINMENU(230) Значение nI == 9 Как исправить ? Т.е. я понимаю что в цикле присваивать VALUE aLogic[nI] не получается ?

Haz: Andrey пишет: ON CHANGE { || MsgDebug(nI), aLogic[nI] := GetProperty("Form_PC", cObjLog, "Value" ) } было в твоих вопросах , с другим контролом правда ...но было. Andrey пишет: Как исправить ON CHANGE &("{ || MsgDebug(" + ntoc(nI) +"), aLogic[" + ntoc(nI) + "] := GetProperty('Form_PC', cObjLog, 'Value' ) }" )

Andrey: Haz пишет: было в твоих вопросах , с другим контролом правда ...но было. Да, точно, было. Памяти точно уже нет. Спасибо за подсказку !

Andrey: Haz пишет: ON CHANGE &("{ || MsgDebug(" + ntoc(nI) +"), aLogic[" + ntoc(nI) + "] := GetProperty('Form_PC', cObjLog, 'Value' ) }" ) Не отрабатывает вообще ON CHANGE ! Сделал так: cObjLog := "Check_" + HB_NtoS(nI) bBlock := "{ || MsgDebug(" + ntoc(nI) +"), aStatLogic[" + ntoc(nI) + "] := GetProperty('Form_PC', '" + cObjLog + "', 'Value' ) }" @ nRow, nCol CHECKBOX &cObjLog ; CAPTION 'Запуск внешней программы' ; VALUE aStatLogic[nI] ; WIDTH nWButt-20 HEIGHT 20 ; FONTCOLOR RED ; SIZE 11 TRANSPARENT ; ON CHANGE &( bBlock ) Как еще можно сделать чтобы заработало ?

SergKis: Andrey попробуй : FOR nI := 1 TO 8 nRow := aRow[nI] + nHButt + 5 nCol := aCol[nI] + 10 //nWButt @ nRow, nCol CHECKBOX &cObjLog ; CAPTION 'Включить ХХХХ' ; VALUE aLogic[nI] ; WIDTH nWButt-20 HEIGHT 20 ; FONTCOLOR RED ; SIZE 11 TRANSPARENT ; ON CHANGE ( MsgDebug(_SetGetUserData(_HMG_THISCONTROLNAME, _HMG_THISFORMNAME), This.Value) ) // строка 230 _SetGetUserData(cObjLog, _HMG_THISFORMNAME, nI) // запомнило в Cargo NEXT

SergKis: Andrey а для запомининия в aLogic:[pre2] ON CHANGE {|nNr| nNr := _SetGetUserData(_HMG_THISCONTROLNAME, _HMG_THISFORMNAME), ; aLogic[ nNr ] := This.Value, ; MsgDebug(nNr, aLogic[ nNr]) } [/pre2]



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