Форум » 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. ) А по простому нельзя сделать ?

Ответов - 138, стр: 1 2 3 4 5 6 7 All

gfilatov2002: SergKis пишет: Под bInit понимаю возможность добавить на окно галочки или radio group Да, все это можно сделать Но ведь у нас есть благодаря Петру системная функция TaskDialog() с подобными возможностями А hmg_Alert() была задумана как быстрая замена функции Alert() из Клиппера

gfilatov2002: SergKis пишет: Что делать, если 3-и кнопки или 4, как покрасить ? nK := HMG_Alert( cMsg, {"&Поиск","&Отмена", "&Восстановить"}, "Внимание!", Nil, "alert.ico", 64, {GREEN,RED} ) Вот так Код [pre] DEFINE FONT DlgFont FONTNAME "Verdana" SIZE 16 _HMG_ModalDialogReturn := 2 cMsg := "Первая строка;;Вторая строка;" + Repl( "-._.", 15 ) + ";;Четвертая строка" nK := HMG_Alert( cMsg, {"&Поиск","&Отмена", "&Восстановить"}, "Внимание!", Nil, "alert.ico", 64, {YELLOW, RED, GREEN} ) HMG_Alert( nK ) [/pre]

SergKis: gfilatov2002 пишет Но ведь у нас есть благодаря Петру системная функция TaskDialog() с подобными возможностями Как то не манит ее использовать - сложновато и многовато, смотрел примеры в TaskDialog - работает все ок, но ... А hmg_Alert() была задумана как быстрая замена функции Alert() из Клиппера С добавлением icon по размерам + теперь цвета, она вышла за рамки "Alert() из Клиппера" А простые запросы куда архив откинуть (сервер, флэшка, диск, ...), уточнение по форме печати и похожие остались. Простые окна запросов постоянно делаются, думаю, hmg_Alert можно использовать вместо, простыми средствами


ММК: Andrey пишет: Нет, здесь не буду извращаться. Хватит минимального сообщения. Минимальные должны быть в ядре. Гргорий очень правильно сказал.Какая проблема сделать окошко с кнопками? Можно добавить ini файлик с настройками; размер,фонт, цвет и т.д А что бы окошко не "глушило" экран сделайте для текста скроллинг ( горизонтальный или вертикальный ), как в FW http://forums.fivetechsupport.com/viewtopic.php?f=3&t=18497&sid=1385f5e4cd43192128278e6396b9157e Окраску кнопок можно сделать трехслойной ( что бы глаза не резала) . Т.е. серые ( или что то нетральное) . При наводке курсора "раскрашивается". При активации вспыхивает ... Если уж изобретаете велосипед, то не делайте его деревянным :)

SergKis: ММК пишет Гргорий очень правильно сказал.Какая проблема сделать окошко с кнопками? Проблем сделать нет (делаются в реале), есть системная ф-я уже ПОЧТИ все делающая, привязывается по установке относительно какого окна центроваться (в своих это надо повторять каждый раз), ЕЕ, СИСТЕМНУЮ, ВЫБРОСИТЬ из использования или чуть поправить, усилив ?

SergKis: gfilatov2002 пишет Вот так Это ожидаемо Осталось фон окна и label. Помнится, в Клипперной Alert цвет фонта и цвет текстов задавался SET COORом

SergKis: PS SET COLORом , конечно

Andrey: ММК пишет: Т.е. серые ( или что то нетральное) . При наводке курсора "раскрашивается". Так цветные кнопки просто в качестве примера. На самом деле будет что-то нейтральное. Бледно красное и бледно зеленое... А свои кнопки и менюшки можно сделать используя пример Tsb_Menu05.7z https://cloud.mail.ru/public/35pf/NqnpzXCSi Григорий, я тебе его высылал.

Andrey: SergKis пишет: Осталось фон окна и label. Помнится, в Клипперной Alert цвет фонта и цвет текстов задавался SET COORом Ну да, может до кучи сделать изменение фона окна. Ну тогда хотелось бы через внешний глобальный параметр, типа: SET MSGALERT BACKCOLOR YELLOW SET MSGALERT LABELCOLOR BLUE

gfilatov2002: Andrey пишет: сделать изменение фона окна. Ну тогда хотелось бы через внешний глобальный параметр, типа: SET MSGALERT BACKCOLOR YELLOW SET MSGALERT LABELCOLOR BLUE Cделал, конечно Код ниже [pre] DEFINE FONT DlgFont FONTNAME "Verdana" SIZE 16 _HMG_ModalDialogReturn := 2 cMsg := "Первая строка;;Вторая строка;" + Repl( "-._.", 15 ) + ";;Четвертая строка" SET MSGALERT BACKCOLOR TO {240, 240, 240} SET MSGALERT FONTCOLOR TO NAVY nK := HMG_Alert( cMsg, {"&Поиск","&Отмена", "&Восстановить"}, "Внимание!", Nil, "alert.ico", 64, {YELLOW, RED, GREEN} ) [/pre]P.S. Прозрачность для иконки задана, но выглядит немного коряво...

