Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).

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

gfilatov2002: i3t4j6 пишет: вывод ошибки на экран - обыкновенный текст на белом фоне Понял Тогда только вариант с собственным обработчиком

Haz: i3t4j6 пишет: Program Error -вывод ошибки на экран - обыкновенный текст на белом фоне, а не желтое на красном и на весь экран ! у меня вообще валится без всяких окон, ни красных ни белых , хорошо хоть лог пишет [pre2] Time from start: 0 days 0 hours 0 mins 3 secs<BR> <span class="error">Error MGERROR/0 Control: Btn_01 Of oDlg Not defined. Program terminated.</span> </p> <details><summary> --------------------------------- Stack Trace --------------------------------- <br/></summary><span class="stacktrace"> Called from MSGMINIGUIERROR(0) <BR> Called from VERIFYCONTROLDEFINED(0) <BR> Called from SETPROPERTY(0) <BR> Called from FILLDLG(0) <BR> Called from HMG_ALERT(0) <BR> Called from _ALERT(0) <BR> Called from ALERTSTOP(0) <BR> Called from SHOWERROR(0) <BR> Called from DEFERROR(0) <BR> Called from (b)ERRORSYS(0) <BR> Called from K_BROWSE(35) in module: K_Browse.prg <BR> Called from OPENPRJ(194) in module: Module.prg <BR> Called from (b)MAIN(290) in module: Main.prg <BR> Called from DO_WINDOWEVENTPROCEDURE(0) <BR> Called from TWNDDATA:DOEVENT(0) <BR> Called from DO_ONWNDLAUNCH(0) <BR> Called from (b)INIT(0) <BR> Called from EVENTS(0) <BR> Called from DOMESSAGELOOP(0) <BR> Called from _ACTIVATEWINDOW(0) <BR> Called from MAIN(404) in module: Main.prg [/pre2] Саму ошибку сделал специально чтоб посмотреть на красное [pre2] FUNCTION K_Browse(oWnd, nPage) LOCAl cSql := "" LOCAl cBrw, cBrw1 := "" LOCAl oBrw, oBrw1 LOCAl cAlias := "" LOCAl cAlias1 := "" LOCAL nRecCount := 0 LOCAL aFields := {} LOCAL cCol := "" ? a[1] // вот тут обращение к несуществующему массиву [/pre2] ЗЫ пока Пересобрал библиотеку со старой редакцией ShowError(). работает хоть

Andrey: Haz пишет: у меня вообще валится без всяких окон, ни красных ни белых , хорошо хоть лог пишет Возьми в новом исходнике ErrorSys.prg строка 242: [pre2] AlertStop( cMsg, "Program Error", "ZZZ_B_STOP64", 64, { { 217, 67, 67 } }, .T., bInit )[/pre2] Поставь так: [pre2] MsgStop( cMsg, "Program Error") // обыкновенный текст на белом фоне [/pre2] Но ошибка на красном фоне приятней смотрится и юзер понятней что ошибка. Я писал об ошибке в HMG_ALERT(), что-то там надо докрутить. У меня тоже вылетает в FILLDLG(). Скорее всего ошибка здесь: [pre2] bInit := {|| iif( GetControlType( "Say_01", "oDlg" ) == "EDIT",, ( ; SetProperty( "oDlg", "Say_01", "FontColor", YELLOW ), ; SetProperty( "oDlg", "Say_01", "Alignment", "CENTER" ), ; SetProperty( "oDlg", "Say_02", "FontColor", YELLOW ), ; SetProperty( "oDlg", "Say_02", "Alignment", "CENTER" ) ) ) }[/pre2] Не находит объект Say_02. Ради теста добавь к себе в проект ErrorSys.prg и посмотри... Я у себя сделал сохранения скрина экрана ошибки в папку ошибок - полезная штука для анализа ошибок. У меня в проге один модуль работает с пятью таблицами. И когда происходит ошибка, то я не могу понять где произошла ошибка. Нет алиаса базы при ошибке, нет номера записи при ошибке. Есть только номер строки ошибки и всё. Скрин экрана ОЧЕНЬ помогает при анализе ошибки.


