Форум » GUI » MsgInfo(), MsgStop(), MsgExclamation(), MsgDebug() » Ответить

MsgInfo(), MsgStop(), MsgExclamation(), MsgDebug()

Andrey: Уже скоро 2019 год будет, а эти функции до сих пор неизменны. Экраны большие у пользователей уже давно. Замучили юзера вопросом, а побольше шрифт можно сделать для этих окон ? A то читать приходиться через лупу. Настолько мелкий шрифт в этих сообщениях для больших экранов. Можно ли установить для этих окон при запуске программы РАЗМЕР фонта, ну и до кучи сам фонт ? Типа: [pre2]SET MSGFUNCT FONT TO cFont, nFontSize [/pre2] Как есть команда: [pre2]SET FONT TO cFont, nFontSize [/pre2] Ну и до кучи задать другой размер иконки и картинки: [pre2]SET MSGFUNCT SIZE 256 // или 48, 64, 72, 96, 128 SET MSGINFO SIZE 64 ICO "INFO64.ICO"[/pre2] Тогда за иконку отвечать будет сам программист. Нет иконки в ресурсах, и нет в окошке иконки. И цвета окошек тоже: [pre2]SET MSGINFO BACKCOLOR aDim1 FONTCOLOR aDim2 SET MSGSTOP BACKCOLOR aDim1 FONTCOLOR aDim2 SET MSGEXCL BACKCOLOR aDim1 FONTCOLOR aDim2 SET MSGDEBUG BACKCOLOR aDim1 FONTCOLOR aDim2[/pre2] Если это нельзя сделать для этих функций и не хочется увеличивать размер ресурсов для текущей версии МиниГуи, то хотелось бы иметь дополнительную библиотеку MiniguiExt.lib и файл ресурсов miniguiExt.res Т.е. сделать доп.функции: [pre2]Msg2Info(), Msg2Stop(), Msg2Exclamation(), Msg2Debug() [/pre2] Оставить обычный синтаксис и типа такого: [pre2]SET MSG2FUNCT FONT TO cFont, nFontSize SET MS2GINFO SIZE 64 ICO "INFO64.ICO" Msg2Info( cMsg , "Инфо", ......, cFont, nFontSize, 64, "INFO64.ICO", aDim1, aDim2 )[/pre2] ------------------------------------------------------------------ Надоели танцы с бубнами, чтобы сменить иконку в этих функциях !!! Сначала в ресурсном файле объявить: #define MSGINFO 1005 Потом в prg-модуле нужно ставить: #define MSGINFO 1005 и ещё потом уже где тебе нужно: MsgInfo( cMsg , "Инфо", MSGINFO, .F. ) А по простому нельзя сделать ?

Ответов - 20

PSP: Напиши свою функцию да и всё.

Andrey: PSP пишет: Напиши свою функцию да и всё. Да я уже пробовал, не особо красиво получается... Тем более я думаю это не только у меня такие придирчивые пользователи. Расширение функционала МиниГуи тоже большой плюс.

Pasha: Так это обертка для функции winapi В winapi нет такого функционала. Чтобы его получить, надо делать другую реализацию. Думается, что многие пользователи захотят использовать именно стандартные средства winapi, так что лучше это сделать отдельными функциями. Ну а что там такого военного ? Модальное окно с текстом и кнопками, больше ничего.


gfilatov2002: Pasha пишет: Модальное окно с текстом и кнопками Тем более, что в ядре библиотеки уже есть Клиппер-совместимая по синтаксису и Вин7-10 подобная по виду функция HMG_Alert( cText, [<aOptions>], [<cTitle>], [<nType>] ) Пример использования см. в папке \samples\Basic\WALERT_2

Andrey: gfilatov2002 пишет: Пример использования см. в папке \samples\Basic\WALERT_2 А можно в эту функцию добавить ещё один параметр, отвечающий за иконку из ресурсов ? Было бы здорово ! И размеры фонта как можно регулировать для этой функции ? Если нет возможности, то можно ещё добавить параметр фонта ?

gfilatov2002: Andrey пишет: размеры фонта как можно регулировать для этой функции ? После изменений, предложенных Сергеем, это будет возможно, если определить свой шрифт DlgFont до вызова функции HMG_Alert() Такое изменение шрифта будет доступно в следующей сборке библиотеки

SergKis: Andrey пишет А можно в эту функцию добавить ещё один параметр, отвечающий за иконку из ресурсов ?[pre2] 1. В MiniGui\RESORCES есть файлы ico с именами aIcon := { "ALERT", "QUESTION", "INFO", "STOP" }, замени их своими. 2. FUNCTION HMG_Alert( cMsg, aOptions, cTitle, nType, cIcoFile ) LOCAL aIcon := { "ALERT", "QUESTION", "INFO", "STOP" } // LOCAL cIcoFile LOCAL nLineas ... AEval( aIcon, {|x, i| aIcon[ i ] := "ZZZ_B_" + x } ) DEFAULT cIcoFile := aIcon[ nType ] IF ! _IsControlDefined( "DlgFont", "Main" ) ... [/pre2] Иконки должны быть 32x32, так зашито в окно

