On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 6069
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.10.18 17:25. Заголовок: MsgInfo(), MsgStop(), MsgExclamation(), MsgDebug()


Уже скоро 2019 год будет, а эти функции до сих пор неизменны.
Экраны большие у пользователей уже давно.
Замучили юзера вопросом, а побольше шрифт можно сделать для этих окон ?
A то читать приходиться через лупу.
Настолько мелкий шрифт в этих сообщениях для больших экранов.

Можно ли установить для этих окон при запуске программы
РАЗМЕР фонта, ну и до кучи сам фонт ?

Типа:
SET MSGFUNCT FONT TO cFont, nFontSize  


Как есть команда:
SET FONT TO cFont, nFontSize 

Ну и до кучи задать другой размер иконки и картинки:
SET MSGFUNCT SIZE 256  // или 48, 64, 72, 96, 128 
SET MSGINFO SIZE 64 ICO "INFO64.ICO"

Тогда за иконку отвечать будет сам программист.
Нет иконки в ресурсах, и нет в окошке иконки.

И цвета окошек тоже:
SET MSGINFO  BACKCOLOR aDim1 FONTCOLOR aDim2 
SET MSGSTOP BACKCOLOR aDim1 FONTCOLOR aDim2
SET MSGEXCL BACKCOLOR aDim1 FONTCOLOR aDim2
SET MSGDEBUG BACKCOLOR aDim1 FONTCOLOR aDim2

Если это нельзя сделать для этих функций и не хочется увеличивать размер ресурсов
для текущей версии МиниГуи, то хотелось бы иметь дополнительную библиотеку
MiniguiExt.lib и файл ресурсов miniguiExt.res

Т.е. сделать доп.функции:
Msg2Info(), Msg2Stop(), Msg2Exclamation(), Msg2Debug() 

Оставить обычный синтаксис и типа такого:
SET MSG2FUNCT FONT TO cFont, nFontSize   
SET MS2GINFO SIZE 64 ICO "INFO64.ICO"

Msg2Info( cMsg , "Инфо", ......, cFont, nFontSize, 64, "INFO64.ICO", aDim1, aDim2 )

------------------------------------------------------------------
Надоели танцы с бубнами, чтобы сменить иконку в этих функциях !!!
Сначала в ресурсном файле объявить:
#define MSGINFO 1005
Потом в prg-модуле нужно ставить:
#define MSGINFO 1005
и ещё потом уже где тебе нужно:
MsgInfo( cMsg , "Инфо", MSGINFO, .F. )

А по простому нельзя сделать ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 103 , стр: 1 2 3 4 5 6 All [только новые]


постоянный участник




Пост N: 6247
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.04.19 18:29. Заголовок: SergKis пишет: У те..


SergKis пишет:

 цитата:
У тебя ТВОЙ массив с текстами, работай от его длины
AEval(aTxt, {|ct,nt| ct := 'Say_'+strzero(nt,2), This.&(ct).Aligment :='Left' })



Что-то не работает....
Сделал так:
   aTxt := HB_ATokens(cMsg, ";", .F., .F.) 
cSay := ""
FOR nI := 1 TO LEN(aTxt)
cSay += "this.say_" + strzero(nI,2) + ".Aligment := 'Left' "
cSay += IIF( nI == LEN(aTxt), "" , "," )
NEXT
bInit := {|| cSay , this.topmost := .t. }

Проще переключатель сделать, типа SET MSGALERT TEXT TO LEFT/CENTER ....

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1489
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 12.04.19 19:44. Заголовок: Andrey пишет: Что-т..


Andrey пишет:

 цитата:
Что-то не работает


Andrey
Не парься, в следующей версии hmg_Alert() выравнивание влево будет делаться по умолчанию



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2340
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.04.19 11:04. Заголовок: Andrey пишет Что-то ..


Andrey пишет
 цитата:
Что-то не работает....


Как ты это делаешь ?
Все работает. Пример https://TransFiles.ru/jcgdf

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2341
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.04.19 12:25. Заголовок: gfilatov2002 Если у..


gfilatov2002
Если убрать имя окна oDlg и добавить форм. динамически имени окна, то можно несколько раз исп. hmg_alert вызов.
Пример и текст h_alert.prg тут https://TransFiles.ru/8w8g8
четвертая кнопка на main (Align = 'Left') + на кнопку "Повтор" ( Btn_01, Align = 'Center' ) подвешен вызов еще одной hmg_alert

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1490
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.04.19 12:51. Заголовок: SergKis пишет: доба..


SergKis пишет:

 цитата:
добавить форм. динамически имени окна


Благодарю за помощь
Обязательно использую эту возможность

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2342
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.04.19 14:15. Заголовок: gfilatov2002 Еще на..


gfilatov2002
Еще надо для LABEL в hmg_alert добавить VCENTERALIGN
Если сейчас для строки LABEL поставить BACKCOLOR отличный от окна, то будет вид не очень ...

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1491
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.04.19 14:43. Заголовок: SergKis пишет: для ..


