Автор | Сообщение |
|
| постоянный участник
|
Пост 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. ) А по простому нельзя сделать ?
| |
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
9
10
All
[см. все]
|
|
|
| постоянный участник
|
Пост N: 6769
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.07.20 16:31. Заголовок: Нашёл при каком вари..
Нашёл при каком варианте сбоит: aColors := _SetMsgAlertColors( {189, 30, 73} ) SET MSGALERT FONTCOLOR TO YELLOW IF !AlertYesNo( cMsg, "Выбор действия" , , "iCancel64x1", 64 , {RED,LGREEN} ) SET MSGALERT BACKCOLOR TO aColors SET MSGALERT FONTCOLOR TO BLACK RETURN NIL ENDIF SET MSGALERT BACKCOLOR TO aColors SET MSGALERT FONTCOLOR TO BLACK Повторный вызов любого AlertXXXX - будет сваливаться ... Кодировать неудобно (зеленым цветом дублирующий код), цвет КРАСНЫЙ окна делаешь для юзера, чтобы впечатлился. Предлагал же заталкивать цвет фона окна и цвет текста сообщения - параметром последним в этой функции. Почему ломается код при использовании _SetMsgAlertColors() ?
| |
|
|
| постоянный участник
|
Пост N: 3290
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.07.20 17:37. Заголовок: Andrey Глянь исходн..
Andrey Глянь исходник *-----------------------------------------------------------------------------* FUNCTION _SetMsgAlertColors( aBackClr, aFontClr ) *-----------------------------------------------------------------------------* LOCAL aOldClrs := { aBackColor, aFontColor } IF aBackClr != NIL aBackColor := aBackClr ENDIF IF aFontClr != NIL aFontColor := aFontClr ENDIF RETURN aOldClrs и что ты проделываешь aColors := _SetMsgAlertColors( {189, 30, 73} ) и SET MSGALERT BACKCOLOR TO aColors SET MSGALERT FONTCOLOR TO BLACK как говорится, "найдите разницу" ?
| |
|
|
| постоянный участник
|
Пост N: 6771
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.07.20 10:36. Заголовок: SergKis пишет: как ..
SergKis пишет: цитата: | как говорится, "найдите разницу" ? |
| Опять заработался я... Спасибо за подсказку ! Оказывается можно и так делать: SET MSGALERT BACKCOLOR TO {189, 30, 73} STOREIN aColors SET MSGALERT FONTCOLOR TO YELLOW IF !AlertYesNo( cMsg2, "Выбор действия" ) SET MSGALERT BACKCOLOR TO aColors[1] SET MSGALERT FONTCOLOR TO aColors[2] RETURN NIL ENDIF SET MSGALERT BACKCOLOR TO aColors[1] SET MSGALERT FONTCOLOR TO aColors[2]
| |
|
|
| |
Пост N: 263
Зарегистрирован: 05.11.05
|
|
Отправлено: 01.08.20 15:48. Заголовок: А в AlertYesNo() зву..
А в AlertYesNo() звука нет? Если в других подобных функциях есть звук и возможность его отключения, мне кажется было бы логично везде это сделать.
| |
|
|
| постоянный участник
|
Пост N: 3303
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.08.20 16:43. Заголовок: rvu пишет было бы ло..
rvu пишет цитата: | было бы логично везде это сделать. |
| По мне, звук вообще отключить (у клиента орет и все шарахаются, т.к. после виде всегда громкость стоит). Звук есть только в ф-ях 1. AlertExclamation() - PlayExclamation() 2. AlertInfo() - PlayAsterisk() 3. AlertStop() - PlayHand() Добавить звук в ф-ии легко, в AlertYesNo( Message, Title, RevertDefault, Icon, nSize, aColors, lTopMost, bInit ) ltkftnt bInit := {|| PlayHand() } или bInit := {|| TONE(3600) }
| |
|
|
| |
Пост N: 264
Зарегистрирован: 05.11.05
|
|
Отправлено: 01.08.20 18:25. Заголовок: SergKis пишет: По м..
SergKis пишет: цитата: | По мне, звук вообще отключить |
| Я по умолчанию отключаю. Но вдруг кому нравится.
| |
|
|
| |
Пост N: 310
Зарегистрирован: 05.11.05
|
|
Отправлено: 11.03.21 11:11. Заголовок: В программе выставле..
В программе выставлена кодировка 1251. AlertYesNo() пишет: Да, Нет. AlertRetryCancel: Retry, Cancel. Наверное, где-то не включили нужные слова в русскую локализацию. Или так и задумано? А можно вообще свои слова вставлять в эти функции? Было бы удобно.
| |
|
|
| постоянный участник
|
Пост N: 3600
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.03.21 11:32. Заголовок: rvu проверьте, что д..
rvu проверьте, что дает после SET LANGUAGE TO RUSSIAN ? _HMG_LANG_ID если не "RU", то _HMG_LANG_ID := "RU" ; InitMessages() // см. h_init.prg + *-----------------------------------------------------------------------------* FUNCTION AlertOkCancel ( Message, Title, nDefaultButton, Icon, nSize, aColors, lTopMost, bInit ) *-----------------------------------------------------------------------------* LOCAL aOptions := { _HMG_BRWLangButton [4], _HMG_BRWLangButton [3] } // можете поменять на свои тексты RETURN ( _Alert( Message, aOptions, Title, , hb_defaultValue( nDefaultButton, 1 ), Icon, nSize, aColors, lTopMost, bInit, .T. ) == IDOK )
| |
|
|
| |
Пост N: 311
Зарегистрирован: 05.11.05
|
|
Отправлено: 11.03.21 11:47. Заголовок: SergKis пишет: пров..
SergKis пишет: цитата: | проверьте, что дает после SET LANGUAGE TO RUSSIAN ? _HMG_LANG_ID если не "RU" |
| Не "RU". Интересно, а почему? То _HMG_LANG_ID := "RU" ; InitMessages() - Теперь "RU". Но AlertRetryCancel все равно: Retry, Cancel.
| |
|
|
| постоянный участник
|
Пост N: 3601
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.03.21 12:38. Заголовок: rvu смотрите InitMe..
rvu смотрите InitMessage(), сначала ставятся en тексты, потом от _HMG_LANG_ID == "RU", возможно не все переведено делайте t1 := _HMG_BRWLangButton [4] t2 := _HMG_BRWLangButton [3] _HMG_BRWLangButton [4] := "текст 1" _HMG_BRWLangButton [3] := "текст 1" AlertYsNo(...) _HMG_BRWLangButton [4] := t1 _HMG_BRWLangButton [3] := t2 или замените не устраивающие тексты в _HMG_... массивах на нужные (свою Ru_InitMessages() заведите) напишите свою, Андрей написал и использует везде Скрытый текст
/////////////////////////////////////////////////////////////////////////// Function MG_YesNo(cMsg, cTitle, cIcoRes, nIcoSize, aWinColor, cParentWin, aBtnMsg, aBtnColor) LOCAL hParentWin, nI, lRet := .F. DEFAULT aBtnColor := { LGREEN , {189,30,73} } DEFAULT aBtnMsg := {"&Продолжить", "&Отмена"} DEFAULT cParentWin := _HMG_ThisFormName DEFAULT cIcoRes := "iSmile64", nIcoSize := 64 DEFAULT cTitle := "Ваш выбор" DEFAULT aWinColor := { { 63, 108, 25 } , WHITE } IF ! empty(cParentWin) .and. _IsWindowDefined( cParentWin ) hParentWin := GetFormHandle( cParentWin ) ENDIF IF ! empty( hParentWin ) hParentWin := GetFormHandle( cParentWin ) Darken2Open(hParentWin) // Затенение на форме ENDIF SET MSGALERT FONTCOLOR TO aWinColor[2] SET MSGALERT BACKCOLOR TO aWinColor[1] _HMG_ModalDialogReturn := 2 nI := HMG_Alert( cMsg, aBtnMsg, cTitle, Nil, cIcoRes, nIcoSize, aBtnColor ) IF nI == 1 lRet := .T. ENDIF _HMG_ModalDialogReturn := 1 IF ! empty( hParentWin ) Darken2Close(hParentWin) // Затенение на форме ENDIF RETURN lRet
| цитата: | Если хочешь сделать что-то хорошо, сделай это сам |
|
| |
|
|
| |
Пост N: 312
Зарегистрирован: 05.11.05
|
|
Отправлено: 11.03.21 13:18. Заголовок: SergKis пишет: Если..
SergKis пишет: цитата: | Если хочешь сделать что-то хорошо, сделай это сам |
| В идеале — да, но всё самому сделать невозможно. За советы спасибо!
| |
|
|
|
| постоянный участник
|
Пост N: 7229
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.03.22 14:06. Заголовок: Последняя версия Мин..
Последняя версия МиниГуи. Система Win10 ! При вызове вот этой функции: WaitWindow( 'Загрузка программы ... ' + GetExeFileName(), .T. ) Получаю окно без надписи ! Пустое окно ! Как у меня было на Win8.1 Почему ? Если сделать WaitWindow( 'Загрузка программы ... ', .T. ) то надпись есть. А как сделать надпись в 2-3 строчки ?
| |
|
|
| постоянный участник
|
Пост N: 4091
Зарегистрирован: 17.02.12
|
|
Отправлено: 04.03.22 22:04. Заголовок: Andrey пишет Получаю..
Andrey пишет цитата: | Получаю окно без надписи ! Пустое окно ! Как у меня было на Win8.1 Почему ? Если сделать WaitWindow( 'Загрузка программы ... ', .T. ) то надпись есть. |
| Ширина окна ставится SetProperty( cFormName, "Width", Min( 2 * nWidth, Min( GetDesktopWidth(), 800 ) ) ) Если текст шириной больше ширины окна, то вкл. timer прокрутки текста в label Наверно, тут не клеится с ним и прокруткой. Если текст короткий, то все работает как надо. цитата: | А как сделать надпись в 2-3 строчки ? |
| Как то так. Пример Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #include "hmg.ch" REQUEST DBFCDX, DBFFPT REQUEST HB_CODEPAGE_UTF8, HB_CODEPAGE_RU866, HB_CODEPAGE_RU1251 *-----------------------------------------------------------------------------* FUNCTION Main() *-----------------------------------------------------------------------------* LOCAL cNam := hb_FNameName( hb_ProgName() ) LOCAL cForm SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN RddSetDefault("DBFCDX") SET CENTURY ON SET DATE GERMAN SET DELETED ON SET EXCLUSIVE ON SET EPOCH TO 2000 SET AUTOPEN OFF SET EXACT ON SET SOFTSEEK ON SET NAVIGATION EXTENDED SET FONT TO "Arial", 14 *-------------------------------- SET OOP ON *-------------------------------- // Первый тест - строка cForm := ToWaitWindow( "... Запуск программы "+cNam+" ... " ) InkeyGui(5 * 1000 ) ToWaitWindow( "!!!!!!!!!!!!!!!!!!!!" ) InkeyGui(5 * 1000 ) SetProperty(cForm, "Message" , "Value", "@@@@@@@@@@@@@@@") InkeyGui(5 * 1000 ) ToWaitWindow() InkeyGui( 1000 ) // Второй тест - массив cForm := ToWaitWindow( {"... Запуск программы "+cNam+" ... ", ; "Тестируем массив в окне. Строка 1" , ; "Тестируем массив в окне. Строка 2"} ) SET WINDOW THIS TO cForm This.Message.FontColor := BLUE This.Message.FontBold := .T. SET WINDOW THIS TO InkeyGui(10 * 1000 ) ToWaitWindow( {upper("... Запуск программы "+cNam+" ... "), ; "Замена строки 1 в окне. ****** 1 *", ; "Замена строки 2 в окне. ###### 2 #"} ) InkeyGui(10 * 1000 ) SetProperty(cForm, "Message" , "Value", "@@@@@@@@@@@@@@@@@@@@") SetProperty(cForm, "Message2", "Value", "********************") SetProperty(cForm, "Message3", "Value", "####################") InkeyGui(10 * 1000 ) ToWaitWindow() InkeyGui( 1000 ) */ RETURN FUNCTION ToWaitWindow( uMsg ) // Режим NOWAIT для Activate LOCAL cForm := "_HMG_CHILDWAITWINDOW" LOCAL lDef, oDlu, cMsg, cFont, nSize LOCAL nI, nY, nX, nW, nH, nS, cN IF pCount() == 0 WaitWindow() IF Empty( _HMG_MainHandle ) // нет MAIN окна SET WINDOW MAIN ON ENDIF RETURN cForm ELSEIF _IsWindowDefined( cForm ) // вывод на окно IF hb_IsChar( uMsg ) .and. ";" $ uMsg uMsg := hb_ATokens( uMsg, ";" ) ELSEIF hb_IsChar( uMsg ) uMsg := { uMsg } ENDIF IF ! hb_IsArray( uMsg ) ; RETURN cForm ENDIF SET WINDOW THIS TO cForm FOR nI := 1 TO Len( uMsg ) cN := "Message" IF nI > 1 ; cN += hb_ntos(nI) ENDIF IF _IsControlDefined( cN, cForm ) This.&(cN).Value := uMsg[ nI ] ENDIF NEXT SET WINDOW THIS TO RETURN cForm ENDIF cFont := App.FontName nSize := App.FontSize oDlu := oDlu4Font( nSize ) IF !_IsWindowDefined( cForm ) // создание окна IF hb_IsChar( uMsg ) .and. ";" $ uMsg uMsg := hb_ATokens( uMsg, ";" ) ENDIF IF hb_IsChar( uMsg ) cMsg := uMsg ELSEIF hb_IsArray( uMsg ) .and. Len( uMsg ) > 0 cMsg := uMsg[1] ELSEIF hb_IsNumeric( uMsg ) cMsg := Repl(" ", uMsg) ELSE cMsg := Repl(" ", 50) ENDIF IF Empty( _HMG_MainHandle ) // нет MAIN окна SET WINDOW MAIN OFF ENDIF WaitWindow( cMsg, .T. ) IF _IsWindowDefined( cForm ) SET WINDOW THIS TO cForm IF hb_IsArray( uMsg ) .and. Len( uMsg ) > 0 nX := This.Message.Col nW := This.Message.Width nH := oDlu:H1 This.Message.Height := nH This.Message.FontName := cFont This.Message.FontSize := nSize nS := This.Message.Row * 3 nY := nS + This.Message.Height FOR nI := 2 TO Len( uMsg ) cN := "Message"+hb_ntos(nI) @ nY, nX LABEL &cN OF &cForm WIDTH nW HEIGHT nH ; VALUE uMsg[ nI ] FONT cFont SIZE nSize ; BACKCOLOR This.Message.BackColor ; CENTERALIGN TRANSPARENT nY := This.&(cN).Row + This.&(cN).Height nS += This.&(cN).Height NEXT ThisWindow.Height := ThisWindow.Height + nS //- This.Message.Row ELSEIF hb_IsChar( uMsg ) nH := oDlu:H1 This.Message.Height := nH This.Message.FontName := cFont This.Message.FontSize := nSize This.Message.Value := uMsg ENDIF SET WINDOW THIS TO ENDIF ENDIF RETURN cForm
|
| |
|
|
| постоянный участник
|
Пост N: 4092
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.03.22 15:48. Заголовок: Поправил ф-ю WaitWin..
Поправил ф-ю WaitWindow() Скрытый текст
*-----------------------------------------------------------------------------* FUNCTION WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont ) *-----------------------------------------------------------------------------* LOCAL cFormName := "_HMG_CHILDWAITWINDOW" LOCAL lDefined := _IsWindowDefined( cFormName ) LOCAL lIsModal, nHeight, nY, nX // BK LOCAL lWidth := Empty( nWidth ) //LOCAL nWidth IF PCount() == 0 IF lDefined nCtEfeito := 0 cDescEfeito := "" DoMethod( cFormName, "Release" ) ENDIF ELSE hb_default( @lNoWait, .F. ) IF lDefined IF lNoWait SetProperty( cFormName, "Message", "Value", cMessage ) ENDIF ELSE lIsModal := _HMG_IsModalActive Default nSize := 10 // BK Default nHeight := nSize + 8 IF lNoWait _HMG_IsModalActive := .F. DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD ELSE DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL ENDIF IF lWidth // BK nWidth := GetTextWidth( , cMessage ) nWidth := Min( 2 * nWidth, Min( GetDesktopWidth(), 800 ) ) ENDIF nY := iif( IsVistaOrLater(), 4, 7 ) nX := 12 //SetProperty( cFormName, "Width", Min( 2 * nWidth, Min( GetDesktopWidth(), 800 ) ) ) SetProperty( cFormName, "Width" , nWidth ) // BK SetProperty( cFormName, "Height", nHeight + nY * 2 + GetBorderHeight() ) //SetProperty( cFormName, "Height", 36 + GetBorderHeight() / 2 ) SetProperty( cFormName, "Title", "" ) SetProperty( cFormName, "TitleBar", .F. ) SetProperty( cFormName, "SysMenu", .F. ) IF hb_osisWin10() SetProperty( cFormName, "Height", GetProperty( cFormName, "Height" ) + 7 ) SetProperty( cFormName, "BackColor", nRGB2Arr( GetSysColor( COLOR_WINDOW ) ) ) ENDIF @ nY, nX LABEL Message ; // BK WIDTH GetProperty( cFormName, "Width" ) - 24 - GetBorderWidth() ; HEIGHT nHeight VALUE cMessage FONT cFont SIZE nSize CENTERALIGN TRANSPARENT IF lWidth .and. GetProperty( cFormName, "Width" ) < 2 * nWidth // BK SetProperty( cFormName, "Message", "Value", "" ) _DefineTimer( "Timer", cFormName, 100, {|| EfeitoLabel( cMessage ) } ) ENDIF END WINDOW // BK DoMethod( cFormName, "Center" ) _ActivateWindow( { cFormName }, .T. ) _HMG_IsModalActive := lIsModal IF ! lNoWait InkeyGUI( 0 ) IF _IsControlDefined( "Timer", cFormName ) nCtEfeito := 0 cDescEfeito := "" ENDIF DoMethod( cFormName, "Release" ) ENDIF ENDIF ENDIF DO EVENTS RETURN cFormName // BK
| Пример Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #define _HMG_OUTLOG #include "hmg.ch" REQUEST DBFCDX, DBFFPT REQUEST HB_CODEPAGE_UTF8, HB_CODEPAGE_RU866, HB_CODEPAGE_RU1251 *-----------------------------------------------------------------------------* FUNCTION Main() *-----------------------------------------------------------------------------* SET CODEPAGE TO RUSSIAN SET LANGUAGE TO RUSSIAN RddSetDefault("DBFCDX") SET CENTURY ON SET DATE GERMAN SET DELETED ON SET EXCLUSIVE ON SET EPOCH TO 2000 SET AUTOPEN OFF SET EXACT ON SET SOFTSEEK ON SET NAVIGATION EXTENDED SET FONT TO "Arial", 14 *-------------------------------- SET OOP ON *-------------------------------- DEFINE WINDOW wMain TITLE "Demo WaitWindow" MAIN NOSIZE TOPMOST ; ON INIT ( This.Topmost := .F., _wPost(0) ) ; ON RELEASE ( dbCloseAll() ) ON KEY F1 ACTION NIL (This.Object):Event( 0, {| | InkeyGui(1000), Test_WW0(), Test_WW(), _wPost(99) } ) (This.Object):Event(99, {|ow| ow:Release() } ) END WINDOW CENTER WINDOW wMain ACTIVATE WINDOW wMain RETURN NIL STATIC FUNCTION Test_WW0() //LOCAL cNam := hb_FNameName( hb_ProgName() ) LOCAL cNam := hb_ProgName() LOCAL cForm cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 900, 16 ) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!" ) InkeyGui(5 * 1000 ) SetProperty(cForm, "Message" , "Value", "@@@@@@@@@@@@@@@") InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) RETURN Nil STATIC FUNCTION Test_WW() LOCAL cNam := hb_FNameName( hb_ProgName() ) LOCAL cForm // Первый тест - строка cForm := ToWaitWindow( "... Запуск программы "+cNam+" ... ", 700 ) InkeyGui(5 * 1000 ) ToWaitWindow( "!!!!!!!!!!!!!!!!!!!!" ) InkeyGui(5 * 1000 ) SetProperty(cForm, "Message" , "Value", "@@@@@@@@@@@@@@@") InkeyGui(5 * 1000 ) ToWaitWindow() InkeyGui( 1000 ) // Второй тест - массив cForm := ToWaitWindow( {"... Запуск программы "+cNam+" ... ", ; "Тестируем массив в окне. Строка 1" , ; "Тестируем массив в окне. Строка 2"}, 700 ) SET WINDOW THIS TO cForm This.Message.FontColor := BLUE This.Message.FontBold := .T. InkeyGui(5 * 1000 ) ToWaitWindow( {upper("... Запуск программы "+cNam+" ... "), ; "Замена строки 1 в окне. ****** 1 *", ; "Замена строки 2 в окне. ###### 2 #"} ) InkeyGui(5 * 1000 ) This.Message .Value := "@@@@@@@@@@@@@@@@@@@@" This.Message2.Value := "********************" This.Message3.Value := "####################" SET WINDOW THIS TO InkeyGui(5 * 1000 ) ToWaitWindow() InkeyGui( 1000 ) RETURN Nil FUNCTION ToWaitWindow( uMsg, nWidth ) // Режим NOWAIT для Activate LOCAL cForm := "_HMG_CHILDWAITWINDOW" LOCAL lDef, oDlu, cMsg, cFont, nSize LOCAL nI, nY, nX, nW, nH, nS, cN IF pCount() == 0 // завершение работы окна WaitWindow() IF Empty( _HMG_MainHandle ) // нет MAIN окна SET WINDOW MAIN ON ENDIF RETURN cForm ELSEIF _IsWindowDefined( cForm ) // вывод на окно IF hb_IsChar( uMsg ) .and. ";" $ uMsg uMsg := hb_ATokens( uMsg, ";" ) ELSEIF hb_IsChar( uMsg ) uMsg := { uMsg } ENDIF IF ! hb_IsArray( uMsg ) ; RETURN Nil ENDIF SET WINDOW THIS TO cForm FOR nI := 1 TO Len( uMsg ) cN := "Message" IF nI > 1 ; cN += hb_ntos(nI) ENDIF IF _IsControlDefined( cN, cForm ) This.&(cN).Value := uMsg[ nI ] ENDIF NEXT SET WINDOW THIS TO RETURN cForm ENDIF cFont := App.FontName nSize := App.FontSize oDlu := oDlu4Font( nSize ) IF !_IsWindowDefined( cForm ) // создание окна IF hb_IsChar( uMsg ) .and. ";" $ uMsg uMsg := hb_ATokens( uMsg, ";" ) ENDIF IF hb_IsChar( uMsg ) cMsg := uMsg ELSEIF hb_IsArray( uMsg ) .and. Len( uMsg ) > 0 cMsg := uMsg[1] ELSEIF hb_IsNumeric( uMsg ) cMsg := Repl(" ", uMsg) ELSE cMsg := Repl(" ", 70) ENDIF IF Empty( _HMG_MainHandle ) // нет MAIN окна SET WINDOW MAIN OFF ENDIF WaitWindow( cMsg, .T., nWidth ) IF _IsWindowDefined( cForm ) SET WINDOW THIS TO cForm nX := This.Message.Col nH := oDlu:H1 This.Message.Height := nH This.Message.FontName := cFont This.Message.FontSize := nSize IF hb_IsArray( uMsg ) .and. Len( uMsg ) > 0 nW := This.Message.Width nS := This.Message.Row * 3 nY := nS + This.Message.Height FOR nI := 2 TO Len( uMsg ) cN := "Message"+hb_ntos(nI) @ nY, nX LABEL &cN OF &cForm WIDTH nW HEIGHT nH ; VALUE uMsg[ nI ] FONT cFont SIZE nSize ; BACKCOLOR This.Message.BackColor ; CENTERALIGN TRANSPARENT nY := This.&(cN).Row + This.&(cN).Height nS += This.&(cN).Height NEXT ThisWindow.Height := ThisWindow.Height + nS ELSEIF hb_IsChar( uMsg ) This.Message.Value := uMsg ENDIF SET WINDOW THIS TO ENDIF ENDIF RETURN cForm
|
| |
|
|
| moderator
|
Пост N: 2021
Зарегистрирован: 11.02.10
|
|
Отправлено: 06.03.22 10:06. Заголовок: SergKis пишет: Попр..
SergKis пишет: цитата: | Поправил ф-ю WaitWindow() |
| Ok
| |
|
|
| постоянный участник
|
Пост N: 7230
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.03.22 12:21. Заголовок: SergKis пишет: Попр..
SergKis пишет: цитата: | Поправил ф-ю WaitWindow() |
| А сразу туда нельзя добавить несколько строк для разделителя ";" или CRLF ? Несколько добавочных строк и можно будет не делать свою отдельную функцию. Плюс к этому добавить ещё 2 параметра WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aBackColor, aFontColor ) И будет законченное решение. Я конечно сам могу себе сделать свою функцию, но хочется иметь готовую стандартную функцию, где это всё уже есть.
| |
|
|
| постоянный участник
|
Пост N: 4093
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.03.22 13:05. Заголовок: Andrey пишет Я конеч..
Andrey пишет цитата: | Я конечно сам могу себе сделать свою функцию, но хочется иметь готовую стандартную функцию, где это всё уже есть. |
| Можно сделать. Надо перенести код из примера ToWaitWindow(...) в WaitWindow(). Даже была мысль такая, но надо для массива иметь доступ к ф-ям расчета от dlu, для "правильных" пропорций размеров от фонта, а для этого нужен set oop on. Другие расчеты размеров, по мне, не очень подходят и саму ф-ю надо сильно переписать. Не знаю, надо ли ? PS По поводу aBackColor, aFontColor cWWname := WaitWindow(...) SetProperty(cWWname, "Message", "FontColor", aFontColor ) SetProperty(cWWname, "Message", "BackColor", aBackColor ) Если надо. Это вполне можно на #xcommand вынести А есть еще свойства фонта BOLD, ITALIC ..., как с ними быть ..., т.е. ограничения есть, все в ф-ю WaitWindow(...) не засунешь Можно и параметры в ф-ю добавить, но для однострочного вывода, по мне, это не так актуально, но сделать просто, добавив в @ nY, nX LABEL Message ; ... BACKCOLOR aBackColor FONTCOLOR aFontColor PS2 Имея cWWname можно на окно ProgressBar добавлять самостоятельно, по аналогии с примером выше и "двигать" его, а не счетчик
| |
|
|
| постоянный участник
|
Пост N: 7231
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.03.22 19:37. Заголовок: WaitWindow ( cMessag..
WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aBackColor, aFontColor ) Высоту строк считать просто от параметра nSize, остальное BOLD, ITALIC не нужно. SergKis пишет: цитата: | Можно и параметры в ф-ю добавить, но для однострочного вывода, по мне, это не так актуально, но сделать просто, добавив в @ nY, nX LABEL Message ... ; BACKCOLOR aBackColor FONTCOLOR aFontColor |
| Сделай пожалуйста правильно, а то я опять сделаю и Григорию не понравиться ! Хочется иметь стандартную ПРОСТУЮ функцию, остальные требуют отдельного подключения к проектам.
| |
|
|
| постоянный участник
|
Пост N: 4094
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.03.22 20:53. Заголовок: Andrey пишет Высоту ..
Andrey пишет цитата: | Высоту строк считать просто от параметра nSize, |
| Приемлемо на 11', 14' (что под рукой) отображение идет от nSize := 10 до nSize := 18, при выводе массива или одной строки. За пределами этого - искажения отображения. Это при условии, что в WaitWindow(...) сделал правку высоты Default nHeight := nSize + 14 вместо Default nHeight := nSize + 8 Если такой вариант использования устраивает, то можно сделать вывод строки и массива в WaitWindow(...) с указанными параметрами.
| |
|
|
| постоянный участник
|
Пост N: 7232
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.03.22 21:56. Заголовок: SergKis пишет: Если..
SergKis пишет: цитата: | Если такой вариант использования устраивает, то можно сделать вывод строки и массива в WaitWindow(...) с указанными параметрами. |
| Да, устраивает !
| |
|
Новых ответов нет
, стр:
1
2
3
4
5
6
7
8
9
10
All
[см. все]
|
|
|