Автор | Сообщение |
|
| постоянный участник
|
Пост 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. ) А по простому нельзя сделать ?
| |
|
Ответов - 194
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|
|
| постоянный участник
|
Пост N: 4095
Зарегистрирован: 17.02.12
|
|
Отправлено: 09.03.22 15:23. Заголовок: Andrey пишет Хочется..
Andrey пишет цитата: | Хочется иметь стандартную ПРОСТУЮ функцию, остальные требуют отдельного подключения к проектам. |
| WaitWindow(...) получилась такая Скрытый текст
*--------------------------------------------------------------------------------------* FUNCTION WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aFontColor, aBackColor ) *--------------------------------------------------------------------------------------* LOCAL cFormName := "_HMG_CHILDWAITWINDOW" LOCAL lDefined := _IsWindowDefined( cFormName ) LOCAL lIsModal LOCAL lWidth := Empty( nWidth ) LOCAL nHeight LOCAL nY, nX, nW, nI, nK LOCAL hFont, cTmp, nTmp, cLbl IF PCount() == 0 IF lDefined nCtEfeito := 0 cDescEfeito := "" DoMethod( cFormName, "Release" ) ENDIF ELSE hb_default( @lNoWait, .F. ) hb_default( @cFont, _HMG_DefaultFontName ) IF HB_ISCHAR( cMessage ) IF CRLF $ cMessage cMessage := hb_ATokens( cMessage, CRLF ) ELSEIF ";" $ cMessage cMessage := hb_ATokens( cMessage, ";" ) ELSE cMessage := { cMessage } ENDIF ELSEIF ! HB_ISARRAY( cMessage ) cMessage := { cMessage } ENDIF nK := Len( cMessage ) IF lDefined IF lNoWait FOR nI := 1 TO nK cLbl := "Message" + iif( nI > 1, hb_ntos( nI ), "" ) IF _IsControlDefined( cLbl, cFormName ) SetProperty( cFormName, cLbl, "Value", cValToChar( cMessage[ nI ] ) ) ENDIF NEXT ENDIF ELSE lIsModal := _HMG_IsModalActive nTmp := 1 cTmp := cMessage[ nTmp ] FOR nI := 1 TO nK nTmp := iif( Len( cValToChar( cMessage[ nI ] ) ) > Len( cTmp ), nI, nTmp ) NEXT cTmp := cValToChar( cMessage[ nTmp ] ) DEFAULT nSize := 10 hFont := InitFont( cFont, nSize ) nHeight := GetTextHeight ( Nil, "A" , hFont ) IF lWidth nWidth := GetTextWidth( Nil, cTmp, hFont ) + 24 nWidth := Min( 2 * nWidth, Min( GetDesktopWidth(), 800 ) ) ENDIF DeleteObject( hFont ) nHeight += 8 IF lNoWait _HMG_IsModalActive := .F. DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD ELSE DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL ENDIF nY := iif( IsVistaOrLater(), 4, 7 ) nX := 12 SetProperty( cFormName, "Width", nWidth ) SetProperty( cFormName, "Height", nHeight * nK + nY * 2 + iif( IsSeven(), 2, 1 ) * GetBorderHeight() ) 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 nW := GetProperty( cFormName, "ClientWidth" ) - nX * 2 FOR nI := 1 TO nK cLbl := "Message" + iif( nI > 1, hb_ntos( nI ), "" ) @ nY, nX LABEL &(cLbl) WIDTH nW HEIGHT nHeight ; VALUE cValToChar( cMessage[ nI ] ) ; FONT cFont SIZE nSize ; BACKCOLOR aBackColor FONTCOLOR aFontColor ; CENTERALIGN TRANSPARENT nY += nHeight NEXT IF lWidth .AND. GetProperty( cFormName, "Width" ) < 2 * nWidth SetProperty( cFormName, "Message", "Value", "" ) _DefineTimer( "Timer", cFormName, 100, {|| EfeitoLabel( cMessage[1] ) } ) ENDIF END WINDOW 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
| Пример использования Скрытый текст
/* * 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 cFont := "Arial", nSize := 12 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 cFont, nSize *-------------------------------- 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) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!", .T. ) 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, nSize := 20 // Первый тест - строка cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, nSize ) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!", .T. ) InkeyGui(5 * 1000 ) SetProperty(cForm, "Message" , "Value", "@@@@@@@@@@@@@@@") InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) // Второй тест - массив cForm := WaitWindow( {"... Запуск программы "+cNam+" ... ", ; "Тестируем массив в окне. Строка 1" , ; "Тестируем массив в окне. Строка 2"}, .T., 700, nSize ) SET WINDOW THIS TO cForm This.Message.FontColor := BLUE This.Message.FontBold := .T. InkeyGui(5 * 1000 ) WaitWindow( {upper("... Запуск программы "+cNam+" ... "), ; "Замена строки 1 в окне. ****** 1 *" , ; "Замена строки 2 в окне. ###### 2 #"}, .T. ) InkeyGui(5 * 1000 ) WaitWindow("@@@@@@@@@@@@@@@@@@@@;********************;####################", .T.) This.Message .Value := "@..................@" This.Message2.Value := "*..................*" This.Message3.Value := "#..................#" SET WINDOW THIS TO InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) RETURN Nil
|
| |
|
|
| moderator
|
Пост N: 2023
Зарегистрирован: 11.02.10
|
|
Отправлено: 09.03.22 20:23. Заголовок: SergKis пишет: Wait..
SergKis пишет: Принято Благодарю за помощь
| |
|
|
| постоянный участник
|
Пост N: 7234
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.03.22 08:08. Заголовок: Что то не работает ф..
Что то не работает фон окна и вообще оно пропадает ! cForm := WaitWindow( "... Запуск программы ...;"+cNam, .T., 700, nSize, YELLOW, RED )
| |
|
|
| moderator
|
Пост N: 2024
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.03.22 09:42. Заголовок: Andrey пишет: вообщ..
Andrey пишет: А если записать так: цитата: | cForm := WaitWindow( "... Запуск программы ...;"+cNam, .T., 700, nSize, NIL, YELLOW, RED ) |
| Кстати, выложил "тихое" обновление с учетом предложенных изменений для функции WaitWindow().
| |
|
|
| постоянный участник
|
Пост N: 7236
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.03.22 09:57. Заголовок: gfilatov2002 пишет: ..
| |
|
|
| постоянный участник
|
Пост N: 4097
Зарегистрирован: 17.02.12
|
|
Отправлено: 10.03.22 13:50. Заголовок: gfilatov2002 Нельзя..
gfilatov2002 Нельзя сделать ширину окна > 800, это, наверно, неправильно, т.е. задать LOCAL cNam := hb_FNameName( hb_ProgName() ) LOCAL cForm, nSize := 16 LOCAL nW := GetDesktopWidth() * 0.95 // Первый тест - строка cForm := WaitWindow( "... Запуск программы ...;"+hb_ProgName(), .T., nW, nSize, NIL, YELLOW, BLUE ) Предлагаю правку ... LOCAL lWidth := ( nWidth == NIL ) ... nHeight := GetTextHeight ( NIL, "A", hFont ) IF lWidth nWidth := GetTextWidth( NIL, cTmp, hFont ) + nX * 2 nWidth := Min( 2 * nWidth, 800 ) ELSEIF Empty( nWidth ) .or. nWidth < 0 nWidth := GetTextWidth( NIL, cTmp+Replicate("A", 5), hFont ) + nX * 2 ENDIF DeleteObject( hFont ) nHeight += 8 IF lNoWait _HMG_IsModalActive := .F. DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD ELSE DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL ENDIF //SetProperty( cFormName, "Width", Min( 2 * nWidth, Min( GetDesktopWidth(), 800 ) ) ) SetProperty( cFormName, "Width", Min( GetDesktopWidth(), nWidth ) ) SetProperty( cFormName, "Height", nHeight * nK + nY * 2 + GetBorderHeight() ) 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 IF HB_ISARRAY( aBackColor ) SetProperty( cFormName, "BackColor", aBackColor ) ENDIF nW := GetProperty( cFormName, "ClientWidth" ) - nX * 2 ... тогда проходят варианты LOCAL nW := GetDesktopWidth() * 0.95 cForm := WaitWindow( "... Запуск программы ...;"+hb_ProgName(), .T., nW, nSize, NIL, YELLOW, BLUE ) и cForm := WaitWindow( "... Запуск программы ...;"+hb_ProgName(), .T., 0, nSize, NIL, YELLOW, BLUE ) расчет от текста ширины окна Возможно, надо добавить вариант Андрея с заголовком окна, т.е. совсем без него DEFINE WINDOW ... CHILD ... NOSIZE NOSYSMENU NOCAPTION ... и DEFINE WINDOW ... MODAL ... NOSIZE NOSYSMENU NOCAPTION ...
| |
|
|
| постоянный участник
|
Пост N: 7238
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.03.22 13:59. Заголовок: Я уже попробовал. Не..
Я уже попробовал. Не особо красиво, текст прилипает к вверху окна. Нужно делать отступ от верха окна. И нет теней для окна на Win10, и окантовки нет. Может на других ОС будет красиво, но я не могу пока проверить это. Взял тихое обновление Григория и облом с моим примером, серый фон и блеклые жёлтые буквы на нём. Нужно делать так: IF hb_osIsWin10() SetProperty( cFormName, "Height", GetProperty( cFormName, "Height" ) + 7 ) SetProperty( cFormName, "BackColor", nRGB2Arr( GetSysColor( COLOR_WINDOW ) ) ) //ELSEIF HB_ISARRAY( aBackColor ) // SetProperty( cFormName, "BackColor", aBackColor ) ENDIF IF HB_ISARRAY( aBackColor ) SetProperty( cFormName, "BackColor", aBackColor ) ENDIF Свой пример выкладываю - https://cloud.mail.ru/public/FVpn/Bh6MHPvKU
| |
|
|
| постоянный участник
|
Пост N: 4098
Зарегистрирован: 17.02.12
|
|
Отправлено: 10.03.22 20:04. Заголовок: Andrey пишет Я уже п..
Andrey пишет цитата: | Я уже попробовал. Не особо красиво, текст прилипает к вверху окна. Нужно делать отступ от верха окна. |
| Вот что получилось у меня WaitWindow(...) Скрытый текст
*----------------------------------------------------------------------------------------------* FUNCTION WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aFontColor, aBackColor, lNoCapt ) *----------------------------------------------------------------------------------------------* LOCAL cFormName := "_HMG_CHILDWAITWINDOW" LOCAL lDefined := _IsWindowDefined( cFormName ) LOCAL lIsModal LOCAL lWidth := ( nWidth == NIL ) LOCAL nHeight LOCAL nY, nX, nW, nI, nK LOCAL hFont, cTmp, nTmp, cLbl, nPos := 0 IF PCount() == 0 IF lDefined nCtEfeito := 0 cDescEfeito := "" DoMethod ( cFormName, "Release" ) ENDIF ELSE hb_default( @lNoWait, .F. ) hb_default( @cFont, _HMG_DefaultFontName ) IF HB_ISCHAR( cMessage ) IF CRLF $ cMessage cMessage := hb_ATokens( cMessage, CRLF ) ELSEIF ";" $ cMessage cMessage := hb_ATokens( cMessage, ";" ) ELSE cMessage := { cMessage } ENDIF ELSEIF ! HB_ISARRAY( cMessage ) cMessage := { cMessage } ENDIF nK := Len( cMessage ) IF lDefined IF lNoWait FOR nI := 1 TO nK cLbl := "Message" + iif( nI > 1, hb_ntos( nI ), "" ) IF _IsControlDefined( cLbl, cFormName ) SetProperty( cFormName, cLbl, "Value", cValToChar( cMessage[ nI ] ) ) ENDIF NEXT ENDIF ELSE IF HB_ISLOGICAL( lNoCapt ) nPos := iif( lNoCapt, 10, nPos ) ELSEIF HB_ISNUMERIC( lNoCapt ) nPos := iif( lNoCapt > 0, lNoCapt, nPos ) ENDIF lNoCapt := !Empty( nPos ) lIsModal := _HMG_IsModalActive nTmp := 1 cTmp := cMessage[ nTmp ] FOR nI := 1 TO nK nTmp := iif( Len( cValToChar( cMessage[ nI ] ) ) > Len( cTmp ), nI, nTmp ) NEXT cTmp := cValToChar( cMessage[ nTmp ] ) DEFAULT nSize := 10 nY := iif( IsVistaOrLater(), 4, 7 ) + nPos nX := 12 hFont := InitFont( cFont, nSize ) nHeight := GetTextHeight ( NIL, "A", hFont ) IF lWidth nWidth := GetTextWidth( NIL, cTmp, hFont ) + nX * 2 nWidth := Min( 2 * nWidth, 800 ) ELSEIF Empty( nWidth ) .or. nWidth < 0 nWidth := GetTextWidth( NIL, cTmp+Replicate("A", 5), hFont ) + nX * 2 ENDIF DeleteObject( hFont ) nHeight += 8 IF lNoWait _HMG_IsModalActive := .F. IF lNoCapt DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD ; CLIENTAREA Min( GetDesktopWidth(), nWidth ), nHeight * nK + nY * 2 ; NOSIZE NOSYSMENU NOCAPTION ELSE DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD ; CLIENTAREA Min( GetDesktopWidth(), nWidth ), nHeight * nK + nY * 2 ENDIF ELSE IF lNoCapt DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL ; CLIENTAREA Min( GetDesktopWidth(), nWidth ), nHeight * nK + nY * 2 ; NOSIZE NOSYSMENU NOCAPTION ELSE DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL ; CLIENTAREA Min( GetDesktopWidth(), nWidth ), nHeight * nK + nY * 2 ENDIF ENDIF //SetProperty( cFormName, "Width", Min( 2 * nWidth, Min( GetDesktopWidth(), 800 ) ) ) //SetProperty( cFormName, "Width", Min( GetDesktopWidth(), nWidth ) ) //SetProperty( cFormName, "Height", nHeight * nK + nY * 2 + GetBorderHeight() ) 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 IF HB_ISARRAY( aBackColor ) SetProperty( cFormName, "BackColor", aBackColor ) ENDIF nW := GetProperty( cFormName, "ClientWidth" ) - nX * 2 FOR nI := 1 TO nK cLbl := "Message" + iif( nI > 1, hb_ntos( nI ), "" ) @ nY, nX LABEL &( cLbl ) WIDTH nW HEIGHT nHeight ; VALUE cValToChar( cMessage[ nI ] ) ; FONT cFont SIZE nSize ; FONTCOLOR aFontColor ; CENTERALIGN TRANSPARENT nY += nHeight NEXT IF lWidth .AND. GetProperty( cFormName, "Width" ) < 2 * nWidth SetProperty( cFormName, "Message", "Value", "" ) _DefineTimer( "Timer", cFormName, 100, {|| EfeitoLabel( cMessage[ 1 ] ) } ) ENDIF END WINDOW 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
| Пример Скрытый текст
/* * 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 cFont := "Arial", nSize := 12 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 cFont, nSize *-------------------------------- 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., 700, 12, NIL, YELLOW, RED, .T.) //cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED, 20 ) //cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!;"+cNam, .T. ) // не работает 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, nSize := 16, aMsg LOCAL nW := GetDesktopWidth() * 0.95 // Первый тест - строка //nW := 0 aMsg := "... Запуск программы ...;"+hb_ProgName() cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, .T. ) //cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, 20 ) //cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE ) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!", .T. ) InkeyGui(5 * 1000 ) SetProperty(cForm, "Message" , "Value", "@@@@@@@@@@@@@@@") InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) // Второй тест - массив aMsg := {"... Запуск программы "+cNam+" ... ", ; "Тестируем массив в окне. Строка 1" , ; "Тестируем массив в окне. Строка 2"} cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, .T. ) //cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, 20 ) //cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED ) SET WINDOW THIS TO cForm This.Message.FontColor := BLUE This.Message.FontBold := .T. InkeyGui(5 * 1000 ) WaitWindow( {upper("... Запуск программы "+cNam+" ... "), ; "Замена строки 1 в окне. ****** 1 *" , ; "Замена строки 2 в окне. ###### 2 #"}, .T. ) InkeyGui(5 * 1000 ) WaitWindow("@@@@@@@@@@@@@@@@@@@@;********************;####################", .T.) This.Message .Value := "@..................@" This.Message2.Value := "*..................*" This.Message3.Value := "#..................#" SET WINDOW THIS TO InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) RETURN Nil
| цитата: | И нет теней для окна на Win10, и окантовки нет |
| На счет окантовки есть ф-я, которая может делать окантовку с закругленными углами, ее можно тут применить. Но я не вспомнил ее название, а пример использования не нашел. Найди и можно вставить для пробы PS CLIENTAREA Min( GetDesktopWidth(), nWidth ), nHeight * nK + nY * 2 Вместо GetDesktopWidth() можно исп. GetDesktopRealWidth() PS2 IF hb_osIsWin10() SetProperty( cFormName, "Height", GetProperty( cFormName, "Height" ) /*+ 7*/ ) Выделенное цветом, по мне лишнее, т.е. эту строку можно убрать Пример и h_windows.prg со всеми исправлениями WaitWindow() https://TransFiles.ru/sczh6 PS Пример с заголовком окна https://TransFiles.ru/o6uph В h_windows.prg добавил правку IF lNoWait _HMG_IsModalActive := .F. IF lNoCapt DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD CLIENTAREA nW, nH NOSIZE NOSYSMENU NOCAPTION ELSE nH -= GetTitleHeight() DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD CLIENTAREA nW, nH ENDIF ELSE IF lNoCapt DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL CLIENTAREA nW, nH NOSIZE NOSYSMENU NOCAPTION ELSE nH -= GetTitleHeight() DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL CLIENTAREA nW, nH ENDIF ENDIF
| |
|
|
| постоянный участник
|
Пост N: 4099
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.03.22 11:03. Заголовок: Andrey пишет окантов..
Andrey пишет Вариант окантовки (добавка в h_windows.prg из последнего архива пред поста) FUNCTION WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aFontColor, aBackColor, lNoCapt, aPenColor, nPen ) ... NEXT IF HB_ISARRAY( aPenColor ) nPen := iif( Empty( nPen ), 2, nPen ) nI := nPen - 1 nY := nX := nI nH := ThisWindow.ClientHeight - nI nW := ThisWindow.ClientWidth - nI DrawRect( cFormName, nY, nX, nH, nW, aPenColor, nPen ) ENDIF IF lWidth .AND. GetProperty( cFormName, "Width" ) < 2 * nWidth SetProperty( cFormName, "Message", "Value", "" ) _DefineTimer( "Timer", cFormName, 100, {|| EfeitoLabel( cMessage[ 1 ] ) } ) ENDIF ... Пример Скрытый текст
/* * 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 cFont := "Arial", nSize := 12 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 cFont, nSize *-------------------------------- 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, y, x, w, h, n //cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED, .T., GRAY ) cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED, 20, GRAY ) //cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED, , GRAY ) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!;"+cNam, .T. ) 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, nSize := 16, aMsg LOCAL nW := GetDesktopWidth() * 0.95 // Первый тест - строка //nW := 0 aMsg := "... Запуск программы ...;"+hb_ProgName() //cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, .T., GRAY ) cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, 20, GRAY ) //cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, , GRAY ) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!", .T. ) InkeyGui(5 * 1000 ) SetProperty(cForm, "Message" , "Value", "@@@@@@@@@@@@@@@") InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) // Второй тест - массив aMsg := {"... Запуск программы "+cNam+" ... ", ; "Тестируем массив в окне. Строка 1" , ; "Тестируем массив в окне. Строка 2"} //cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, .T., GRAY ) cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, 20, GRAY ) //cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, , GRAY ) SET WINDOW THIS TO cForm This.Message.FontColor := BLUE This.Message.FontBold := .T. InkeyGui(5 * 1000 ) WaitWindow( {upper("... Запуск программы "+cNam+" ... "), ; "Замена строки 1 в окне. ****** 1 *" , ; "Замена строки 2 в окне. ###### 2 #"}, .T. ) InkeyGui(5 * 1000 ) WaitWindow("@@@@@@@@@@@@@@@@@@@@;********************;####################", .T.) This.Message .Value := "@..................@" This.Message2.Value := "*..................*" This.Message3.Value := "#..................#" SET WINDOW THIS TO InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) RETURN Nil
|
| |
|
|
| постоянный участник
|
Пост N: 7239
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.03.22 15:28. Заголовок: Круто ! То что надо ..
Круто ! То что надо для юзера ! Спасибо БОЛЬШОЕ ! Пошёл переделывать проги.
| |
|
|
| постоянный участник
|
Пост N: 4100
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.03.22 17:58. Заголовок: Andrey пишет Пошёл п..
Andrey пишет цитата: | Пошёл переделывать проги. |
| Еще пример с добавленным ProgressBar к строкам массива Скрытый текст
/* * 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 cFont := "Arial", nSize := 12 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 cFont, nSize *-------------------------------- 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, y, x, w, h, n //cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED, .T., GREEN, 4 ) cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED, 20, GREEN, 4 ) //cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED, , BLACK, 1 ) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!;"+cNam, .T. ) 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, nSize := 16, aMsg, i, n, y, x, w, h LOCAL nW := GetDesktopWidth() * 0.95 // Первый тест - строка //nW := 0 aMsg := "... Запуск программы ...;"+hb_ProgName() //cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, .T., GREEN, 4 ) cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, 20, GREEN, 4 ) //cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, , BLACK, 1 ) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!", .T. ) InkeyGui(5 * 1000 ) SetProperty(cForm, "Message" , "Value", "@@@@@@@@@@@@@@@") InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) // Второй тест - массив aMsg := {"... Запуск программы "+cNam+" ... ", ; "Тестируем массив в окне. Строка 1" , ; "Тестируем массив в окне. Строка 2"} //cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, .T., BLUE , 4 ) cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, 20, BLUE , 4 ) //cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, , BLACK, 1 ) SET WINDOW THIS TO cForm h := 5 n := 10 This.Message.FontColor := BLUE This.Message.FontBold := .T. This.Message3.Row := This.Message3.Row + h ThisWindow.Height := ThisWindow.Height + h y := This.Message2.Row + This.Message2.Height x := This.Message2.Col w := This.Message2.Width @ y, x PROGRESSBAR Progress OF &(cForm) RANGE 0, n WIDTH w HEIGHT h FOR i := 1 TO n This.Progress.Value := This.Progress.Value + 1 IF InkeyGui(1 * 1000 ) == 27 EXIT ENDIF NEXT IF i != n This.Progress.Value := n ENDIF InkeyGui(3 * 1000 ) This.Progress.Hide WaitWindow( {upper("... Запуск программы "+cNam+" ... "), ; "Замена строки 1 в окне. ****** 1 *" , ; "Замена строки 2 в окне. ###### 2 #"}, .T. ) InkeyGui(5 * 1000 ) WaitWindow("@@@@@@@@@@@@@@@@@@@@;********************;####################", .T.) This.Message .Value := "@..................@" This.Message2.Value := "*..................*" This.Message3.Value := "#..................#" SET WINDOW THIS TO InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) RETURN Nil
|
| |
|
|
|
| постоянный участник
|
Пост N: 4101
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.03.22 21:34. Заголовок: PS Пример с изменени..
PS Пример с изменением размера окна для ProgressBar оставляет снизу лишнюю полоску. Лучше применить др. методу замены элемента массива для размещения ProgressBar Пример Скрытый текст
/* * 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 cFont := "Arial", nSize := 12 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 cFont, nSize *-------------------------------- 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, y, x, w, h, n //cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED, .T., GREEN, 4 ) cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED, 20, GREEN, 4 ) //cForm := WaitWindow( "... Запуск программы "+cNam+" ... ", .T., 700, 12, NIL, YELLOW, RED, , BLACK, 1 ) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!;"+cNam, .T. ) 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, nSize := 16, aMsg, i, n, y, x, w, h, s LOCAL nW := GetDesktopWidth() * 0.95 // Первый тест - строка //nW := 0 aMsg := "... Запуск программы ...;"+hb_ProgName() //cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, .T., GREEN, 4 ) cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, 20, GREEN, 4 ) //cForm := WaitWindow( aMsg, .T., nW, nSize, NIL, YELLOW, BLUE, , BLACK, 1 ) InkeyGui(5 * 1000 ) WaitWindow( "!!!!!!!!!!!!!!!!!!!!", .T. ) InkeyGui(5 * 1000 ) SetProperty(cForm, "Message" , "Value", "@@@@@@@@@@@@@@@") InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) // Второй тест - массив aMsg := {"... Запуск программы "+cNam+" ... ", ; "Тестируем массив в окне. Строка 1" , ; "Тестируем массив в окне. Строка 2" , ; "Тестируем массив в окне. Строка 3"} //cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, .T., BLUE , 4 ) cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, 20, BLUE , 4 ) //cForm := WaitWindow( aMsg, .T., 700, nSize, NIL, YELLOW, RED, , BLACK, 1 ) SET WINDOW THIS TO cForm h := 5 n := 10 This.Message.FontColor := BLUE This.Message.FontBold := .T. This.Message3.Hide s := Int( (This.Message2.Height - h )/2 ) y := This.Message2.Row + This.Message2.Height + s x := This.Message2.Col w := This.Message2.Width s := This.Message4.Value @ y, x PROGRESSBAR Progress OF &(cForm) RANGE 0, n WIDTH w HEIGHT h FOR i := 1 TO n This.Message4.Value := cValToChar( This.Progress.Value ) This.Progress.Value := This.Progress.Value + 1 IF InkeyGui(1 * 1000 ) == VK_ESCAPE EXIT ENDIF NEXT IF i != n This.Progress.Value := n ENDIF This.Message4.Value := n InkeyGui(1 * 1000 ) This.Progress.Hide This.Message3.Show This.Message4.Value := s InkeyGui(3 * 1000 ) WaitWindow( {upper("... Запуск программы "+cNam+" ... "), ; "Замена строки 1 в окне. ****** 1 *" , ; "Замена строки 2 в окне. ###### 2 #" , ; "Замена строки 3 в окне. $$$$$$ 3 $"}, .T. ) InkeyGui(5 * 1000 ) WaitWindow("@@@@@@@@@@@@@@@@@@@@;********************;####################", .T.) This.Message .Value := "@..................@" This.Message2.Value := "*..................*" This.Message3.Value := "#..................#" This.Message4.Value := "$..................$" SET WINDOW THIS TO InkeyGui(5 * 1000 ) WaitWindow() InkeyGui( 1000 ) RETURN Nil
|
| |
|
|
| постоянный участник
|
Пост N: 4102
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.03.22 13:34. Заголовок: Не знаю, актуально и..
Не знаю, актуально или уже нет, WaitWindow(...) такая вышла Скрытый текст
*----------------------------------------------------------------------------------------------* FUNCTION WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aFontColor, aBackColor, lNoCapt, aPenColor, nPen ) *----------------------------------------------------------------------------------------------* LOCAL cFormName := "_HMG_CHILDWAITWINDOW" LOCAL lDefined := _IsWindowDefined( cFormName ) LOCAL lIsModal LOCAL lWidth := ( nWidth == NIL ) LOCAL nHeight LOCAL nY, nX, nW, nH, nI, nK LOCAL hFont, cTmp, nTmp, cLbl, nPos := 0 IF PCount() == 0 IF lDefined nCtEfeito := 0 cDescEfeito := "" DoMethod ( cFormName, "Release" ) ENDIF ELSE hb_default( @lNoWait, .F. ) hb_default( @cFont, _HMG_DefaultFontName ) IF HB_ISCHAR( cMessage ) IF CRLF $ cMessage cMessage := hb_ATokens( cMessage, CRLF ) ELSEIF ";" $ cMessage cMessage := hb_ATokens( cMessage, ";" ) ELSE cMessage := { cMessage } ENDIF ELSEIF ! HB_ISARRAY( cMessage ) cMessage := { cMessage } ENDIF nK := Len( cMessage ) IF lDefined IF lNoWait FOR nI := 1 TO nK cLbl := "Message" + iif( nI > 1, hb_ntos( nI ), "" ) IF _IsControlDefined( cLbl, cFormName ) SetProperty( cFormName, cLbl, "Value", cValToChar( cMessage[ nI ] ) ) ENDIF NEXT ENDIF ELSE IF HB_ISLOGICAL( lNoCapt ) nPos := iif( lNoCapt, 10, nPos ) ELSEIF HB_ISNUMERIC( lNoCapt ) nPos := iif( lNoCapt > 0, lNoCapt, nPos ) ENDIF lNoCapt := !Empty( nPos ) lIsModal := _HMG_IsModalActive nTmp := 1 cTmp := cMessage[ nTmp ] FOR nI := 1 TO nK nTmp := iif( Len( cValToChar( cMessage[ nI ] ) ) > Len( cTmp ), nI, nTmp ) NEXT cTmp := cValToChar( cMessage[ nTmp ] ) DEFAULT nSize := 10 nY := iif( IsVistaOrLater(), 4, 7 ) + nPos nX := 12 hFont := InitFont( cFont, nSize ) nHeight := GetTextHeight ( NIL, "A", hFont ) IF lWidth nWidth := GetTextWidth( NIL, cTmp, hFont ) + nX * 2 nWidth := Min( 2 * nWidth, 800 ) ELSEIF Empty( nWidth ) .or. nWidth < 0 nWidth := GetTextWidth( NIL, cTmp+Replicate("A", 5), hFont ) + nX * 2 ENDIF DeleteObject( hFont ) nHeight += 8 nW := Min( GetDesktopRealWidth(), nWidth ) nH := nHeight * nK + nY * 2 IF lNoWait _HMG_IsModalActive := .F. IF lNoCapt DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD CLIENTAREA nW, nH NOSIZE NOSYSMENU NOCAPTION ELSE nH -= GetTitleHeight() DEFINE WINDOW _HMG_CHILDWAITWINDOW CHILD CLIENTAREA nW, nH ENDIF ELSE IF lNoCapt DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL CLIENTAREA nW, nH NOSIZE NOSYSMENU NOCAPTION ELSE nH -= GetTitleHeight() DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL CLIENTAREA nW, nH ENDIF ENDIF SetProperty( cFormName, "Title", "" ) SetProperty( cFormName, "TitleBar", .F. ) SetProperty( cFormName, "SysMenu", .F. ) IF HB_ISARRAY( aBackColor ) SetProperty( cFormName, "BackColor", aBackColor ) ELSEIF hb_osIsWin10() SetProperty( cFormName, "BackColor", nRGB2Arr( GetSysColor( COLOR_WINDOW ) ) ) ENDIF nW := GetProperty( cFormName, "ClientWidth" ) - nX * 2 FOR nI := 1 TO nK cLbl := "Message" + iif( nI > 1, hb_ntos( nI ), "" ) @ nY, nX LABEL &( cLbl ) WIDTH nW HEIGHT nHeight ; VALUE cValToChar( cMessage[ nI ] ) ; FONT cFont SIZE nSize ; FONTCOLOR aFontColor ; CENTERALIGN TRANSPARENT nY += nHeight NEXT IF HB_ISARRAY( aPenColor ) nPen := iif( Empty( nPen ), 2, nPen ) nI := nPen - 1 nY := nX := nI nH := ThisWindow.ClientHeight - nI nW := ThisWindow.ClientWidth - nI DrawRect( cFormName, nY, nX, nH, nW, aPenColor, nPen ) ENDIF IF lWidth .AND. GetProperty( cFormName, "Width" ) < 2 * nWidth SetProperty( cFormName, "Message", "Value", "" ) _DefineTimer( "Timer", cFormName, 100, {|| EfeitoLabel( cMessage[ 1 ] ) } ) ENDIF END WINDOW 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
|
| |
|
|
| постоянный участник
|
Пост N: 7240
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.03.22 15:29. Заголовок: SergKis пишет: Не з..
SergKis пишет: цитата: | Не знаю, актуально или уже нет, WaitWindow(...) такая вышла |
| Конечно актуально ! Классно получилось ! Григорий, ждем исправленную функцию в библиотеке.
| |
|
Ответов - 194
, стр:
1
2
3
4
5
6
7
8
9
10
All
[только новые]
|
|
|