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

SergKis: PS Кнопка "Refresh" - это инф. об окне и его реальный тип

SergKis: Andrey пишет bAction := { || SetProperty(ThisWindow.Name, This.Name, "Enabled", .F.),; ReportTxtOne( cFileError, .T. ) ,; SetProperty(ThisWindow.Name, This.Name, "Enabled", .T.) } Выделенная строка может приводить к ошибке, если в ReportTxtOne будут окна, среда This может быть другая. Уже говорили на эту тему. Надо сохранять среду. К примеру _ThisInfo() из примера или [pre2] bAction := { |cw,cn| cw := ThisWindow.Name, cn := This.Name, ; SetProperty(cw, cn, "Enabled", .F.),; ReportTxtOne( cFileError, .T. ) ,; SetProperty(cw, cn, "Enabled", .T.) } [/pre2]

Andrey: SergKis пишет: Выделенная строка может приводить к ошибке, если в ReportTxtOne будут окна, среда This может быть другая. Скорее всего не будет, там простое окно. Наверное как то туда нужно засунуть проверку на [pre2]If _IsWindowActive( cw ) SetProperty(cw, cn, "Enabled", .T.) Endif[/pre2] Как это в блок кода написать ? Так как форма закрывается, а по кнопке у всех 3 окон остается действие - SetProperty(cw, cn, "Enabled", .T.) Может я и не прав...


SergKis: Andrey пишетСкорее всего не будет, там простое окно. Если с простого окна переключить focus на окно standart выполнить кнопку (блок кода) на нем, вернуться фокусом не простое, то что в This - надо посмотреть. Так как форма закрывается, а по кнопке у всех 3 окон остается действие - SetProperty(cw, cn, "Enabled", .T.) В каждом блоке будут свои local переменные cw, cn со своими значениями. Как это в блок кода написать ? iif( _IsWindowActive(cw), Setproperty(...), Nil )

Andrey: Спасибо БОЛЬШОЕ за помощь ! Вот так теперь не вылетает: [pre2] bAction := {|cw,cn| cw := ThisWindow.Name, cn := This.Name ,; SetProperty(cw,cn, "Enabled", .F.) ,; ReportTxtOne( cFileError, .T. ) ,; iif( _IsWindowActive(cw), Setproperty(cw,cn, "Enabled", .T.), Nil ) }[/pre2] Т.е. после закрытия окна Form_Calc все доп. окна WINDOWTYPE STANDARD остаются на экране. Чего и добивался, значит проверка помогла.

Andrey: Всем привет ! Увидел новую команду: SET DIALOGBOX CENTER OF PARENT Для чего она ? Просветите пожалуйста.

gfilatov2002: Andrey пишет: Для чего она ? - New: SET DIALOGBOX POSITION: Sets the position of the dialog boxes (GetColor, GetFile, GetFolder, GetFont, MessageBoxTimeout, MsgXXX, PutFile, SELECT PRINTER, etc.) Added the following commands: - SET DIALOGBOX [ POSITION ] ROW <nRow>|<@VarCodeBlockRow>|<NIL> ; COL <nCol>|<@VarCodeBlockCol>|<NIL> - SET DIALOGBOX [ POSITION ] CENTER OF PARENT - SET DIALOGBOX [ POSITION ] CENTER OF <hWnd> - SET DIALOGBOX [ POSITION ] CENTER OF DESKTOP - SET DIALOGBOX [ POSITION ] DISABLE

SergKis: gfilatov2002 Пример Tsb_ReportAge с карточкой https://TransFiles.ru/of7u3 Проявилась проблемка, если активировать карточку (press Enter), то без изменения данных в GetBox - все ok. Фокус стоит на <Down> и нажатие Enter или Space перемещают курсор в тсб, фокус на той же кнопке. Если измнить что то в GetBox, сделать <Save>, данные сохранятся, фокус встает на кнопку <Down> и нажатие Enter или Space перемещают курсор в тсб, но фокус улетает куда то. Нажатие мышкой на эту же кнопку ситуацию не меняет. Тсб перемешает курсор, фокус с кнопки улетает. На кл. F3 повешена попытка узнать где фокус ? GetFocus() в лог выдает 0, т.е. в фокусе нет контрола hmg. Следующие команды кл. F3 фокус на кнопку восстанавливают[pre2] ON KEY F3 ACTION ( _LogFile(.T., 'GetFocus =', GetFocus()), ; SetFocus(ThisWindow.Handle), ; SetFocus(This.Btn_01.Handle) ) Использование вместо BUTTONEX обычных BUTTON, ситуацию не меняют. STATIC FUNC AgeCard( oWnd, oBrw, oCnl ) LOCAL nRet LOCAL bInit := {|| bAgeCard(oWnd, oBrw, oCnl) } LOCAL aClr := NIL // { GRAY , GRAY, GREEN, RED } ... [/pre2] В этом заковыка, может, кто сталкивался и есть решение.

