| Автор | Сообщение |
|
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
[только новые]
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 2415
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.04.25 11:35. Заголовок: SergKis пишет: Прав..
SergKis пишет: Поправил, конечно. Благодарю за помощь 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4706
Зарегистрирован: 17.02.12
|
|
Отправлено: 09.04.25 13:48. Заголовок: gfilatov2002 Предло..
gfilatov2002 Предложение для WaitWindow(...) иметь значения в базе _HMG_NAMESLIST FUNCTION WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aFontColor, aBackColor ) ... LOCAL nY, nX, nW, nI, nK, oo, lo ... IF PCount() == 0 ... ELSE #ifdef _NAMES_LIST_ IF HB_ISNUMERIC( lNoWait ) oo := _SetGetNamesList():Get( cFormName ) IF ( lo := Empty( oo ) ) ; oo := oHmgData() ENDIF IF HB_ISCHAR( cMessage ) .and. !Empty( cMessage ) oo:cMessage := cMessage ENDIF IF HB_ISCHAR( cFont ) .and. !Empty( cFont ) oo:cFontName := cFont ENDIF IF HB_ISARRAY( aFontColor ) .and. Len( aFontColor ) == 3 oo:aFontColor := aFontColor ENDIF IF HB_ISARRAY( aBackColor ) .and. Len( aBackColor ) == 3 oo:aBackColor := aBackColor ENDIF IF lo ; _SetGetNamesList():Set( cFormName, oo ) ENDIF RETURN oo ENDIF #endif IF HB_ISLOGICAL( cMessage ) lNoWait := cMessage cMessage := NIL #ifdef _NAMES_LIST_ oo := _SetGetNamesList( cFormName ) IF HB_ISOBJECT( oo ) DEFAULT aFontColor := oo:aFontColor, cMessage := oo:cMessage, ; aBackColor := oo:aBackColor, cFont := oo:cFontName ENDIF #endif DEFAULT cMessage := "... Wait for the preparation to complete ..." ENDIF hb_default( @lNoWait, .F. ) hb_default( @cFont, _HMG_DefaultFontName ) ... Тогда задание default значений можно делать вызовом (можно сделать команду на установку\замену данных) WaitWindow ( "... WAIT FOR COMPLETION ...", 0,,, "DlgFont", YELLOW, RED ) WaitWindow ( , 0,,, , , BLUE ) ... добавляется простое применение (при работе без #ifdef _NAMES_LIST_ такде вызов ниже работает) WaitWindow(.T.) ... WaitWindow() старые вызовы остаются в работе, как были + WaitWindow ( .T., ,,, "DlgFont", YELLOW, RED ) тоже
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4707
Зарегистрирован: 17.02.12
|
|
Отправлено: 09.04.25 15:14. Заголовок: PS Возможно, надо сд..
PS Возможно, надо сделать так в строке IF ( HB_ISCHAR( cMessage ) .or. HB_ISARRAY( cMessage ) ) .and. !Empty( cMessage ) oo:cMessage := cMessage ENDIF
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2416
Зарегистрирован: 11.02.10
|
|
Отправлено: 09.04.25 16:21. Заголовок: SergKis пишет: Пред..
SergKis пишет: | цитата: | | Предложение для WaitWindow(...) |
| Принято. Как обычно, благодарю за помощь 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4708
Зарегистрирован: 17.02.12
|
|
Отправлено: 09.04.25 16:57. Заголовок: gfilatov2002 пишет П..
gfilatov2002 пишет Тогда еще немного добавки, она скорее относится к MODAL окну, выполнение на нем блока кода в ON INIT ... FUNCTION WaitWindow ( cMessage, lNoWait, nWidth, nSize, cFont, aFontColor, aBackColor ) ... LOCAL hFont, cTmp, nTmp, cLbl, bOnInit, l_No_Wait := .T. #ifdef _NAMES_LIST_ LOCAL oo, lo #endif ... ELSE IF HB_ISBLOCK( lNoWait ) bOnInit := lNoWait lNoWait := NIL ENDIF #ifdef _NAMES_LIST_ ... ELSE DEFINE WINDOW _HMG_CHILDWAITWINDOW MODAL IF HB_ISBLOCK( bOnInit ) l_No_Wait := .F. ENDIF ENDIF ... IF HB_ISBLOCK( bOnInit ) nK := GetFormIndex( cFormName ) _HMG_aFormInitProcedure [ nK ] := bOnInit ENDIF END WINDOW ... _ActivateWindow ( { cFormName }, l_No_Wait ) _HMG_IsModalActive := lIsModal IF ! lNoWait IF _IsWindowDefined( cFormName ) InkeyGUI( 0 ) IF _IsControlDefined ( "Timer", cFormName ) nCtEfeito := 0 cDescEfeito := "" ENDIF DoMethod ( cFormName, "Release" ) ENDIF ENDIF ...
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2417
Зарегистрирован: 11.02.10
|
|
Отправлено: 09.04.25 18:14. Заголовок: SergKis пишет: еще ..
SergKis пишет: OK 
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2418
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.04.25 12:11. Заголовок: SergKis пишет: можн..
SergKis пишет: | цитата: | | можно сделать команду на установку\замену данных |
| Добавил такую команду: | цитата: | SET WAITWINDOW [ PROMPT TO <cMessage> ] [ FONT <cFont> ] ; [ FONTCOLOR <fontcolor> ] [ BACKCOLOR <backcolor> ] |
|
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2421
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.04.25 15:18. Заголовок: Всем кому это интересно...
Завершается подготовка следующей (майской) сборки библиотеки. Что нового: Скрытый текст
* Modified: Adaptation of MiniGUI core has been revized to be compatible with Embarcadero C++ 7.70 and Visual C++ 2022 Community Edition compilers: - fixed the definition of the width and height values of the borders of all window types; - revised MiniPrint and MiniPrint2 source code to be compatible with the above modifications. Based upon a contribution of Grzegorz Wojnarowski. Many thanks to Grzegorz for his great help to improve BCC 7.7 build. Contributed by Grigory Filatov (see demo in folder \samples\Basic\MAINDEMO_(SYNTAX_I)) * Enhanced: Added the ability to use the bOnInit code block and global parameters in the WaitWindow() function. Added a new command for managing of the WAIT WINDOW properties at runtime: SET WAITWINDOW [ PROMPT TO <cMessage> ] [ FONT <cFont> ] ; [ FONTCOLOR <fontcolor> ] [ BACKCOLOR <backcolor> ] Suggested and contributed by Sergej Kiselev (see demo.prg in folder \samples\Basic\WAIT_WINDOW) * Modified: The IsArrayRGB() internal check-function has been improved to more accurate detection of valid RGB color values. Contributed by Grigory Filatov (see demo in folder \samples\Applications\ButtonBuilder) * Updated: The Alert* family functions: - minor refactoring of input parameters processing; - added comments describing the purpose of each function. Contributed by Grigory Filatov (see demo in folder \samples\Basic\AlertBoxes) * Updated: The DBF network functions: - modified NetLock() internal function; - added comments describing the purpose and parameters of each function. Contributed by Grigory Filatov (see demo in folder \samples\Basic\DATA_BOUND) * Updated: The drawing functions in the MiniGUI core: - added detailed comments to the code. Contributed by Grigory Filatov (see demo in folder \samples\Basic\DRAW) * Updated: MiniGUI Resources control system in the MiniGUI core: - added detailed comments to the code. Contributed by Grigory Filatov * Updated: The CheckStatic() function in the MiniGUI core: - added detailed comments to the code. Contributed by Grigory Filatov * Updated: TCDOMail class in the MiniGUI core: - added detailed comments to the code. Contributed by Grigory Filatov * Updated: TSimpleTaskDialog and TTaskDialog classes in the MiniGUI core: - added detailed comments to the code. Contributed by Grigory Filatov * Updated: Harbour Compiler 3.2.0dev (SVN 2025-03-25 13:54): * Updated: HbCurl library by Przemyslaw Czerpak. Contributed by Grigory Filatov (look at ReadMe.txt in folder \harbour) * New: 'Merge and aggregate datasets via SQLRDD' sample: - added a SUMMARIZE command for Harbour, inspired by Rosetta Code. Based upon a contribution of Mark Clements. Adapted for Minigui Extended by Grigory Filatov (see in folder \samples\Advanced\SQLRDD\Summarize) [PRO VERSION] * Updated: 'Multi-colored Tab Control with using of a Tab Cargo' sample: - added helper function GetTabHeaderHeight() instead of using global internal core variable. Contributed by Grigory Filatov (see in folder \samples\Basic\COLORED_TAB) * Updated: 'Merge cells of a row into one row using _TBrowse() function' sample. Contributed by Sergej Kiselev (see in folder \samples\Advanced\Tsb_MergeRowCells) * Updated: 'WebCam preview and capture' sample: - added detailed comments to the code. Contributed by Grigory Filatov (see in folder \samples\Advanced\WebCam_2)
| Если у вас есть собственные дополнения в библиотеку, то еще не поздно предложить их к рассмотрению. Благодарю за ваше внимание Желаю всем хорошего дня 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4713
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.04.25 09:14. Заголовок: gfilatov2002 Предло..
gfilatov2002 Предложение. Поправить и перенести в h_objmisc.prg ф-ии _wPost(), _wSend() до #ifdef _OBJECT_ Скрытый текст
*-----------------------------------------------------------------------------* FUNCTION _wPost( nEvent, nIndex, xParam ) *-----------------------------------------------------------------------------* LOCAL oWnd, cForm IF HB_ISOBJECT( nIndex ) IF nIndex:ClassName == 'TSBROWSE' cForm := nIndex:cParentWnd nIndex := GetControlIndex( cForm, nIndex:cControlName ) ELSE cForm := _HMG_THISFORMNAME IF __objHasData( nIndex, "Name" ) ; cForm := nIndex:Name ENDIF nIndex := NIL ENDIF ELSEIF HB_ISCHAR( nIndex ) cForm := nIndex nIndex := NIL ELSE cForm := _HMG_THISFORMNAME ENDIF IF _HMG_lOOPEnabled #ifdef _OBJECT_ IF !Empty( cForm ) .and. HB_ISCHAR( cForm ) oWnd := _WindowObj( cForm ) IF HB_ISOBJECT( oWnd ) IF HB_ISCHAR( nEvent ) nEvent := oWnd:oEvents:Get( nEvent, nEvent ) ENDIF IF HB_ISNUMERIC( nEvent ) DoEvents() ; oWnd:PostMsg( nEvent, nIndex, xParam ) ENDIF ENDIF ENDIF #else HB_SYMBOL_UNUSED(nEvent) HB_SYMBOL_UNUSED(nIndex) HB_SYMBOL_UNUSED(xParam) HB_SYMBOL_UNUSED(cForm) HB_SYMBOL_UNUSED(oWnd) #endif ENDIF RETURN NIL *-----------------------------------------------------------------------------* FUNCTION _wSend( nEvent, nIndex, xParam ) *-----------------------------------------------------------------------------* LOCAL oWnd, cForm IF HB_ISOBJECT( nIndex ) IF nIndex:ClassName == 'TSBROWSE' cForm := nIndex:cParentWnd nIndex := GetControlIndex( cForm, nIndex:cControlName ) ELSE cForm := _HMG_THISFORMNAME IF __objHasData( nIndex, "Name" ) ; cForm := nIndex:Name ENDIF nIndex := NIL ENDIF ELSEIF HB_ISCHAR( nIndex ) cForm := nIndex nIndex := NIL ELSE cForm := _HMG_THISFORMNAME ENDIF IF _HMG_lOOPEnabled #ifdef _OBJECT_ IF !Empty( cForm ) .and. HB_ISCHAR( cForm ) oWnd := _WindowObj( cForm ) IF HB_ISOBJECT( oWnd ) IF HB_ISCHAR( nEvent ) nEvent := oWnd:oEvents:Get( nEvent, nEvent ) ENDIF IF HB_ISNUMERIC( nEvent ) DoEvents() ; oWnd:SendMsg( nEvent, nIndex, xParam ) ENDIF ENDIF ENDIF #else HB_SYMBOL_UNUSED(nEvent) HB_SYMBOL_UNUSED(nIndex) HB_SYMBOL_UNUSED(xParam) HB_SYMBOL_UNUSED(cForm) HB_SYMBOL_UNUSED(oWnd) #endif ENDIF RETURN NIL #ifdef _OBJECT_ *-----------------------------------------------------------------------------* FUNCTION _WindowObj( FormName ) *-----------------------------------------------------------------------------* ...
| При SET OOP OFF использовать как пустышки в таких местах ON INIT {|| This.Topmost := .F., _wPost(0) } ON RELEASE {|| This.Hide, _wSend(90) }
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2422
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.04.25 10:04. Заголовок: SergKis пишет: Попр..
SergKis пишет: | цитата: | | Поправить и перенести в h_objmisc.prg ф-ии _wPost(), _wSend() |
| Поправил, конечно. Благодарю за помощь P.S. Пока не определился с датой публикации этой сборки... 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4714
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.04.25 11:04. Заголовок: gfilatov2002 Валитс..
gfilatov2002 Валится This.SplitBox.Height Called from VERIFYCONTROLDEFINED(6714) in module: h_controlmisc.prg Called from GETPROPERTY(5248) in module: h_controlmisc.prg пример App_OopColumns DEFINE SPLITBOX OF &cWnd HANDLE hSpl DEFINE TOOLBAR ToolBar_1 CAPTION "REPORT" BUTTONSIZE 72,32 FLAT ... END SPLITBOX _logfile(.T., _HMG_aFormReBarHandle [ This.Index ], hSpl, ; GetWindowHeight(hSpl) /*, This.SplitBox.Height*/) ...
|
 |
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 4715
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.04.25 11:50. Заголовок: PS Как узнать куда п..
PS Как узнать куда прицеплен ToolBar, т.е. параметр [ <bottom: BOTTOM> ] ? Чтобы сделать IF This.ToolBar.Bottom ... ENDIF
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2423
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.04.25 12:01. Заголовок: SergKis пишет: Вали..
SergKis пишет: | цитата: | | Валится This.SplitBox.Height |
| Это нормально В этой записи SplitBox трактуется как имя контрола, а это - окно-контейнер. Поэтому, если нужно определить высоту окна SplitBox, можно использовать такой вызов | цитата: | | h := GetWindowHeight ( hSpl ) |
| 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4716
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.04.25 12:36. Заголовок: gfilatov2002 пишет Э..
gfilatov2002 пишет Не уверен. Мы применили нормальную команду, которой должно быть все равно контрол или контейнер в обработке. Получается много лишних телодвижений, надо - запоминать где то hSpl и потом применять - или помнить переменную окна _HMG_aFormReBarHandle и через индекс с анализом handle получать 0 или высоту GetWindowHeight(_HMG_aFormReBarHandle[GetFormIndex(cForm)]) Эту канитель в GetProperty(...) обработать проще, если не контрол и параметр "Height" выдать высоту или 0 
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2424
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.04.25 14:58. Заголовок: SergKis пишет: GetW..
SergKis пишет: | цитата: | | GetWindowHeight(_HMG_aFormReBarHandle[GetFormIndex(cForm)]) |
| Сделал, конечно. Благодарю за настойчивость 
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2425
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.04.25 15:02. Заголовок: SergKis пишет: Как ..
SergKis пишет: | цитата: | | Как узнать куда прицеплен ToolBar |
| Попробуй Bottom := And ( GetWindowLong ( hToolbar , GWL_STYLE ), CCS_BOTTOM ) == CCS_BOTTOM 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4717
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.04.25 16:07. Заголовок: gfilatov2002 Так ра..
gfilatov2002 Так работает ? "ToolBar BOTTOM:", GetWindowRow( This.ToolBar.Handle ), ; And( GetWindowLong( This.ToolBar.Handle, GWL_STYLE ), CCS_BOTTOM ) == CCS_BOTTOM но надо тащить #define CCS_BOTTOM 3 хотелось бы по красивее команду
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2426
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.04.25 18:21. Заголовок: SergKis пишет: хоте..
SergKis пишет: | цитата: | | хотелось бы по красивее команду |
| Как вариант, можно написать эквивалентную функцию на Си, тогда эта константа будет скрыта в .obj файле. 
|
 |
