On-line: SergKis, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
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 [только новые]


Andrey
постоянный участник




Пост N: 6723
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.06.20 15:25. Заголовок: Вспомнил, как делал ..


Вспомнил, как делал раньше. Только запрос не делал, из-за этого и непонятно было как делать.
 
bDelete := { | nAt, oBrw | ItogoNN(oBrw) }
oBrw1:SetDeleteMode( .T., .F., bDelete ) // здесь включаем клавишу DEL !!!


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

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




Пост N: 3260
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.06.20 19:50. Заголовок: gfilatov2002 :sm36..


gfilatov2002
Спасибо, упустил.

Спасибо: 0 
Профиль
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", ;
"Восстановить", "Удалить")+" запись в таблице ?", "Подтверждение") } )

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

т.е. перенести этот код ниже, чтобы учитывать восстановление записи также.
Сделал, конечно.
Благодарю за помощь

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




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


Подготовил 5-ю бету для новой сборки 20.06 со следующим списком изменений:
Скрытый текст

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

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


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

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


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

так что можно использовать числа вместо имен

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


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




Пост N: 1732
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.06.20 20:47. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно в сервер примера LetoDbf внести небольшие изменения


Пересобрал сервер с этими изменениями, все работает нормально.
Благодарю за помощь

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




Пост N: 1733
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.06.20 09:47. Заголовок: Всем кому это интересно


Опубликована новая сборка 20.06 для BCC 5.8.2 и компиляторов Harbour и xHarbour.

Базовый дистрибутив находится по адресу

http://hmgextended.com/files/CONTRIB/hmg-20.06-setup.exe

Добавил также архив для бесплатного Embarcadero C++ 10.2 'Tokyo' compiler

http://hmgextended.com/files/CONTRIB/hmg2003_bcc102.exe

Огромная благодарность Сергею Киселеву за помощь при подготовке этой сборки

Для частного использования подготовлены также два дистрибутива, основанные на компиляторе MinGW GNU C версии 10.1.1.

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

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




Пост N: 1734
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.07.20 10:24. Заголовок: Всем кому это интересно


Выложил обновление для сборки 20.06 (Update 1) с учетом последних исправлений

Базовый дистрибутив для BCC 5.8.2 находится по адресу

http://hmgextended.com/files/CONTRIB/hmg-20.06-setup.exe

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

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




Пост N: 6739
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.07.20 18:51. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Выложил обновление для сборки 20.06 (Update 1) с учетом последних исправлений


Пере собрал свои проги ! Полёт нормальный !

Можно команду SET MULTIPLE OFF WARNING сделать через AlertStop() ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1568
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.07.20 19:04. Заголовок: Andrey пишет: Можно..


Andrey пишет:

 цитата:
Можно команду SET MULTIPLE OFF WARNING сделать через AlertStop() ?

не надо. Или стандарт или с выбором куда выводить. Дизайн AlertStop() не к любому интерфейсу по фейсу
Ps.. Кому нужно будет, могут команду переопределить

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




Пост N: 6740
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.07.20 20:22. Заголовок: Haz пишет: Кому нуж..


Haz пишет:

 цитата:
Кому нужно будет, могут команду переопределить


А как ?
Писать свою функцию не хочется.
Можно переключатель сделать в стандартной библиотеке ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1569
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.07.20 20:29. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как ?
Писать свою функцию не хочется.

зачем писать свою. Посмотри как в ch команда транслируется и замени для себя msgstop() на что хочешь.

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

Исправить в коде это можно ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1570
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.07.20 22:22. Заголовок: Andrey пишет: Испра..


Andrey пишет:

 цитата:
Исправить в коде это можно ?


Андрей, конечно можно исправить. Напиши Григорию обоснованное исправление и он точно скажет тебе спасибо.
Из твоей отладки я вижу, что по условию выдаст пустую строку. Кто и зачем это условие поставил я не задумывался. В принципе исходник простой, разобраться не сложно.

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


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