gfilatov2002: SergKis пишет: может, кто сталкивался и есть решение Да, есть такая проблема с фокусировкой при взаимодействии TBrowse и GetBox Но готового решения у меня нет Хотя вроде все работает, если нажимать на кнопки мышкой, а не использовать клавиатуру... SergKis пишет: Пример Tsb_ReportAge с карточкой Пример очень понравился Планируете ли продолжать работу над ним (сохранение изменений также в DBF-файл, а не только в массив)?

SergKis: gfilatov2002 пишет Хотя вроде все работает, если нажимать на кнопки мышкой, а не использовать клавиатуру... Так клиенты хотят клавой рулить, а тут визуально окно в фокусе, а TAB, Shift+TAB отключены и пока манипуляциями разными не удалось получить нажатие F3 автоматом для установки фокуса. Планируете ли продолжать работу над ним (сохранение изменений также в DBF-файл, а не только в массив)? Да, уже подключил в массив RecNo, потихоньку двигаю вперед

gfilatov2002: SergKis пишет: Да, уже подключил в массив RecNo Отлично Да, у меня после небольших изменений карточка выглядит так

SergKis: gfilatov2002 Сохранение изменений в DBF-файл сделал, но без Ваших изменений. Тут https://TransFiles.ru/qj664

gfilatov2002: SergKis пишет: Сохранение изменений в DBF-файл сделал Спасибо

Andrey: Всем привет ! У меня в тестовом примере стоит: SET DIALOGBOX CENTER OF PARENT Вывожу HMG_Alert() - а он по центру экрана. Разве он не должен быть по центру приложения ?

gfilatov2002: Andrey пишет: SET DIALOGBOX CENTER OF PARENT Вывожу HMG_Alert() - а он по центру экрана. Эта команда предназначена для функции MsgInfo() и т.п. Для функции HMG_Alert() используй другую команду: SET CENTERWINDOW RELATIVE PARENT

SergKis: gfilatov2002 Поправьте пример, будут клавиши управления на карточке повторять кнопки[pre2] STATIC FUNC AgeCard( oWnd, oBrw, oCnl ) ... LOCAL aButt := {"&Down","&Up" ,"&Save"," &Cancel "} ... STATIC FUNC bAgeCard( oWnd, oBrw, oCnl ) ... ON KEY ESCAPE ACTION Age_CardSave( oBrw, .F. ) ON KEY CONTROL+D ACTION iif( This.Btn_01.Enabled, Age_CardSkip( oBrw, .T. ), ) ON KEY CONTROL+U ACTION iif( This.Btn_02.Enabled, Age_CardSkip( oBrw, .F. ), ) ON KEY CONTROL+S ACTION iif( This.Btn_03.Enabled, Age_CardSave( oBrw, .T. ), ) ON KEY CONTROL+C ACTION Age_CardSave( oBrw, .F. ) RETURN NIL ... STATIC FUNC Age_CardSkip( oBrw, lDown ) ... This.Btn_03.Enabled := .F. ThisWindow.Cargo := .F. ThisWindow.Closable := .T. ... [/pre2]

gfilatov2002: SergKis пишет: будут клавиши управления на карточке повторять кнопки Добавил эти изменения в пример Благодарю за помощь

Andrey: Всем привет ! Можно ли сделать, когда программа сваливается по ошибке, выполнить еще доп.действие ? Просто при расчётах вывожу нужные мне данные в лог-файл, хотелось бы чтобы после вылета программы этот лог-файл поднялся по команде [pre2] ShellExecute(, "open", "notepad.exe", M->SetTemp + MyLog,, 1 )[/pre2] Как это сделать ? На моём компе база считается без ошибок, а у юзера одного вылетает. Одна база у меня и у юзера, а поведение разное.

Andrey: Andrey пишет: Как это сделать ? Придумал. Нужно запустить маленькую внешнюю программу через c 2 кнопками "Просмотр журнала" и "Выход" ShellExecute(, "open", "MyLogView.exe", M->SetTemp + MyLog,, 1 ) Запомнить его хендл. Если расчёт прошёл без ошибок, то убить эту прогу через хендл. Если нет, то можно смотреть лог-ошибки при расчётах.

SergKis: Andrey пишет Нужно запустить маленькую внешнюю программу BEGIN SEQUENCE WITH {|o| break(o)} RECOVER END SEQUENCE Маловато будет ?



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