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

Ответов - 194, стр: 1 2 3 4 5 6 7 8 9 10 All

Andrey: Нашёл при каком варианте сбоит: [pre2] 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[/pre2] Повторный вызов любого AlertXXXX - будет сваливаться ... Кодировать неудобно (зеленым цветом дублирующий код), цвет КРАСНЫЙ окна делаешь для юзера, чтобы впечатлился. Предлагал же заталкивать цвет фона окна и цвет текста сообщения - параметром последним в этой функции. Почему ломается код при использовании _SetMsgAlertColors() ?

SergKis: Andrey Глянь исходник[pre2]*-----------------------------------------------------------------------------* FUNCTION _SetMsgAlertColors( aBackClr, aFontClr ) *-----------------------------------------------------------------------------* LOCAL aOldClrs := { aBackColor, aFontColor } IF aBackClr != NIL aBackColor := aBackClr ENDIF IF aFontClr != NIL aFontColor := aFontClr ENDIF RETURN aOldClrs [/pre2] и что ты проделываешь aColors := _SetMsgAlertColors( {189, 30, 73} ) и SET MSGALERT BACKCOLOR TO aColors SET MSGALERT FONTCOLOR TO BLACK как говорится, "найдите разницу" ?

Andrey: SergKis пишет: как говорится, "найдите разницу" ? Опять заработался я... Спасибо за подсказку ! Оказывается можно и так делать:[pre2] 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][/pre2]


rvu: А в AlertYesNo() звука нет? Если в других подобных функциях есть звук и возможность его отключения, мне кажется было бы логично везде это сделать.

SergKis: 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) }

rvu: SergKis пишет: По мне, звук вообще отключить Я по умолчанию отключаю. Но вдруг кому нравится.

rvu: В программе выставлена кодировка 1251. AlertYesNo() пишет: Да, Нет. AlertRetryCancel: Retry, Cancel. Наверное, где-то не включили нужные слова в русскую локализацию. Или так и задумано? А можно вообще свои слова вставлять в эти функции? Было бы удобно.

SergKis: rvu проверьте, что дает после SET LANGUAGE TO RUSSIAN ? _HMG_LANG_ID если не "RU", то _HMG_LANG_ID := "RU" ; InitMessages() // см. h_init.prg +[pre2] *-----------------------------------------------------------------------------* 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 ) [/pre2]

rvu: SergKis пишет: проверьте, что дает после SET LANGUAGE TO RUSSIAN ? _HMG_LANG_ID если не "RU" Не "RU". Интересно, а почему? То _HMG_LANG_ID := "RU" ; InitMessages() - Теперь "RU". Но AlertRetryCancel все равно: Retry, Cancel.

SergKis: 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() заведите) напишите свою, Андрей написал и использует везде[pre2] /////////////////////////////////////////////////////////////////////////// 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 [/pre2] Если хочешь сделать что-то хорошо, сделай это сам

rvu: SergKis пишет: Если хочешь сделать что-то хорошо, сделай это сам В идеале — да, но всё самому сделать невозможно. За советы спасибо!

Andrey: Последняя версия МиниГуи. Система Win10 ! При вызове вот этой функции: [pre2]WaitWindow( 'Загрузка программы ... ' + GetExeFileName(), .T. ) [/pre2] Получаю окно без надписи ! Пустое окно ! Как у меня было на Win8.1 Почему ? Если сделать WaitWindow( 'Загрузка программы ... ', .T. ) то надпись есть. А как сделать надпись в 2-3 строчки ?

SergKis: Andrey пишет Получаю окно без надписи ! Пустое окно ! Как у меня было на Win8.1 Почему ? Если сделать WaitWindow( 'Загрузка программы ... ', .T. ) то надпись есть. Ширина окна ставится SetProperty( cFormName, "Width", Min( 2 * nWidth, Min( GetDesktopWidth(), 800 ) ) ) Если текст шириной больше ширины окна, то вкл. timer прокрутки текста в label Наверно, тут не клеится с ним и прокруткой. Если текст короткий, то все работает как надо. А как сделать надпись в 2-3 строчки ? Как то так. Пример [pre2] /* * 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 [/pre2]

SergKis: Поправил ф-ю WaitWindow() [pre2] *-----------------------------------------------------------------------------* 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 [/pre2] Пример [pre2] /* * 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 [/pre2]

gfilatov2002: SergKis пишет: Поправил ф-ю WaitWindow() Ok

Andrey: SergKis пишет: Поправил ф-ю WaitWindow() А сразу туда нельзя добавить несколько строк для разделителя ";" или CRLF ? Несколько добавочных строк и можно будет не делать свою отдельную функцию. Плюс к этому добавить ещё 2 параметра [pre2] WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aBackColor, aFontColor ) [/pre2] И будет законченное решение. Я конечно сам могу себе сделать свою функцию, но хочется иметь готовую стандартную функцию, где это всё уже есть.

SergKis: 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 добавлять самостоятельно, по аналогии с примером выше и "двигать" его, а не счетчик

Andrey: [pre2]WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aBackColor, aFontColor ) [/pre2] Высоту строк считать просто от параметра nSize, остальное BOLD, ITALIC не нужно. SergKis пишет: Можно и параметры в ф-ю добавить, но для однострочного вывода, по мне, это не так актуально, но сделать просто, добавив в @ nY, nX LABEL Message ... ; BACKCOLOR aBackColor FONTCOLOR aFontColor Сделай пожалуйста правильно, а то я опять сделаю и Григорию не понравиться ! Хочется иметь стандартную ПРОСТУЮ функцию, остальные требуют отдельного подключения к проектам.

SergKis: Andrey пишет Высоту строк считать просто от параметра nSize, Приемлемо на 11', 14' (что под рукой) отображение идет от nSize := 10 до nSize := 18, при выводе массива или одной строки. За пределами этого - искажения отображения. Это при условии, что в WaitWindow(...) сделал правку высоты Default nHeight := nSize + 14 вместо Default nHeight := nSize + 8 Если такой вариант использования устраивает, то можно сделать вывод строки и массива в WaitWindow(...) с указанными параметрами.

Andrey: SergKis пишет: Если такой вариант использования устраивает, то можно сделать вывод строки и массива в WaitWindow(...) с указанными параметрами. Да, устраивает !



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