SergKis пишет:

 цитата:
для LABEL в hmg_alert добавить VCENTERALIGN


Сделал

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6248
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.04.19 15:50. Заголовок: SergKis пишет: Как ..


SergKis пишет:

 цитата:
Как ты это делаешь ?
Все работает. Пример


Спасибо !
Я не так делал !

Вот сделал окно для ошибки вылета, теперь у меня свои окошки:


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6291
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.05.19 20:02. Заголовок: Всем привет ! Если ..


Всем привет !

Если самая длинная строка не помещается на окне hmg_Alert(), то она обрывается и её не видно !
Надо бы сделать проверку на длину строки и выводить остаток строки в hmg_Alert().
Как это сделать ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2570
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.05.19 21:32. Заголовок: Andrey пишет Как это..


Andrey пишет
 цитата:
Как это сделать ?


Длину строки знаешь
Клиентскую часть и размеры окна тоже
В bInit все что надо делай - вычисляй, прибавляй, меняй

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6293
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.05.19 21:59. Заголовок: SergKis пишет: Длин..


SergKis пишет:

 цитата:
В bInit все что надо делай - вычисляй, прибавляй, меняй


Но это опять ерунда выходит.
Вместо того чтобы поставить в код hmg_Alert(), делаем опять через bInit ...

Вот этот кусочек кода НУЖНО вставить в hmg_Alert() и функция станет универсальной.
   LOCAL nI, nJ, iMax, aDim, cText, nTabSize := 8, lWrap := .T. 
......
cMsg := AtRepl( ";", cMsg, CRLF )
aDim := HB_ATokens(cMsg,CRLF,.F.,.F.)
cMsg := ""
FOR nI := 1 TO LEN(aDim)
cText := aDim[nI]
IF LEN(cText) > 70
iMax := MLCount( cText, 70, nTabSize, lWrap )
FOR nJ := 1 TO iMax
cMsg += MemoLine( cText, 70, nJ, nTabSize, lWrap ) + CRLF
NEXT
ELSE
cMsg += cText + CRLF
ENDIF
NEXT
....
cIcoRes := "iWarning64"
HMG_Alert( cMsg, {"&Продолжить"}, cTitle, Nil, cIcoRes, nIcoSize, { aButtColor } , bInit )

Может что и не правильно я написал, поправьте тогда меня.
А так приходиться вставлять одинаковые куски кода по своим функциям, где вызываю hmg_Alert().
Дубляж кода постоянно не хочется делать.

SergKis пишет:

 цитата:

Длину строки знаешь
Клиентскую часть и размеры окна тоже


Длину строки на моём шрифте 18 - знаю. А для другого фонта вычислять нужно.
И чем ограничена ширина окна - я не знаю....
Исходник не смотрел пока.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2571
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.05.19 00:50. Заголовок: Andrey пишет Вот это..


Andrey пишет
 цитата:
Вот этот кусочек кода НУЖНО вставить в hmg_Alert() и функция станет универсальной.


Не будет универсальной, по height может выходить за пределы экрана, фонт увеличишь опять не попадешь (раньше попадало), надо скролы ставить для прокрутки. И т.д. и т.п. Какие отступы, как полно заполнять окном экран ?

 цитата:
И чем ограничена ширина окна - я не знаю....


Шутишь ? Про десктоп забыл ?

 цитата:
А так приходиться вставлять одинаковые куски кода по своим функциям, где вызываю hmg_Alert().


Уже писал, повторю (выше в теме и пример был), напиши свою с 1ым блоком кода на базе hmg_Alert(), назови My_Alert() и используй. Фонт ставь от кол-ва строк в массиве и мах. ширины строки в нем, а не в лоб 18 и все. Может на 14 все поместится, на 18 нет.
На мой взгляд, свою роль hmg_Alert() и производные от нее выполняют нормально.
Расширение возможностей, пожалуйста, через bInit, что угодно делай, хоть контролы добавляй.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6328
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.07.19 16:27. Заголовок: Всем привет ! Сделал..


Всем привет !
Сделал свою функцию MG_Stop(), MG_Info() и т.д. на базе hmg_Alert().
Всё хорошо, но иногда происходит сбой...
MsgStop() работает, а MG_Stop() вылетает с ошибкой:
Error MGERROR/0 ACTIVATE WINDOW: activate windows within an ON RELEASE window procedure is not allowed. Program terminated.
--------------------------------- Stack Trace ---------------------------------
Called from MSGMINIGUIERROR(100) in module: h_error.prg
Called from _ACTIVATEWINDOW(1294) in module: h_windows.prg
Called from HMG_ALERT(167) in module: h_alert.prg
Called from MG_STOP(59) in module: util_Alert.prg

Почему ? Что нужно сделать, чтобы не вылетало ?
МиниГуи последний.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2633
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.07.19 19:44. Заголовок: Andrey пишет Почему ..


Andrey пишет
 цитата:
Почему ?


Активировать окна в ON RELEASE не разрешено, так вроде переводится.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6329
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.07.19 19:50. Заголовок: SergKis пишет: Акти..


