Автор | Сообщение |
gfilatov
|
| модератор
|
Пост N: 699
Зарегистрирован: 25.05.05
|
|
Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)
Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
Andrey
|
| постоянный участник
|
Пост N: 6723
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.06.20 15:25. Заголовок: Вспомнил, как делал ..
Вспомнил, как делал раньше. Только запрос не делал, из-за этого и непонятно было как делать. bDelete := { | nAt, oBrw | ItogoNN(oBrw) } oBrw1:SetDeleteMode( .T., .F., bDelete ) // здесь включаем клавишу DEL !!!
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1727
Зарегистрирован: 11.02.10
|
|
Отправлено: 09.06.20 19:21. Заголовок: SergKis пишет: Draw..
SergKis пишет: цитата: | DrawIconEx( FormHandle, Col, Row, LoadIconByName( icon, w, h ), w, h, rgb, .T. ) |
| Восьмой параметр этой функции, выделенный цветом, управляет удалением иконки, которая была загружена функцией LoadIconByName()
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3260
Зарегистрирован: 17.02.12
|
|
Отправлено: 09.06.20 19:50. Заголовок: gfilatov2002 :sm36..
gfilatov2002 Спасибо, упустил.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3266
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.06.20 11:57. Заголовок: gfilatov2002 Предла..
gfilatov2002 Предлагаю поправить METHOD DeleteRow( lAll, lUpStable ) CLASS TSBrowse Local lRecall, nAt, nRowPos, nRecNo, lRefresh, cAlias, lEval, uTemp ... lRecall := !Set( _SET_DELETED ) DEFAULT lUpStable := !lRecall If !::lIsTxt ... If !( "SQL" $ ::cDriver ) ( cAlias )->( DbUnlock() ) EndIf /* ::nLen := ( cAlias )->( Eval( ::bLogicLen ) ) If lUpStable ( cAlias )->( DbSkip() ) lRefresh := ( cAlias )->( EOF() ) ( cAlias )->( DbSkip( -1 ) ) ::nRowPos -= iif( lRefresh .and. ; ! ( cAlias )->( BoF() ), 1, 0 ) ::Refresh( .T. ) EndIf */ ElseIf lRecall ( cAlias )->( DbRecall() ) ( cAlias )->( DbUnlock() ) EndIf ::nLen := ( cAlias )->( Eval( ::bLogicLen ) ) If lUpStable ( cAlias )->( DbSkip() ) lRefresh := ( cAlias )->( EOF() ) ( cAlias )->( DbSkip( -1 ) ) ::nRowPos -= iif( lRefresh .and. ; ! ( cAlias )->( BoF() ), 1, 0 ) ::Refresh( .T. ) EndIf If ::lCanAppend .and. ::nLen == 0 ... Использовать, например, на индексе с FOR в котором есть Deleted() : :SetDeleteMode( .T., .F., {|| AlertYesNo(iif((oBrw:cAlias)->(OrdSetFocus()) == "DEL", ; "Восстановить", "Удалить")+" запись в таблице ?", "Подтверждение") } )
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1728
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.06.20 15:43. Заголовок: SergKis пишет: Пр..
SergKis пишет: цитата: | Предлагаю поправить /* ::nLen := ( cAlias )->( Eval( ::bLogicLen ) ) If lUpStable ( cAlias )->( DbSkip() ) lRefresh := ( cAlias )->( EOF() ) ( cAlias )->( DbSkip( -1 ) ) ::nRowPos -= iif( lRefresh .and. ; ! ( cAlias )->( BoF() ), 1, 0 ) ::Refresh( .T. ) EndIf */ |
|
т.е. перенести этот код ниже, чтобы учитывать восстановление записи также. Сделал, конечно. Благодарю за помощь
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1729
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.06.20 12:15. Заголовок: Всем кому это интересно
Подготовил 5-ю бету для новой сборки 20.06 со следующим списком изменений: Скрытый текст
* Fixed: The back color of a TAB control was not changed at runtime. Problem was reported by Ivanil Marcelino <ivanil/at/linkbr.com.br>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\TAB) * Fixed: Pacified the C-warning "cast-function-type" in the MiniGUI core (was passed MinGW GNU C 10.1): - added the auxiliary C-function wapi_GetProcAddress(). It was a postponed modification. Contributed by Grigory Filatov <gfilatov@inbox.ru> * New: Added the useful function HMG_SetMenuTheme( [ nType ][, cFormName ] ) for setting of the predefined menu themes, where the 1st parameter nType may have the following values: - MNUCLR_THEME_DEFAULT; - MNUCLR_THEME_XP; - MNUCLR_THEME_2000; - MNUCLR_THEME_DARK. Requested by Verchenko Andrey <verchenkoag/at/gmail.com>. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Advanced\MenuEx) * Updated: Synchronized Extended HMG for compatibility with Official HMG: - New: function GetFormNameByHandle( hWnd, @cFormName, ; @cFormParentName ) --> Return nFormIndex; - New: function GetControlNameByHandle ( hWnd, @cControlName, ; @cFormParentName ) --> Return nControlIndex. Based upon a contribution of Claudio Soto <srvet/at/adinet.com.uy>. Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> (see demo in folder \samples\Basic\MoveResizeControl) * New: 'HbCrypto' library contains (see source in folder \Source\HbCrypto): - Harbour interface to bcrypt password hashing; - BLAKE2s function wrapper (fast secure hash); - ED25519 wrappers; - Harbour interface to PBKDF2 password hashing; - Harbour interface to scrypt password hashing; - SHA3 function wrappers (secure hash). Based upon a contribution of Viktor Szakats (borrowed from 3.4 fork). Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru> * Updated: 'Bos Taurus' Graphics Library (see source in folder \Source\BosTaurus): - fixed the MinGW C-warning "cast-function-type". Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: 'HMG Debugger' library: - adapted to the recent Minigui core changes. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see source in folder \Source\Debugger) * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - minor correction of a font handling in the method AddSuperHead(); - minor correction of a refreshing in the method DeleteRow(); - minor correction of a phantom column's painting in the method DrawSelect(). Contributed by Sergej Kiselev. * Updated: HbSQLite3 library: - update for using SQLITE3 latest version 3.32.2. Contributed by Grigory Filatov <gfilatov@inbox.ru>. * Updated: 'Print Pie Graph' sample: updated the data for May 2020. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see demo.prg in folder \samples\Basic\GraphPrint) * Updated: The following samples were revised for compatibility with the recent Minigui modification: - menudemo2.prg in folder \samples\Basic\Menu; - \samples\Advanced\MenuEx; - \samples\Advanced\SetThemes; - \samples\Advanced\TransparentIcons. Contributed by Grigory Filatov <gfilatov@inbox.ru> * Updated: 'Quick Browse Generator' utility: - adapted to the recent Minigui core changes. Contributed by Grigory Filatov <gfilatov@inbox.ru> (see in folder \Utils\QBGen)
| Благодарю за ваше внимание
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1730
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.06.20 11:07. Заголовок: P S По просьбе Андре..
P S По просьбе Андрея расширил возможности новой функции HMG_SetMenuTheme() по определению пользовательской темы меню. Синтаксис: цитата: | HMG_SetMenuTheme( [ nType ][, cFormName ][, aUserDefined ] ) |
| Пример определения массива aUserDefined: цитата: | FUNCTION GetWin7Theme() LOCAL aUserDefined := Array( 24 ) aUserDefined[ MNUCLR_MENUBARBACKGROUND1 ] := GetSysColor( 15 ) aUserDefined[ MNUCLR_MENUBARBACKGROUND2 ] := RGB( 211, 218, 237 ) aUserDefined[ MNUCLR_MENUBARTEXT ] := RGB( 0, 0, 0 ) aUserDefined[ MNUCLR_MENUBARSELECTEDTEXT ] := RGB( 0, 0, 0 ) aUserDefined[ MNUCLR_MENUBARGRAYEDTEXT ] := GetSysColor( 17 ) aUserDefined[ MNUCLR_MENUBARSELECTEDITEM1 ] := RGB( 174, 206, 246 ) aUserDefined[ MNUCLR_MENUBARSELECTEDITEM2 ] := RGB( 174, 206, 246 ) aUserDefined[ MNUCLR_MENUITEMTEXT ] := GetSysColor( 7 ) aUserDefined[ MNUCLR_MENUITEMSELECTEDTEXT ] := GetSysColor( 7 ) aUserDefined[ MNUCLR_MENUITEMGRAYEDTEXT ] := GetSysColor( 17 ) aUserDefined[ MNUCLR_MENUITEMBACKGROUND1 ] := RGB( 240, 240, 240 ) aUserDefined[ MNUCLR_MENUITEMBACKGROUND2 ] := RGB( 240, 240, 240 ) aUserDefined[ MNUCLR_MENUITEMSELECTEDBACKGROUND1 ] := RGB( 232, 238, 246 ) aUserDefined[ MNUCLR_MENUITEMSELECTEDBACKGROUND2 ] := RGB( 232, 238, 246 ) aUserDefined[ MNUCLR_MENUITEMGRAYEDBACKGROUND1 ] := RGB( 240, 240, 240 ) aUserDefined[ MNUCLR_MENUITEMGRAYEDBACKGROUND2 ] := RGB( 240, 240, 240 ) aUserDefined[ MNUCLR_IMAGEBACKGROUND1 ] := RGB( 241, 241, 241 ) aUserDefined[ MNUCLR_IMAGEBACKGROUND2 ] := RGB( 241, 241, 241 ) aUserDefined[ MNUCLR_SEPARATOR1 ] := RGB( 224, 224, 224 ) aUserDefined[ MNUCLR_SEPARATOR2 ] := RGB( 255, 255, 255 ) aUserDefined[ MNUCLR_SELECTEDITEMBORDER1 ] := RGB( 174, 206, 246 ) aUserDefined[ MNUCLR_SELECTEDITEMBORDER2 ] := RGB( 174, 206, 246 ) aUserDefined[ MNUCLR_SELECTEDITEMBORDER3 ] := RGB( 174, 206, 246 ) aUserDefined[ MNUCLR_SELECTEDITEMBORDER4 ] := RGB( 174, 206, 246 ) RETURN aUserDefined |
| Использование: цитата: | HMG_SetMenuTheme( MNUCLR_THEME_USER_DEFINED, , GetWin7Theme() ) |
| Благодарю за ваше внимание
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3267
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.06.20 13:19. Заголовок: gfilatov2002 пишет ..
gfilatov2002 пишет цитата: | - MNUCLR_THEME_DEFAULT; - MNUCLR_THEME_XP; - MNUCLR_THEME_2000; - MNUCLR_THEME_DARK. - MNUCLR_THEME_USER_DEFINED |
| Как то сложновато запоминать, может упростить чуток ? HMG_SetMenuTheme( "DEFAULT" ) HMG_SetMenuTheme( "XP" ) HMG_SetMenuTheme( "2000" ) HMG_SetMenuTheme( "DARK" ) HMG_SetMenuTheme( "USER", ... )
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1731
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.06.20 13:27. Заголовок: SergKis пишет: Как ..
SergKis пишет: цитата: | Как то сложновато запоминать |
| Это просто числовые константы: MNUCLR_THEME_DEFAULT = 0; MNUCLR_THEME_XP = 1 ; MNUCLR_THEME_2000 = 2; MNUCLR_THEME_DARK = 3. MNUCLR_THEME_USER_DEFINED = 99 так что можно использовать числа вместо имен
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3270
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.06.20 18:30. Заголовок: gfilatov2002 Можно ..
gfilatov2002 Можно в сервер примера LetoDbf внести небольшие изменения, для проверки наличия\запуска сервера в памяти на localhost из клиента ? Или обходится своей сборкой ? STATIC s_cIniName := "letodb.ini" STATIC s_hMutex := 0 THREAD STATIC s_hWASet PROCEDURE Main( cCommand, cData ) LOCAL oApp LOCAL cMutex := upper( hb_ProgName() ), lMutex IF Empty( cCommand ) AEval({".","\",":","/"," "}, {|cs| cMutex := StrTran(cMutex, cs, "_") }) s_hMutex := wapi_CreateMutex( NIL, NIL, cMutex ) lMutex := ( ! Empty( s_hMutex ) .AND. wapi_GetLastError() == 0 ) IF ! lMutex WrLog( "LetoDBF Server is running. Error "+hb_ntos(wapi_GetLastError())+" mutex "+cMutex ) RETURN ENDIF ENDIF s_cDirBase := hb_DirBase() leto_setDirBase( s_cDirBase ) ... IF cCommand != NIL .AND. Lower( cCommand ) == "stop" IF ! EMPTY( cData ) ... WrLog( "Can't STOP the server at port " + ALLTRIM( STR( oApp:nPort ) ) + " ( not started ? )" ) ENDIF IF ! empty( s_hMutex ) wapi_ReleaseMutex( s_hMutex ) ; s_hMutex := 0 ENDIF ELSEIF cCommand != NIL .AND. Left( Lower( cCommand ), 6 ) == "reload" ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1732
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.06.20 20:47. Заголовок: SergKis пишет: Можн..
SergKis пишет: цитата: | Можно в сервер примера LetoDbf внести небольшие изменения |
| Пересобрал сервер с этими изменениями, все работает нормально. Благодарю за помощь
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1733
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.06.20 09:47. Заголовок: Всем кому это интересно
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1734
Зарегистрирован: 11.02.10
|
|
Отправлено: 02.07.20 10:24. Заголовок: Всем кому это интересно
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6739
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.20 18:51. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Выложил обновление для сборки 20.06 (Update 1) с учетом последних исправлений |
| Пере собрал свои проги ! Полёт нормальный ! Можно команду SET MULTIPLE OFF WARNING сделать через AlertStop() ?
|
|
|
Haz
|
| |
Пост N: 1568
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.07.20 19:04. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно команду SET MULTIPLE OFF WARNING сделать через AlertStop() ? |
|
не надо. Или стандарт или с выбором куда выводить. Дизайн AlertStop() не к любому интерфейсу по фейсу Ps.. Кому нужно будет, могут команду переопределить
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6740
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.20 20:22. Заголовок: Haz пишет: Кому нуж..
Haz пишет: цитата: | Кому нужно будет, могут команду переопределить |
| А как ? Писать свою функцию не хочется. Можно переключатель сделать в стандартной библиотеке ?
|
|
|
Haz
|
| |
Пост N: 1569
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.07.20 20:29. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как ? Писать свою функцию не хочется. |
|
зачем писать свою. Посмотри как в ch команда транслируется и замени для себя msgstop() на что хочешь.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6741
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.20 20:54. Заголовок: Haz пишет: Посмотри..
Haz пишет: цитата: | Посмотри как в ch команда транслируется и замени для себя msgstop() на что хочешь. |
| Не, это не то... Ладно, проехали... Не особо существенно это. Другая проблема достаёт. Под Win 8.1 нет у меня сообщения из функции WaitWindow( cMessage, lNoWait ). Под ХР, 7, 10 всё есть. Нашёл эту функцию в h_windows.prg Сделал отладку и увидел почему так: @ iif( IsVistaOrLater(), 4, 7 ), 12 LABEL Message ; WIDTH GetProperty( cFormName, "Width" ) - 24 - GetBorderWidth() ; HEIGHT 18 VALUE cMessage SIZE 10 CENTERALIGN TRANSPARENT END WINDOW ? "hb_osIsWin8()=",hb_osIsWin8() ? "nWidth := GetTextWidth( , '"+cMessage+"')" ? "nWidth := ", nWidth ? GetProperty( cFormName, "Width" ), "<", 2 * nWidth ? GetProperty( cFormName, "Width" ) < 2 * nWidth IF GetProperty( cFormName, "Width" ) < 2 * nWidth SetProperty( cFormName, "Message", "Value", "" ) _DefineTimer( "Timer", cFormName, 100, {|| EfeitoLabel( cMessage ) } ) ENDIF В отладке вот так: My test program (2): Запуск второй копии программы / Starting a second copy of the program hb_osIsWin8()= .T. nWidth := GetTextWidth( , 'My test program (2): Запуск второй копии программы / Starting a second copy of the program' ) nWidth := 611 800 < 1222 .T. Исправить в коде это можно ?
|
|
|
Haz
|
| |
Пост N: 1570
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.07.20 22:22. Заголовок: Andrey пишет: Испра..
Andrey пишет: цитата: | Исправить в коде это можно ? |
| Андрей, конечно можно исправить. Напиши Григорию обоснованное исправление и он точно скажет тебе спасибо. Из твоей отладки я вижу, что по условию выдаст пустую строку. Кто и зачем это условие поставил я не задумывался. В принципе исходник простой, разобраться не сложно.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6742
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.07.20 00:16. Заголовок: А кто нибудь пользов..
А кто нибудь пользовался примером MiniGUI\SAMPLES\Advanced\Decompiler ? А то у меня Decompiler.exe вылетает с ошибкой: Application: W:\HB_Project\PROJECT\ТЕСТ\Decompiler.exe Time from start: 0 days 0 hours 0 mins 15 secs Error BASE/1132 Bound error: array access Args: [1] = A { ... } length: 1 [2] = N 2 --------------------------------- Stack Trace --------------------------------- Called from DCP_F80(739) in module: Decompiler.prg Called from DCP_F25(674) in module: Decompiler.prg Called from DCP_SPLIT_CODE(337) in module: Decompiler.prg Called from DECODE_C2PRG(38) in module: Decompiler.prg Called from E2CHD(167) in module: Decompiler.prg Called from (b)MAIN(27) in module: Decompiler.prg Called from _DOCONTROLEVENTPROCEDURE(1901) in module: h_windows.prg Called from EVENTS(1757) in module: h_events.prg Called from DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1514) in module: h_windows.prg Called from MAIN(23) in module: Decompiler.prg
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|