Haz: Andrey пишет: Возьми в новом исходнике ErrorSys.prg строка 242: так уже старый вариант в исхоники перекомпилил Andrey пишет: Но ошибка на красном фоне приятней смотрится и юзер понятней что ошибка. Ну тут на вкус и цвет все фломастеры разные. Мне наоборот кажется что от красных окон пользователи в обморок падать начнут. У меня есть проекты с очень бледным интерфейсом по цветам ( заказчик пожелал ) и красное окно точно ему не понравится.

Andrey: Haz пишет: Мне наоборот кажется что от красных окон пользователи в обморок падать начнут. У меня наоборот, юзер не сообщает об ошибке. Можно поправить на свой ЛЮБОЙ цвет в строке 237: [pre2] SET MSGALERT BACKCOLOR TO MAROON SET MSGALERT FONTCOLOR TO WHITE[/pre2] С новым модулем ErrorSys.prg легче стало править окно ошибки под себя. В старом модуле у меня при ошибке кнопки Ok иногда не было видно, уходило за границу экрана. Да и скопировать ошибку в буфер экрана - это уже давно у всех есть, а в МиниГуи не было до сих пор. В новом модуле ErrorSys.prg так же зашит поиск по трём фильтрам: Если прога стоит на сервере терминалов, то не понятно было какая станция свалилась по ошибке. Сейчас добавлена вот такая строка: [pre2] Html_LineText( HtmArch, 'User: ' + NetName() + " / " + GetUserName() )[/pre2] Я в своём обработчике ошибок (исправленном под себя) добавил ещё такие строки:[pre2] Html_LineText( HtmArch, 'Application: ' + GetExeFileName() + " " + M->cPubVersProg ) Html_LineText( HtmArch, 'User: ' + NetName()+"/"+hb_UserName()+"/"+M->cOperator ) Html_LineText( HtmArch, 'DbInfo: Alias - '+ ALIAS() + ', Ord - ' + OrdSetFocus() + ; ', Recno - ' + HB_NtoS(RecNo()) + '/' + HB_NtoS(LastRec()) )[/pre2]

Haz: Andrey пишет: У меня наоборот, юзер не сообщает об ошибке. я Сам смотрю по логам, плюс прилетает на почту сообщение ( опционально ) и в Bitrix сообщением по некоторым проектам считаю что пользователь и сообщать не должен, т.к. многие прочитать что написано не в состоянии. Andrey пишет: Можно поправить на свой ЛЮБОЙ цвет в строке 237: вопрос не в цвете, как поправить знаю. Вопрос в тихом падении, пользователь даже понять не может куда все делось. Andrey пишет: В новом модуле ErrorSys.prg зашит поиск по трём фильтрам: наверное это хорошо. иногда быстрее просто текстовым просмотром глянуть особенно с телефона . Мне не принципиально в каком виде лог ведется , главное там все есть.

i3t4j6: Haz пишет: Ну тут на вкус и цвет все фломастеры разные. Поэтому я и предложил предусмотреть возможность переключения между классическим вариантом и мультиками.

gfilatov2002: i3t4j6 пишет: я и предложил предусмотреть возможность переключения между классическим вариантом и мультиками. Благодарю за подсказку Я добавил во втором апдейте текущей сборки новую команду: SET SHOWREDALERT [ON | OFF] для возможности управлять видом этого окна. Скоро выложу это обновление

SergKis: gfilatov2002 пишет Я добавил во втором апдейте текущей сборки новую команду: Может вариант блока кода обработчика сделать для замены, что то такое[pre2] STATIC bErrorSys FUNC _bErrorSys( bErr ) IF pCount() > 0 ; bErrorSys := bErr ENDIF RETURN bErrorSys *-----------------------------------------------------------------------------* PROCEDURE ErrorSys *-----------------------------------------------------------------------------* LOCAL bErr := _bErrorSys( bErr ) IF Valtype(bErr) != "B" ; bErr := { | oError | DefError( oError ) } ENDIF ErrorBlock( bErr ) #ifndef __XHARBOUR__ Set( _SET_HBOUTLOG, GetStartUpFolder() + "\error.log" ) Set( _SET_HBOUTLOGINFO, MiniGUIVersion() ) #endif RETURN [/pre2]

gfilatov2002: SergKis пишет: Может вариант блока кода обработчика сделать для замены Сергей! Идея понятна, но для такой замены есть же стандартные средства со времен Клиппера

SergKis: gfilatov2002 пишет для такой замены есть же стандартные средства со времен Клиппера Что то я подзабыл, как это делать, так давно было Для hmg подменяем ErrorSys.prg на свой вариант

gfilatov2002: SergKis пишет: подзабыл, как это делать См. примеры в папках: - basic\MyErrorFunc; - basic\Hmg_Error_2.

gfilatov2002: Выложил Update 2 для сборки 21.05 по адресу http://hmgextended.com/files/CONTRIB/hmg-21.05-setup.exe

SergKis: gfilatov2002 пишет См. примеры в папках: Спасибо Примеры видел, но не вдохновили. Заменой prg (полученный new obj), показалось удобнее в использовании. Предложил блок кода для более гибких вариантов, подменой на лету, если кому надо комбинировать html\txt\...

SergKis: gfilatov2002 Небольшая добавка [pre2] METHOD SetArrayTo( aArray, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName ) CLASS TSBrowse ... FOR nI := 1 TO Len( ::aArray ) FOR nN := 1 TO nColumns If HB_ISCHAR( ::aArray[ nI, nN ] ) .and. CRLF $ ::aArray[ nI, nN ] cData := "" AEval(hb_aTokens(::aArray[ nI, nN ], CRLF), {|x| x := trim(x), cData := If( Len(x) > Len(cData), x, cData )}) Else cData := cValToChar( ::aArray[ nI, nN ] ) EndIf IF Len( cData ) > Len( aDefMaxVal[ nN ] ) IF aDefType[ nN ] == "C" aDefMaxVal[ nN ] := Trim( cData ) aDefMaxLen[ nN ] := Max( aDefMaxLen[ nN ], Len( aDefMaxVal[ nN ] ) ) ELSE aDefMaxVal[ nN ] := cData aDefMaxLen[ nN ] := Max( aDefMaxLen[ nN ], Len( cData ) ) ENDIF ENDIF NEXT NEXT ... [/pre2]

gfilatov2002: SergKis пишет: Небольшая добавка Принято. Благодарю за помощь

SergKis: gfilatov2002 Надо еще поправить, т.к. aDefMaxLen[ nI ] помешает расчету[pre2] METHOD SetArrayTo( aArray, uFontHF, aHead, aSizes, uFooter, aPicture, aAlign, aName ) CLASS TSBrowse ... line 12950 FOR nI := 1 TO nColumns cType := ValType( ::aArray[ 1, nI ] ) aDefType[ nI ] := cType IF cType $ "CM" ::aDefValue[ nI ] := Space( Len( ::aArray[ 1, nI ] ) ) aDefMaxVal[ nI ] := Trim( ::aArray[ 1, nI ] ) aDefMaxLen[ nI ] := iif( CRLF $ aDefMaxVal[ nI ], 0, Len( aDefMaxVal[ nI ] ) ) aDefAlign[ nI ] := DT_LEFT ... [/pre2]

gfilatov2002: SergKis пишет: Надо еще поправить OK

gfilatov2002: Подготовил 3-й апдейт для сборки 25.05, который выйдет на этой неделе Что нового: [pre2] * Modified: The some internal SetGet functions were defined as Static. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see h_controlmisc.prg in folder \Source). * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - minor correction in the method SetArrayTo in the TSBrowse class. Contributed by Sergej Kiselev (see demo in folder \samples\Advanced\Tsb_SetArrayTo) * Updated: HbSQLite3 library: - update for using SQLITE3 latest version 3.36.0dev. Contributed by Grigory Filatov <gfilatov@inbox.ru>. * Updated: 'GraphPlus library demo' sample. Based upon a contribution of S.Rathinagiri <srgiri@dataone.in> Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see in folder \samples\Advanced\GraphPlus) * Updated: 'Source Code Formatter' utility. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \Utils\ofmt) [/pre2] Если у Вас есть полезные дополнения для библиотеки, то я с удовольствием их рассмотрю с целью включения в эту сборку...

Haz: gfilatov2002 пишет: Если у Вас есть полезные дополнения для библиотеки, то я Григорий, не знаю полезно ли? В одном из проектов делал замену errorsys на вывод лога не в html, а в json. Плюс встроенный вьювер ошибок по этому json. Достаточно компактно кажет всю информацию по ошибке. Потом идею бросил, но там так и работает. Если потребуется, могу в отдельный пример накидать. Так ради альтернативы, поскольку там по сути ничего нового, просто вывод в хтмл заменил на запись в json, и стандартные бровсы по массивам



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