gfilatov2002: SergKis пишет: FUNCTION HMG_Alert( cMsg, aOptions, cTitle, nType, cIcoFile ) Добавил новый параметр в эту функцию. Спасибо за помощь

Andrey: SergKis пишет: Иконки должны быть 32x32, так зашито в окно Ну что за невезуха, хотелось бы размер иконок 48 или 64х64 хотя бы.

SergKis: Andrey пишет Ну что за невезуха Так текст ф-ии есть, поправь, отладку сделай на разные размеры. Кто мешает ?

gfilatov2002: Andrey пишет: размер иконок 48 или 64х64 хотя бы Добавил в функцию еще один параметр nIcoSize. Пример вызова: DEFINE FONT DlgFont FONTNAME "Tahoma" SIZE 18 HMG_Alert( "MessageBox with user's defined Font and Icon", NIL, "Warning", NIL, "demo.ico", 64 ) RELEASE FONT DlgFont

Andrey: gfilatov2002 пишет: Добавил в функцию еще один параметр nIcoSize. Ура ! Спасибо большое ! Т.е. если мне всегда нужен постоянный размер фонта в HMG_Alert(), я в MAIN определяю DEFINE FONT DlgFont FONTNAME "Tahoma" SIZE 18 и больше нигде не забочусь об этом ? Правильно ? DlgFont - у меня больше ни где не присутствует.

gfilatov2002: Andrey пишет: я в MAIN определяю DEFINE FONT DlgFont FONTNAME "Tahoma" SIZE 18 и больше нигде не забочусь об этом ? Да, теперь так можно сделать...

Andrey: gfilatov2002 пишет: Да, теперь так можно сделать... Спасибо ! Жду с нетерпением новую версию !

gfilatov2002: Andrey пишет: Жду с нетерпением новую версию Осталось потерпеть всего одну неделю Кстати, мой тестовый пример для проверки этой функции [pre2]#include "hmg.ch" ANNOUNCE RDDSYS PROCEDURE MAIN SET WINDOW MAIN OFF DEFINE FONT DlgFont FONTNAME "Tahoma" SIZE 12 HMG_Alert( "MessageBox Stop", NIL, "Stop!", ICON_STOP ) HMG_Alert( "MessageBox Alert", NIL, "Alert" ) HMG_Alert( "MessageBox with the user's defined Font and Icon", NIL, "Warning", NIL, "demo.ico" ) RELEASE FONT DlgFont DEFINE FONT DlgFont FONTNAME "Verdana" SIZE 18 HMG_Alert( "MessageBox with the Big Font and Icon Size", NIL, NIL, NIL, "demo.ico", 64 ) HMG_Alert( ; HMG_Alert( "Test Question;Second Line", {"&Yes","&No","Con&tinue","&Cancel"}, "Please, Select", NIL, "demo.ico", 64 ), ; 3 /* timeout in the seconds */, "Information", ICON_INFORMATION ) RETURN [/pre2]работает нормально

Alex_Cher: gfilatov2002 пишет: работает нормально

gfilatov2002: gfilatov2002 пишет: работает нормально gfilatov2002 пишет: Осталось потерпеть всего одну неделю

Andrey: gfilatov2002 Можно кнопочки по высоте сдела раза в ТРИ больше ? Пока юзер по кнопке попадёт, выслушаешь о себе много чего.... И ему без разницы, что я пишу на готовой системе, главное чтобы он по кнопке попадал. Ну и заодно бы смену фона выбранной кнопки сделать, всего несколько строк:[pre2] NOHOTLIGHT NOXPSTYLE HANDCURSOR ; ON MOUSEHOVER ( This.Backcolor := BLACK , This.Fontcolor := YELLOW ) ; ON MOUSELEAVE ( This.Backcolor := ???? , This.Fontcolor := ????? ) ; [/pre2]

Andrey: Перешёл на новую версию МиниГуи. Теперь пример Tsb_menu слетает вот на этой строке: [pre2] DEFINE FONT DlgFont FONTNAME "Tahoma" SIZE 12 [/pre2] Первый раз срабатывает, на второй раз, вот такая ошибка: Error MGERROR/0 Font: DlgFont Of Main Already defined. Program terminated. Called from MSGMINIGUIERROR(99) in module: h_error.prg Called from _DEFINEFONT(61) in module: h_font.prg Called from RUN_TEST1(570) in module: Tsb_menu.prg Почему до этого работало, а сейчас нет ? Я знаю как исключить эту ошибку, но просто понять почему это происходит.

Haz: Andrey пишет: Почему до этого работало, а сейчас нет ? Видимо новая версия более строга к ошибкам разработчика , Григорий ее постоянно оптимизирует , заставляя внимательнее писать код. Что само по себе радует. Andrey пишет: Я знаю как исключить эту ошибку, но просто понять почему это происходит. Тебе помогли твой же косяк найти Не ясно как он бы аукнулся в дальнейшем.



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