SergKis пишет:

 цитата:
Активировать окна в ON RELEASE не разрешено, так вроде переводится.


А почему тогда MsgStop работает нормально ?
Как сделать, чтобы hmg_Alert() тоже заработал в этом режиме ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2635
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.07.19 19:56. Заголовок: Andrey пишет А почем..


Andrey пишет
 цитата:
А почему тогда MsgStop работает нормально ?


Это winapi.

 цитата:
Как сделать, чтобы hmg_Alert() тоже заработал в этом режиме ?


Это hmg, т.е. DEFINE WINDOW ... END WINDOW
Писать, наверно, по другому.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6334
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.07.19 14:04. Заголовок: Всем привет! Опять о..


Всем привет!
Опять очередная загадка...
В таблице клавишей DEL удаляю цифры. Происходит вылет по HMG_ALERT() !
Вот ошибка:
Error MGERROR/0 Control: Btn_01 Of Form_AYC Not defined. Program terminated.
--------------------------------- Stack Trace ---------------------------------
Called from MSGMINIGUIERROR(100) in module: h_error.prg
Called from SETPROPERTY(3792) in module: h_controlmisc.prg
Called from (b)MG_YESNO(137) in module: util_Alert.prg
Called from DO_WINDOWEVENTPROCEDURE(82) in module: h_objmisc.prg
Called from FILLDLG(342) in module: h_alert.prg
Called from (b)HMG_ALERT(167) in module: h_alert.prg
Called from DO_WINDOWEVENTPROCEDURE(82) in module: h_objmisc.prg
Called from _ACTIVATEWINDOW(1314) in module: h_windows.prg
Called from HMG_ALERT(167) in module: h_alert.prg
Called from MG_YESNO(147) in module: util_Alert.prg
Called from AYC_DELREC(1975) in module: form_AbonYearCalc.prg
Called from (b)TAB_AYC(793) in module: form_AbonYearCalc.prg
Called from _DOCONTROLEVENTPROCEDURE(1865) in module: h_windows.prg
Called from EVENTS(699) in module: h_events.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1499) in module: h_windows.prg


MG_YESNO() моя функция для HMG_ALERT(), вот код:
FUNCTION MG_YesNo( cMsg, cTitle, cIcoRes, nIcoSize, bInit, aBackColor, aFontColor )  
LOCAL aButton := {" &Да "," &Нет "}
................
DEFAULT cTitle := "Внимание!" , bInit := {|| this.topmost := .t. ,;
this.Btn_01.Fontcolor := BLACK ,;
this.Btn_02.Fontcolor := BLACK } // строка 137

Почему ?
Если цифры вбивать, то всё нормально.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6335
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.07.19 14:20. Заголовок: Я понял почему. Григ..


Я понял почему.
Григорий давно уже мне помогал делать и сделал на окно обработку кнопок:
       // --------------- назначение клавиш -------------------     
on key INSERT action AYC_InsRec(Int(Val(aTabName[ GetProperty(_HMG_ThisFormName,"Tab_1","Value") ])),"Set_Columns" + hb_ntos(GetProperty(_HMG_ThisFormName,"Tab_1","Value")))
on key DELETE action AYC_DelRec(Int(Val(aTabName[ GetProperty(_HMG_ThisFormName,"Tab_1","Value") ])),"Set_Columns" + hb_ntos(GetProperty(_HMG_ThisFormName,"Tab_1","Value")))

При редактирование таблицы при нажатии клавиши DEL происходит вызов на функцию AYC_DelRec().
Как исправить данную коллизию ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2640
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.07.19 15:04. Заголовок: Andrey пишет При ред..


Andrey пишет
 цитата:
При редактирование таблицы при нажатии клавиши DEL происходит вызов на функцию AYC_DelRec()


 
1. Делал проверку наличия кнопок на форме
bInit := {|cw,ab| cw := This.Name, ab := {'Btn_01', 'Btn_02', 'Btn_03', 'Btn_04'}, this.topmost := .t., ;
AEval(ab, {|cb| iif( _IsControldefined(cb, cw), SetProperty(cw, cb, 'FONTCOLOR', BLACK), ) })

2. Перенес назначение кнопок с окна на таблицу (держал бы ее всегда в фокусе)
oBrw:UserKeys( VK_INSERT, {|ob| _wPost(1, ob) } )
oBrw:UserKeys( VK_DELETE, {|ob| _wPost(2, ob) } )

3. Сохранять\восстанавливать клавиши и блоки кода, можно делать, но это не предлагаю, т.к. лично мне не он нравится.




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 6336
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.07.19 15:29. Заголовок: SergKis пишет: 3. ..


SergKis пишет:

 цитата:
3. Сохранять\восстанавливать клавиши и блоки кода, можно делать, но это не предлагаю, т.к. лично мне не он нравится.


Да это более простой метод.
Как считать какая обработка была назначена на клавишу ?
Можно ее считать, а потом восстановить ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 103 , стр: 1 2 3 4 5 6 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 16
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет