On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
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;
- новые и обновленные старые примеры (как обычно ).




Спасибо: 5 
Профиль
Ответов - 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 пишет:

 цитата:
Правка не большая


Поправил, конечно.
Благодарю за помощь

Спасибо: 0 
Профиль
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 ) тоже

Спасибо: 0 
Профиль
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


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2416
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.04.25 16:21. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение для WaitWindow(...)


Принято.
Как обычно, благодарю за помощь

Спасибо: 0 
Профиль
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
...


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2417
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.04.25 18:14. Заголовок: SergKis пишет: еще ..


SergKis пишет:

 цитата:
еще немного добавки


OK

Спасибо: 0 
Профиль
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> ]



Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2421
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.04.25 15:18. Заголовок: Всем кому это интересно...


Завершается подготовка следующей (майской) сборки библиотеки.

Что нового:
Скрытый текст

Если у вас есть собственные дополнения в библиотеку, то еще не поздно предложить их к рассмотрению.

Благодарю за ваше внимание

Желаю всем хорошего дня

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 4713
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.04.25 09:14. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение. Поправить и перенести в h_objmisc.prg ф-ии _wPost(), _wSend() до #ifdef _OBJECT_ Скрытый текст

При SET OOP OFF использовать как пустышки в таких местах
ON INIT {|| This.Topmost := .F., _wPost(0) }
ON RELEASE {|| This.Hide, _wSend(90) }

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2422
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.04.25 10:04. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправить и перенести в h_objmisc.prg ф-ии _wPost(), _wSend()


Поправил, конечно.
Благодарю за помощь

P.S. Пока не определился с датой публикации этой сборки...

Спасибо: 0 
Профиль
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*/)
...


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 4715
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.04.25 11:50. Заголовок: PS Как узнать куда п..


PS
Как узнать куда прицеплен ToolBar, т.е. параметр [ <bottom: BOTTOM> ] ?
Чтобы сделать
IF This.ToolBar.Bottom
...
ENDIF

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2423
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.04.25 12:01. Заголовок: SergKis пишет: Вали..


SergKis пишет:

 цитата:
Валится This.SplitBox.Height


Это нормально
В этой записи SplitBox трактуется как имя контрола, а это - окно-контейнер.

Поэтому, если нужно определить высоту окна SplitBox, можно использовать такой вызов

 цитата:
h := GetWindowHeight ( hSpl )




Спасибо: 0 
Профиль
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

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2424
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.04.25 14:58. Заголовок: SergKis пишет: GetW..


SergKis пишет:

 цитата:
GetWindowHeight(_HMG_aFormReBarHandle[GetFormIndex(cForm)])


Сделал, конечно.
Благодарю за настойчивость

Спасибо: 0 
Профиль
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


Спасибо: 0 
Профиль
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
хотелось бы по красивее команду

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 2426
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.04.25 18:21. Заголовок: SergKis пишет: хоте..


SergKis пишет:

 цитата:
хотелось бы по красивее команду


Как вариант, можно написать эквивалентную функцию на Си, тогда эта константа будет скрыта в .obj файле.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 4718
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.04.25 19:12. Заголовок: gfilatov2002 пишет м..


gfilatov2002 пишет
 цитата:
можно написать эквивалентную функцию на Си


В h_controlmisc.prg есть #include "i_winuser.ch", можно и GetProperty() написать, как "Enabled" к контролу, возвращает .T.\.F.

Спасибо: 0 
Профиль
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.
Благодарю за помощь

Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 144
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет