Форум » GUI » Чего мне не хватает в МиниГуи.... » Ответить

Чего мне не хватает в МиниГуи....

Andrey: Всех с праздниками !!! Предлагаю тем кто использует МиниГуи высказать свои предложения по улучшению данного продукта, да и в какую сторону двигаться дальше.... Вот то что мне не хватает (я имею в виду примеров): 1. Очень мало примеров для работы с DLL (хотя это и не относиться к МиниГуи, но как делать не знаю). 1.1 Как собирать свои ресурсы к программе в отдельную dll-ку. Как подключать её при запуске, показ картинок из dll (я может и догадываюсь, но пока не могу сделать этого) ? 1.2. Как сделать отдельный свой ехе-ник, а Харбор и Минигуи затолкать в отдельную dll-ку, ну и LetoDB в отдельную dll. Как подключать при запуске эти отдельные dll и пользоваться функциями из этих dll ? 1.3. Как использовать чужие dll (допустим на Дельфи) в своих программах на МиниГуи (хотя FastReport'ом пользуюсь, но он специально сделан под Харбор) ? Разные примеры из МиниГуи на эту тему смотрел, кое что понятно, кое что нет. 2. Полноценная работа с иконками 2.1. Сейчас приходиться каждый размер иконки (16х16, 32х32 и т.д.) хранить отдельно в ресурсном файле и выводить на кнопки по отдельности. Нужна функция вывода из ОДНОГО файла иконки (содержащий все размеры от 16х16 до 128х128) выбранного размера. 2.2. Как из shell32.dll (она содержит все размеры иконок) можно выбрать и показать иконку отличную от размера 32х32 ? 2.3. Как вывести на форму (не на кнопку) иконку заданного размера ? Вот пока часть чего хочется... Может на Рождество желания сбудутся ?

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

Andrey: Есть ли возможность при отладке программы - смотреть какие объекты на форме созданы ? Какой нибудь мини-просмотр списка объектов на форме. Или готовые функции для этого. Самому писать долго...

Andrey: Кому интересно ! Комментарии приветствуются. https://cloud.mail.ru/public/vkeh/Y4QcQSAGv https://cloud.mail.ru/public/EZDf/NfsLdfoQL Menu_3(2).7z - работа с DEFINE MAIN MENU Menu_4(2).7z - работа с DEFINE MAIN MENU В проекте показаны некоторые реализации для работы программы: 1) Запуск ТОЛЬКО одной копии программы. ПЕРЕЗАПУСК программы. 2) Меню программы храниться в demo4.menu 3) Настройки программы пишутся и читаются с demo4.ini 4) Меню можно настраивать под каждого пользователя программы. 5) Иконки в программе берутся из dll системы Windows. 6) Смена темы в меню. 7) Перевод на другие языки во внешних файлах типа demo4.lang-ХХ

Andrey: Очень часто когда делаешь отладку проги, то приходиться открывать файл _msg.log и смотреть что там вывелось. Неудобно очень. Можно ли сделать автоматом в МиниГуи функции типа DebugLog(), которая бы запускалась вместе с программой и показывало ПРОСТОЕ окно отладки ? Т.е. в коде программы ставим так: [pre2] ? "aWin[3]=",aWin[3] или ?? HB_ValToExp(aWin), .... [/pre2] А в лог пишется это значение, и потом эта строка появляется в окне DebugLog() ! Я конечно сам могу такое сделать, уже делал наподобие - SAMPLES\Advanced\Tsb_FileChangeControl но хотелось бы иметь стандартную ПРОСТУЮ функцию в МиниГуи !!! В начале кода ставишь у себя SET DebugLog ON и больше не отвлекаешься на постоянные открытия/закрытия своего лога. Про GUI Debugger for HMG Official - знаю, но он сложный в постоянной работе. Вот примерно так: Какие есть у вас мысли по этому поводу ?


Haz: Andrey пишет: Про GUI Debugger for HMG Official - знаю, но он сложный в постоянной работе. Ознакомься с Visual Code editor, нам есть отладчик под harbour. Это будет лучше, чем грузить библиотеку никому не нужным мусором. PS. Делал давно подобное окно по контролю за рабочими областями, не прижилось

SergKis: Andrey пишет: Какие есть у вас мысли по этому поводу ? Никаких лишних ф-ий 1. - Запуск программы - FAR, F3 -> открывать файл _msg.log, Ctrl+End и смотреть что там вывелось - Что то делаешь в программе смотришь в FAR, обновление автоматом 2. - Запуск программы - Запуск Notepad2.exe _msg.log, Ctrl+End - Что то делаешь в программе смотришь в Notepad2.exe нажимая F5, Ctrl+End

Andrey: SergKis пишет: - Что то делаешь в программе смотришь в FAR, обновление автоматом Да не обновляет у меня _msg.log автоматом. Открываешь его, и всё, больше в лог ничего не записывается.

SergKis: Andrey пишет Да не обновляет у меня _msg.log автоматом. Открываешь его, и всё, больше в лог ничего не записывается. Ты открываешь лог, до запуска программы, а надо, как я написал, сначала программу (там удаление и создание лог файла), а потом его просмотр, при создании нового лога уже другой файл и handle для файла.

Andrey: SergKis пишет: Ты открываешь лог, до запуска программы, После запуска, посмотрел результат, далее двигаюсь в программе, дальнейшие результаты в лог не попадают.

SergKis: Andrey пишет После запуска, посмотрел результат, далее двигаюсь в программе, дальнейшие результаты в лог не попадают 1. Смотри настройки far F9 -> "Параметры" -> "Настройки программы просмотра" должен быть X - "Сохранять режим просмотра" 2. Возможно, переключать фокус, после действий в программе, на far (у меня 14' экран и по Alt+TAB переключаюсь) 3. Запусти Notepad2.exe ..., по F5 он перечитывает файл, показывая то же место, где был. Ctrl+End - идет в конец файла

Andrey: Haz пишет: Ознакомься с Visual Code editor, нам есть отладчик под harbour. Да пользуюсь им изредка, что-то не могу с ним работать. Вот нашёл: xBase Dev — это полнофункциональная интегрированная среда разработки (IDE) и инструмент быстрой разработки приложений (RAD) для языков xBase (Clipper, Harbour/xHarbour). Он поддерживает BCC, GCC, Mingw в качестве компилятора и FiveWin, hwGUI и MiniGUI в качестве графического интерфейса. https://sourceforge-net.translate.goog/projects/xbase-dev/?_x_tr_sl=en&_x_tr_tl=ru&_x_tr_hl=ru&_x_tr_pto=sc Кто-то им пользуется ?

Haz: Andrey пишет: Да пользуюсь им изредка, что-то не могу с ним работать Можно подробнее, что не устраивает в vscode? Не так давно пересел на vscode с xedit от xailer, возможностей на порядок больше, хотя xedit под harbour лучше заточен, даже в мелочах, тот же контроль версий проще и понятнее. С ide 👆в сабже ранее не пересекались, очень похож наharbour IDE (может дальнейшее развитие). Спасибо попробую, но не думаю что перепрыгну, vscode универсален, с хорошей поддержкой и кучей дополнений, несколько неудобен с перехватом вывода ошибок компиляции и нет автоматического перехода на строку ошибки как в xedit, но зато предсказуем и настраиваем. PS. Если нужно что-то под harbour , то лучшее что видел это все таки xedit. Из минусов - ограничения по шрифтам редактора ( встречаются косяки с кодировками. - нужен бубен для подключения отладчика - при изменении процесса сборки (ключи, библиотеки и пр) можно сразу санитаров из дурки вызывать Из плюсов: - если все настроено, работает как часы, все под рукой, от редактора dbf, ресурсов, справок и пр. Но минусы бесят, вот и пересел на vscode

Andrey: Можно подправить функцию MsgDebug() как у _o2log() ? Если делаем вывод переменной типа oHmgData(), то фигня выходит... Глаза сломать можно, пока найдёшь нужное значение... Вот допустим код:[pre2] This.Cargo := oHmgData() owc := This.Cargo owc:aBColor := This.BackColor // цвет окна owc:ahIcoDel := {} // для удаления хендлов иконок с формы owc:cName := "" owc:cFile := cFile owc:cCdPg := cCdPg owc:cPsw := cPsw _o2log(owc, 30, ProcNL() + " owc => ", .T. )[/pre2] Нормально читается в логе: [pre2] 1. ABCOLOR = {230, 230, 230} 2. AHICODEL = {} 3. CNAME = '' 4. CFILE = '' 5. CCDPG = WIN1251 6. CPSW = none [/pre2] Чащё всего лог не хочется пролистывать и искать нужную переменную. Проще вывести MsgDebug(). Ну и ещё фонт увеличить в MsgDebug(), а то глаза уже плохо видят. Лучше сделать AlertDebug() , похожие там в уже всё отлажено. Своя функция показа у меня есть, но задолбало таскать её из проекта в проект. Проект Debug_Log высылал, там есть реализованная функция. Вот и хочется иметь стандартную функцию AlertDebug() в поставке Минигуи. Типа так: [pre2] AlertDebug("TEXT = " + cFD, hWnd, oWnd, App.Cargo)[/pre2]

gfilatov2002: Andrey пишет: хочется иметь стандартную функцию AlertDebug() в поставке Минигуи. Так она уже есть в дополнительной библиотеке hmgaddon в папке LIB. Просто добавь в свой файл проекта .HBP строку # paths to the main and extension *.Lib -lhmgaddon и пользуйся этой функцией для отладки

Andrey: Спасибо ! Посмотрел ChangeLog.txt а там не было про функцию AlertDebug(), думал будет в следующей версии...

SergKis: Andrey Можно легко сделать из MsgDebug() AlertDebug(), попробовал, работает[pre2] *-----------------------------------------------------------------------------* FUNCTION AlertDebug ( ... ) *-----------------------------------------------------------------------------* LOCAL nCnt := PCount() LOCAL cMsg, xVal LOCAL i cMsg := "Called from: " + ProcName( 1 ) + "(" + hb_ntos( ProcLine( 1 ) ) + ") --> " + ProcFile( 1 ) + CRLF + CRLF FOR i = 1 TO nCnt xVal := PValue( i ) IF IsObject( xVal ) IF _HMG_lOOPEnabled xVal := _o2log(xVal, ,'>>> ', .T., .T.) + CRLF ELSE xVal := "O:"+xVal:ClassName ENDIF ELSE xVal := hb_ValToExp( PValue( i ) ) ENDIF cMsg += xVal + iif( i < nCnt, ", ", "" ) NEXT AlertInfo( cMsg ) RETURN cMsg [/pre2]

Andrey: SergKis пишет: Можно легко сделать из MsgDebug() AlertDebug(), попробовал, работает Лучше это добавить в MsgDebug() AlertDebug() буду использовать из hmgaddon - там список окон в задаче есть, можно ещё что-то прикрутить для простой отладки. Типа список открытых баз или ещё другое.

SergKis: Andrey пишет Лучше это добавить в MsgDebug() в MsgDebug() работает вызов MsgInfo(), т.е. мелкий фонт, а ранее пишешь Ну и ещё фонт увеличить в MsgDebug(), а то глаза уже плохо видят. и как это совместить ? убрать MsgInfo() и поставить AlertInfo() ?

Andrey: SergKis пишет: и как это совместить ? убрать MsgInfo() и поставить AlertInfo() ? Да подправить MsgDebug() и всё, пойдёт для всяких мелочей. Останется совместимость. А для большего просмотра лучше уже использовать доп.библиотеку hmgaddon.lib Иконка есть, сразу видно на МиниГуи отладка

gfilatov2002: Andrey пишет: подправить MsgDebug() и всё Я так и сделал

Andrey: В функции MsgDebug() не хватает сохранение/восстановление текущего окна. Если вызываю MsgDebug() внутри формирующего окна, то труба, прога валится, т.к. далее пользуюсь командами This.* Нужно бы добавить в код типа такого: [pre2] SET WINDOW THIS TO cForm MsgDebug(cFile,This.Tb_Path.Value) SET WINDOW THIS TO [/pre2] Только внутрь MsgDebug() И да, я знаю что это плохой стиль при создании окна вызывать другие окна.



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