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




Пост 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 
ПрофильЦитата Ответить
Ответов - 194 , стр: 1 2 3 4 5 6 7 8 9 10 All [только новые]


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




Пост N: 3122
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.04.20 10:31. Заголовок: Andrey пишет А сам т..


Andrey пишет
 цитата:
А сам текст хотелось бы "затолкать" в объект EDITBOX в режиме READONLY
...
Такое решение было бы просто отличным для многих !


Вариант от Pasha более перспективный, т.к. просто вывести ошибки это меньшая часть дела. Надо с ошибки выйти на карточку с ошибкой для исправления. Потому надо сразу все ошибки выводить в TsBrowse и организовывать выход при DblClick и Enter на исправление ошибки (можно и кнопки добавлять) на окно. Тсб может быть с одной колонкой или иметь их несколько.
Пример, как это делать, есть в Advanced\App_OopReport\demo2.prg функция ( использование HMG_Alert() для этого)
STATIC FUNC AgeCard( oWnd, oBrw, oCnl )
+
STATIC FUNC bAgeCard( oWnd, oBrw, oCnl )
...
Вместо тсб можно и EDITBOX прикрутить в bInit блоке кода.

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




Пост N: 1671
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.04.20 11:46. Заголовок: Andrey пишет: А сам..


Andrey пишет:

 цитата:
А сам текст хотелось бы "затолкать" в объект EDITBOX в режиме READONLY


Благодарю за предложение!
Результат отработки функции для вашего примера см. на картинке



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




Пост N: 6615
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.04.20 12:09. Заголовок: Pasha пишет: Я в по..


Pasha пишет:

 цитата:
Я в подобном случае проверяю количество строк, и при превышении некоторого значения вместо alert формирую окно с бровсом и кнопками


Да это тоже вариант, но это не есть хорошо.
Если это ОДНА функция, то такое решение универсальное и самое простое для всех.
В противном случае нужно делать свою отдельную функцию и в коде писать обращение к своей функции.

SergKis пишет:

 цитата:
т.к. просто вывести ошибки это меньшая часть дела. Надо с ошибки выйти на карточку с ошибкой для исправления. Потому надо сразу все ошибки выводить в TsBrowse и организовывать выход при DblClick и Enter на исправление ошибки (можно и кнопки добавлять) на окно. Тсб может быть с одной колонкой или иметь их несколько.



Не надо лишних движений. Юзер вошёл в список квартир, ни фига не заполнил и вышел из списка.
Вот для таких случаев и надо ему выводить КРАСНОЕ ОКНО с ошибками, ни фига не видят.

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




Пост N: 6616
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.04.20 12:12. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Результат отработки функции для вашего примера см. на картинке


А самому пощупать когда можно будет ?

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




Пост N: 1672
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.04.20 12:14. Заголовок: Andrey пишет: самом..


Andrey пишет:

 цитата:
самому пощупать когда можно будет ?


После выхода апрельской сборки в конце месяца

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




Пост N: 6617
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.04.20 12:17. Заголовок: Спасибо ! Буду ждать..


Спасибо ! Буду ждать !
Только текст проверить на кол-во строк.
При 150 строках падала программа... а может и с меньшим кол-вом строк...

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




Пост N: 1673
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.04.20 12:20. Заголовок: Andrey пишет: Тольк..


Andrey пишет:

 цитата:
Только текст проверить на кол-во строк.


Проверял на 1500 строк - работает нормально

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




Пост N: 6618
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.04.20 12:29. Заголовок: Ещё одно уточнение, ..


Ещё одно уточнение, кнопку на окне прижать вправо по месту окончания объекта EDITBOX,
красивей будет !



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




Пост N: 3123
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.04.20 12:34. Заголовок: Andrey пишет Не надо..


Andrey пишет
 цитата:
Не надо лишних движений. Юзер вошёл в список квартир, ни фига не заполнил и вышел из списка.
Вот для таких случаев и надо ему выводить КРАСНОЕ ОКНО с ошибками, ни фига не видят.
...
Только текст проверить на кол-во строк.
При 150 строках падала программа... а может и с меньшим кол-вом строк...


Если они ни фига не видят и не смотрят, то и 150 строк смотреть не будут, но когда нибудь все равно исправлять надо.
Тогда достаточно спросить "В 150 карточках\квартирах ошибки", Распечатать ? Yes \ No
И безразмерных EditBox не надо. На крайняк, есть внешние редакторы с readonly режимами.

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




Пост N: 1674
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.04.20 12:42. Заголовок: Andrey пишет: кнопк..


Andrey пишет:

 цитата:
кнопку на окне прижать вправо


Так подходит



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




Пост N: 3124
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.04.20 12:42. Заголовок: Andrey пишет Ещё одн..


Andrey пишет
 цитата:
Ещё одно уточнение, кнопку на окне прижать вправо по месту окончания объекта EDITBOX,
красивей будет !


Вот, вот, тут и начинается ... у каждого свое.
А почему слева под image пусто, надо editbox под image и на всю ширину окно, но с отступами, а до edit заголовок (справа от image) и т.д. и т.п.

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




Пост N: 3125
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.04.20 12:58. Заголовок: PS Использование TsB..


PS
Использование TsBrowse, вместо editbox - более интересно, на мой взгляд

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




Пост N: 6619
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.04.20 21:25. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Так подходит


Отлично !

SergKis пишет:

 цитата:
Использование TsBrowse, вместо editbox - более интересно, на мой взгляд


Да, если нужен полный журнал этих ошибок для правки.

Но как правило юзер живёт своими измерениями.
Если выводить 5 сточек ошибок, то опять нужен код для учёта.
Вывод сообщения в HMG_Alert(): 10 ошибок + .... и ещё 40 строчек ошибок !
А тут универсальная функция, если не входит список ошибок в границы окна, то EDITBOX со скролингом поможет оценить
юзеру что дофига ошибок, т.е. забыл сделать и юзер вернётся опять в список и исправит что забыл сделать.
Позволяет программисту не думать о кол-ве строк ошибок.


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




Пост N: 3126
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.04.20 22:46. Заголовок: Andrey пишет А тут у..


Andrey пишет
 цитата:
А тут универсальная функция


Editbox универсальности практически не добавляет, а тсб с массивом\алиасом решает до фига.
Наверно половину окон с таблицами заменит, надо только немного из bInit подстроить работу, колонки, header, footer, ...
Если окну добавить режим CHILD к MODAL, то получишь, действительно, универсальное окно. Т.е. задав только (хотя бы в размерах editbox)
 
DEFINE TBROWSE Tsb_Alert AT nY,nX WIDTH nW HEIGHT nH ALIAS xArray CELL
:nHeightHead := 1
END TBROWSE

уже будешь иметь таблицу замену editbox, если xArray многоколоночный массив, то и таблица с колонками, если xAlias это ALIAS области, то можешь в bInit настроить на :LoadFields(). И т.д. настройки ...

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




Пост N: 3127
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.20 09:08. Заголовок: Пример BASIC\Edi..


Пример BASIC\EditBox модифицированный Скрытый текст

Листаем pgDn станицами до индикации Row: 385 Col: 1
Жмем pgDn и получаем индикацию Row: 3 Col: 37 , в просмотре, как бы все правильно.
Но нажав стрелку вверх, пару раз, улетаем в начало строк. Наличие\отсутствие MAXLENGTH не влияет на ситуацию.
Есть, наверно, ограничения на EDITBOX ?
У Андрея, как понимаю, происходит чтение файла и показ в HMG_Alert() и возникнут вопросики в связи с EDITBOX.
Вот вырезка с его тестового примера
 
cText := ""
FOR nI := 1 TO 2150
cText += "Квартира: " + HB_NtoS(nI) + " не заполнен тариф оплаты ! . ;"
NEXT
...
cMsg := cText

// высчитываем размерность текста
cMsg := AtRepl( ";", cMsg, CRLF )
cMsg := StrTran(cMsg, CRLF, chr(10)) // если текст кривой
cMsg := StrTran(cMsg, chr(10), CRLF)
...
@ nG, nCMemo EDITBOX Edit_Memo WIDTH nWMemo HEIGHT nHMemo ;
VALUE cMsg READONLY ;
BACKCOLOR aEBoxBack FONTCOLOR aFontColor
...

т.е. HSCROLL назначен, но не работает, на контроле он присутствует, но без ползунка и включается перенос\искажение текста по разным строкам.
Т.е. в начале ok! в конце ерунда.
 
Квартира: 1 не заполнен тариф оплаты ! .
Квартира: 2 не заполнен тариф оплаты ! .

Квартира: 3 не заполнен тариф оплаты ! .
Квартира: 4 не заполнен тариф оплаты ! .

Квартира: 5 не заполнен тариф оплаты ! .
Квартира: 6 не заполнен тариф оплаты ! .

Квартира: 7 не заполнен тариф оплаты ! .
Квартира: 8 не заполнен тариф оплаты ! .
...
Квартира: 2133 не заполнен тариф оплаты ! .
Квартира: 2134 не
заполнен тариф оплаты ! .
Квартира: 2135 не заполнен тариф оплаты ! .
Квартира: 2136
не заполнен тариф оплаты ! .
Квартира: 2137 не заполнен тариф оплаты ! .
Квартира:
2138 не заполнен тариф оплаты ! .
Квартира: 2139 не заполнен тариф оплаты ! .

Квартира: 2140 не заполнен тариф оплаты ! .
Квартира: 2141 не заполнен тариф оплаты !
.
Квартира: 2142 не заполнен тариф оплаты ! .
Квартира: 2143 не заполнен тариф оплаты !
.
Квартира: 2144 не заполнен тариф оплаты ! .
Квартира: 2145 не заполнен тариф оплаты
! .
Квартира: 2146 не заполнен тариф оплаты ! .
Квартира: 2147 не заполнен тариф
оплаты ! .
Квартира: 2148 не заполнен тариф оплаты ! .
Квартира: 2149 не заполнен
тариф оплаты ! .
Квартира: 2150 не заполнен тариф оплаты ! .



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




Пост N: 3128
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.04.20 09:13. Заголовок: PS Размер width у ED..


PS
Размер width у EDITBOX достаточный для показа любой всей строки из показанных, справа места от CRLF много

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




Пост N: 6648
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.05.20 08:57. Заголовок: Всем привет ! Почем..


Всем привет !

Почему по коду идёт вот такая ошибка:
Error MGERROR/0 Only Panel windows can be defined inside a DEFINE WINDOW...END WINDOW structure. Program terminated.
--------------------------------- Stack Trace ---------------------------------
Called from MSGMINIGUIERROR(100) in module: h_error.prg
Called from _DEFINEWINDOW(150) in module: h_windows.prg
Called from WAITWINDOW(2742) in module: h_windows.prg
Called from CREATEDATOSPRND31(783) in module: Tsb_demo7.prg


При вызове вот этой функции WaitWindow( 'Загрузка базы ...', .T. ) // open the wait window


И можно это малюсенькое окошечко сделать крупней ?
Юзера на своих мониторах просто не замечают.

Может через параметр передавать хотя бы:
WaitWindow( 'Загрузка базы ...', .T. , 500,200,RED,"DejaVu Sans Mono",16,YELLOW)
где RED - цвет фона формы, YELLOW-цвет текста формы

И будет юзеру счастье ....

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




Пост N: 6767
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.07.20 09:03. Заголовок: Последняя версия Мин..


Последняя версия МиниГуи.
Использую ТСБ, в нём:
 
// удаление/восстановление записи разрешена
// кнопка для удаления, будет работать и на восстановление
:SetDeleteMode( .T., .F., {|| AlertYesNo(iif((oBrw:cAlias)->(Deleted()), "Восстановить", "Удалить") + ;
" запись в таблице ?", "Подтверждение") } )

по клавише DEL вызов функции в которой:
   lDelete := (oBrw:cAlias)->(Deleted()) 
.....
IF !lDelete
cMsg := "1) ....;;"
cMsg += "Вы действительно хотите удалить запись в таблице ?"
aColors := _SetMsgAlertColors( {179, 30, 173} )
IF !AlertYesNo( cMsg, "Выбор действия", , "Cancel64x1", 64 , {RED,LGREEN} )
RETURN NIL
ENDIF
SET MSGALERT BACKCOLOR TO aColors
ENDIF

// встроенный метод для удаления текущей записи
lChange := oBrw:DeleteRow(.F., .T.)
....

После вызова первого 1) - AlertYesNo() если нажать ДА, то происходит вылет:
Error BASE/1132 Переполнение массива: Неверное количество аргументов Args: [1] = A { ... } length: 2 [2] = N 3 
--------------------------------- Stack Trace ---------------------------------
Called from EVENTS(337) in module: h_events.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1514) in module: h_windows.prg
Called from HMG_ALERT(176) in module: h_alert.prg
Called from _ALERT(115) in module: h_alert.prg
Called from ALERTYESNO(20) in module: h_alert.prg
Called from (b)MYSETEDITTSB(778) in module: Forma_D40setup.prg
Called from TSBROWSE:DELETEROW(3102) in module: h_tbrowse.prg
Called from MYRECNODELETERECOVER(1277) in module: Forma_D40setup.prg
Called from (b)FORM_D40SETUP(272) in module: Forma_D40setup.prg
Called from DO_CONTROLEVENTPROCEDURE(58) in module: h_objmisc.prg
Called from TWNDDATA:DOEVENT(729) in module: h_objects.prg
Called from DO_ONWNDLAUNCH(240) in module: h_objmisc.prg
Called from (b)INIT(123) in module: h_init.prg
Called from EVENTS(1224) in module: h_events.prg
Called from DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1514) in module: h_windows.prg

Строка 176 в модуле h_alert.prg
ACTIVATE WINDOW ( cForm )
Почему ? Что не хватает ? Потерялось окно ?
P.S. Потом идет вылет на любом AlertXXXX

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




Пост N: 7217
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 26.07.20 14:43. Заголовок: А если без ТСБ , тож..


А если без ТСБ , тоже глючит в каком нибудь простом примере ?

PS
Чую косяк у тебя где то.......

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




Пост N: 6768
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.07.20 15:53. Заголовок: Dima пишет: А если ..


Dima пишет:

 цитата:
А если без ТСБ , тоже глючит в каком нибудь простом примере ?


Сделал на простом примере, не вылетает. НО !!!
Потом в другом AlertYesNo() вместо текста ЧЕРНЫЙ КВАДРАТ !
Вот ссылка - https://drive.google.com/file/d/1Qtbatqdha93BUirBsHIj05FL82nG8pxZ/view?usp=sharing
Значит при использовании в блоке кода вылетит точно !

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

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