Andrey: gfilatov2002 пишет: P.S. Прозрачность для иконки задана, но выглядит немного коряво... Пойдёт ! То что надо ! Спасибо !

SergKis: gfilatov2002 пишет Но ведь у нас есть благодаря Петру системная функция TaskDialog() с подобными возможностями Еще раз посмотрел примеры, класс TaskDialog. Совершенно не ясно как управлять расцветкой (свойствами) контролов, как добавить на окно tsb таблицу, как применить фонты из DEFINE FONT ...? Да и сама hmg_Alert() не сделана на TaskDialog, а на стандартных командах hmg. А в hmg_alert() с bInit можно спокойно добавить тсб таблицу, если надо, скрыть IMAGE, если не подобрать по сочетанию с backcolor, ... и др. штучки с окном\контролами проделать.

gfilatov2002: SergKis пишет: в hmg_alert() с bInit можно спокойно добавить Согласен Например, такой блок b := {|idx| this.title := 'New title', this.btn_01.caption := "Search", this.btn_02.caption := "Cancel", this.btn_03.caption := "Restore"} переданный hmg_alert() nK := HMG_Alert( cMsg, {"&Поиск","&Отмена", "&Восстановить"}, "Внимание!", Nil, "alert.ico", 64, {YELLOW, RED, GREEN}, b ) поменяет заголовок окна Alert и надписи на всех кнопках

SergKis: gfilatov2002 пишет поменяет заголовок окна Alert и надписи на всех кнопках Если добавить в блок кода This.btn_01.Action := {|| myBtn1() }, This.btn_03.Action := {|| myBtn3() } то выход с окна будет только по кнопке "Cancel\Отмена", а на кнопках 1,3 выполнятся соответствующие функции

Andrey: Григорий, ещё одна бяка в hmg_Alert(). Центрирование строк убрать. Или сделать по параметру SET MSGALERT LABEL TO CENTERALIGN SET MSGALERT LABEL TO RIGHTALIGN SET MSGALERT LABEL TO LEFTALIGN Мне нужно к левому краю прижимать сообщение. И ещё сталкивался с проблемой, что hmg_Alert() остаётся за другими окнами, т.е. нужен флаг - показывать окно поверх всех окон ! Как в MsgInfo() и др.

SergKis: Andrey Мы с Григорием, все время талдычим о bInit, в котором делай как надо с контролами (самим окном0 что хочешь. Ты пропускаешь мимо ушей все. Можешь каждую лабел двигать в любую нужную сторону, не хватает чего добавь на окно.

SergKis: PS 1. использовать имена лабел b := {|| This.Say_01.Alignment := 'LEFT', This.Say_02.Alignment := 'CENTER', This.Say_03.Alignment := 'RIGHT', ... } 2. режим SET OOP ON из описания в функции SayValueObj(nMode)[pre2] b := {|| MyInit() } STAT FUNC Myinit() LOCAL ow := ThisWindow.Object LOCAL ao := ow:GetObj4Type('LABEL') LOCAL o FOR EACH o IN ao o:Align := 'LEFT' // все налево или другой вариант NEXT RETURN Nil [/pre2]

SergKis: PPS и цвета у лабелов можешь поменять на другие, отличные от базовых

gfilatov2002: Andrey пишет: Мне нужно к левому краю прижимать сообщение. И ещё сталкивался с проблемой, что hmg_Alert() остаётся за другими окнами, т.е. нужен флаг - показывать окно поверх всех окон Это возможно с помощью использования кодоблока bInit, предложенного Сергеем. Рабочий код ниже [pre] _HMG_ModalDialogReturn := 2 cMsg := "Первая строка;;Вторая строка;" + Repl( "-._.", 15 ) + ";;Четвертая строка" SET MSGALERT FONTCOLOR TO NAVY b := {|idx| this.say_01.alignment := "left", ; this.say_03.alignment := "left", ; this.say_04.alignment := "left", ; this.say_06.alignment := "left", ; EraseWindow( this.name ), ; HMG_DrawIcon( this.name, "demo.ico", 30, 30, 48, 48, , .t. ), ; this.topmost := .t.} nK := HMG_Alert( cMsg, {"&Поиск","&Отмена", "&Восстановить"}, "Внимание!", Nil, "alert.ico", 64, {YELLOW, RED, GREEN}, b ) [/pre] Результат на экране (для примера добавлена также замена иконки на лету )

Andrey: gfilatov2002 пишет: Это возможно с помощью использования кодоблока bInit, предложенного Сергеем. Согласен с использованием кодоблока, но тащить такой кодоблок в каждый HMG_Alert() крайне НЕ УДОБНО ! Конечно, можно его в Public объявить и всегда ставить в конце каждого HMG_Alert(). Хотелось бы иметь и альтернативу этому кодоблоку. Кодоблок мне понравился, для индивидуального HMG_Alert() ! Спасибо за него !



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