|
|
SergKis
|
| постоянный участник
|
Пост N: 4718
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.04.25 19:12. Заголовок: gfilatov2002 пишет м..
gfilatov2002 пишет | цитата: | | можно написать эквивалентную функцию на Си |
| В h_controlmisc.prg есть #include "i_winuser.ch", можно и GetProperty() написать, как "Enabled" к контролу, возвращает .T.\.F.
|
 |
|
|
gfilatov2002
|
| moderator
|
Пост N: 2427
Зарегистрирован: 11.02.10
|
|
Отправлено: 26.04.25 11:16. Заголовок: SergKis пишет: можн..
SergKis пишет: | цитата: | | можно и GetProperty() написать |
| Добавил свойство Alignment с таким описанием: | цитата: | * Enhanced: 'Alignment' property is supported for TOOLBAR control. You can get this property at runtime: - function syntax: GetProperty ( FormName, ToolBarName, 'Alignment' ) --> cAlignment - pseudo-OOP syntax: FormName.ToolBarName.Alignment --> cAlignment where cAlignment may be 'TOP' or 'BOTTOM'. Requested by Sergej Kiselev. Contributed by Grigory Filatov |
| Использовать: IsTBbottom := (FormName.ToolBarName.Alignment == 'BOTTOM') // возвращает .T.\.F. Благодарю за помощь 
|
 |
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|