On-line: Andrey, гостей 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: 5983
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.07.18 21:15. Заголовок: Всем привет ! А библ..


Всем привет !
А библу hbole совсем выкинули из версии 18.06 ?
Больше её не будет в Харборе ?

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




Пост N: 1332
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.07.18 16:17. Заголовок: Andrey пишет: hbole..


Andrey пишет:

 цитата:
hbole совсем выкинули из версии 18.06


Да, верно

Andrey пишет:

 цитата:
Больше её не будет


Нет, не будет
Функционал этой устаревшей библиотеки полностью заменяется связкой contrib библиотек hbwin + xhb

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


Пост N: 802
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 30.07.18 16:49. Заголовок: hbole совсем выкинул..



 цитата:
hbole совсем выкинули из версии 18.06



Собираю НОВЫЙ проект в дизайнере.
Программа не собирается, требует hbole.
Стараы проекты собираются

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




Пост N: 1333
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.07.18 17:25. Заголовок: Vlad04 пишет: требу..


Vlad04 пишет:

 цитата:
требует hbole


Обнови локально HMGS-IDE до версии 1.4.3.4
или
дождись новой сборки 18.07, которая выйдет завтра

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




Пост N: 1334
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.07.18 09:52. Заголовок: Выпущена новая сборк..


Выпущена новая сборка 18.07 для BCC 5.51 и компиляторов Harbour и xHarbour

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

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

Рекомендуется к использованию

Также имеются в наличии готовые сборки для:

- MinGW 8.1.0 32-bit для Harbour 3.2.0dev;

- MinGW 8.1.0 64-bit для Harbour 3.4.0dev;

- MS VisualC 2017 32-bit для Harbour 3.2.0dev;

- Borland/Embarcadero C++ 7.3 (32-bit) для Harbour 3.4.0dev (НОВАЯ!).

Благодарю за Ваше внимание и поддержку

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




Пост N: 1954
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.08.18 13:19. Заголовок: gfilatov2002 Добави..


gfilatov2002
Добавил в класс TsBrowse переменную для использования как контейнер handle фонтов
 
DATA aFontHandle AS ARRAY INIT {}

по мне это удобнее, чем внешние переменные, к примеру вместо STATIC a_Font
 
STATIC FUNCTION TsbFont( nAt, nCol, oBrw )
LOCAL hFont, lVal //, nVar
STATIC a_Font
Default nAt := 0

If a_Font == Nil .or. pCount() == 0
a_Font := {}

AAdd( a_Font, GetFontHandle( "Font_1" ) )
AAdd( a_Font, GetFontHandle( "Font_2" ) )
AAdd( a_Font, GetFontHandle( "Font_3" ) )
AAdd( a_Font, GetFontHandle( "Font_4" ) )
AAdd( a_Font, GetFontHandle( "Font_5" ) )
AAdd( a_Font, GetFontHandle( "Font_6" ) )
AAdd( a_Font, GetFontHandle( "Font_7" ) )
...

делать
AAdd( :aFontHandle, GetFontHandle( "Font_1" ) )
AAdd( :aFontHandle, GetFontHandle( "Font_2" ) )
AAdd( :aFontHandle, GetFontHandle( "Font_3" ) )
AAdd( :aFontHandle, GetFontHandle( "Font_4" ) )
AAdd( :aFontHandle, GetFontHandle( "Font_5" ) )
AAdd( :aFontHandle, GetFontHandle( "Font_6" ) )
AAdd( :aFontHandle, GetFontHandle( "Font_7" ) )
и использовать в блоке кода от ob:aFontHandle[...]
oCol:hFont := {|nr,nc,ob| TsbFont(nr, nc, ob)}


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




Пост N: 193
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 10.08.18 16:18. Заголовок: Пример INET_CHECKER зависает


Пример INET_CHECKER зависает после длительной больше 8 часов работы
иконка исчезает и с меню тоже неизвестно что творится .

А у меня на базе етого примера управление LetoDB прицеплено . Пришлось откатится !

Windows 7 / 32bit, проверьте пожалуйста проявляется ли ето зависание на других версиях, т.к. у меня нет возможности сейчас !

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




Пост N: 6903
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 10.08.18 21:12. Заголовок: sashaBG Скорее всег..


sashaBG
Скорее всего утечка памяти

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




Пост N: 1337
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.08.18 11:43. Заголовок: sashaBG пишет: Прим..


sashaBG пишет:

 цитата:
Пример INET_CHECKER зависает


Благодарю за сообщение об ошибке

Dima пишет:

 цитата:
утечка памяти


Да, это утечка ресурсов

Я уже поправил код обработки изменения иконки в трее (для новой сборки).
Сейчас тестирую на длительность работы...

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




Пост N: 1958
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.08.18 22:17. Заголовок: gfilatov2002 Немног..


gfilatov2002
Немного изменил
 
CLASS TSBrowse
...
// METHOD SetGetValue( xCol, xVal )
METHOD SetGetValue( xCol, xVal ) INLINE ::bDataEval( ::GetColumn( hb_defaultValue( xCol, ::nCell ) ), xVal )

METHOD SetValue( xCol, xVal ) INLINE ::SetGetValue( xCol, xVal )
METHOD GetValue( xCol ) INLINE ::SetGetValue( xCol )

METHOD bDataEval( oCol, xVal )

// METHOD bDataEval( oCol ) INLINE iif(Empty(oCol:cAlias) .or. '->' $ oCol:cField, ;
// Eval( oCol:bData ), (oCol:cAlias)->( Eval( oCol:bData ) ))
...
METHOD bDataEval( oCol, xVal ) CLASS TSBrowse
LOCAL lNoAls := Empty(oCol:cAlias) .or. '->' $ oCol:cField

If xVal == Nil // FieldGet
If lNoAls; xVal := Eval( oCol:bData )
Else ; xVal := (oCol:cAlias)->( Eval( oCol:bData ) )
EndIf
Else // FieldPut
If lNoAls; Eval( oCol:bData, xVal )
Else ; (oCol:cAlias)->( Eval( oCol:bData, xVal ) )
EndIf
EndIf

RETURN xVal

...


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




Пост N: 1338
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.08.18 09:35. Заголовок: SergKis пишет: Немн..


SergKis пишет:

 цитата:
Немного изменил


OK

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




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


gfilatov2002
ПродолжениеСкрытый текст



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




Пост N: 1960
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.08.18 11:29. Заголовок: gfilatov2002 И еще,..


gfilatov2002
И еще, если добавить в TsColumn
 
DATA bDecode // Charset decode or other
DATA bEncode // Charset encode or other

...
изменить
METHOD bDataEval( oCol, xVal, nCol ) CLASS TSBrowse
LOCAL cAlias := oCol:cAlias
LOCAL lNoAls := Empty(cAlias) .or. '->' $ oCol:cField

If xVal == Nil // FieldGet
If lNoAls; xVal := Eval( oCol:bData )
Else ; xVal := (cAlias)->( Eval( oCol:bData ) )
EndIf
Else // FieldPut
If HB_ISBLOCK(oCol:bEncode)
nCol := hb_defaultValue( nCol, ::nCell )
If lNoAls
xVal := Eval( oCol:bEncode, xVal, Self, nCol )
Else
xVal := (cAlias)->( Eval( oCol:bEncode, xVal, Self, nCol ) )
EndIf
EndIf
If lNoAls; Eval( oCol:bData, xVal )
Else ; (cAlias)->( Eval( oCol:bData, xVal ) )
EndIf
EndIf

RETURN xVal

...
METHOD PostEdit( uTemp, nCol, bValid ) CLASS TSBrowse
...
If Eval( If( ! ::lAppendMode, bRecLock, bAddRec ), uTemp )

// Eval( ::aColumns[ nCol ]:bData, uTemp, Self )
::bDataEval( ::aColumns[ nCol ], uTemp, nCol )

SysRefresh()

If lAppend

If ! Empty( ::aDefault )
ASize( ::aDefault, Len( ::aColumns ) )
AEval( ::aDefault, { | e, n | If( e != Nil .and. n != nCol, If( Valtype( e ) == "B", ;
::bDataEval( ::aColumns[ n ], Eval( e, Self ), n ), ;
::bDataEval( ::aColumns[ n ], e, n ) ), Nil ) } )

// Eval( ::aColumns[ n ]:bData, Eval( e, Self ) ), ;
// Eval( ::aColumns[ n ]:bData, e ) ), Nil ) } )
::DrawLine()
EndIf
...
EndIf

// Eval( ::aColumns[ nCol ]:bData, uTemp )
::bDataEval( ::aColumns[ nCol ], uTemp, nCol )

SysRefresh()

If ::aColumns[ nCol ]:bPostEdit != Nil
Eval( ::aColumns[ nCol ]:bPostEdit, uTemp, Self, lAppend )
EndIf
...
If lAppend
If ! Empty( ::aDefault )
ASize( ::aDefault, Len( ::aColumns ) )
AEval( ::aDefault, { | e, n | If( e != Nil .and. n != nCol, If( Valtype( e ) == "B", ;
::bDataEval( ::aColumns[ n ], Eval( e, Self ), n ), ::bDataEval( ::aColumns[ n ], e, n ) ), Nil ) } )

// Eval( ::aColumns[ n ]:bData, Eval( e, Self ) ), Eval( ::aColumns[ n ]:bData, e ) ), Nil ) } )
EndIf
::DrawLine()
EndIf
...
запись в таблицу будет проще решать при работе с CHARSET


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




Пост N: 1961
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.08.18 12:07. Заголовок: PS Можно перенести в..


PS
Можно перенести в :bDataEval и :bDecode, тогда изменения такие
 
METHOD bDataEval( oCol, xVal, nCol ) CLASS TSBrowse
LOCAL cAlias := oCol:cAlias
LOCAL lNoAls := Empty(cAlias) .or. '->' $ oCol:cField

If xVal == Nil // FieldGet
If lNoAls; xVal := Eval( oCol:bData )
Else ; xVal := (cAlias)->( Eval( oCol:bData ) )
EndIf
If HB_ISBLOCK(oCol:bDecode) .and. nCol != Nil
If lNoAls; xVal := Eval( oCol:bDecode, xVal, Self, nCol )
Else ; xVal := (cAlias)->( Eval( oCol:bDecode, xVal, Self, nCol ) )
EndIf
EndIf

Else // FieldPut
If HB_ISBLOCK(oCol:bEncode)
nCol := hb_defaultValue( nCol, ::nCell )
If lNoAls
xVal := Eval( oCol:bEncode, xVal, Self, nCol )
Else
xVal := (cAlias)->( Eval( oCol:bEncode, xVal, Self, nCol ) )
EndIf
EndIf
If lNoAls; Eval( oCol:bData, xVal )
Else ; (cAlias)->( Eval( oCol:bData, xVal ) )
EndIf
EndIf

RETURN xVal
...
METHOD DrawLine( xRow ) CLASS TSBrowse
...
ElseIf cColAls != Nil
If HB_ISBLOCK( oColumn:bSeek )
( cColAls )->( Eval( oColumn:bSeek, Self, nJ ) )
EndIf
uData := ::bDataEval( oColumn, , nJ )

// uData := ( cColAls )->( Eval( oColumn:bData ) )
// If Valtype( oColumn:bDecode ) == 'B'
// uData := ( cColAls )->( Eval( oColumn:bDecode, uData, Self, nJ ) )
// EndIf
Else
If HB_ISBLOCK( oColumn:bSeek )
Eval( oColumn:bSeek, Self, nJ )
EndIf
uData := ::bDataEval( oColumn, , nJ )

// uData := Eval( oColumn:bData )
// If Valtype( oColumn:bDecode ) == 'B'
// uData := Eval( oColumn:bDecode, uData, Self, nJ )
// EndIf
EndIf
...
METHOD DrawSelect( xRow ) CLASS TSBrowse
...
ElseIf cColAls != Nil
If HB_ISBLOCK( oColumn:bSeek )
( cColAls )->( Eval( oColumn:bSeek, Self, nJ ) )
EndIf
uData := ::bDataEval( oColumn, , nJ )

// uData := ( cColAls )->( Eval( oColumn:bData ) )
// If HB_ISBLOCK( oColumn:bDecode )
// uData := ( cColAls )->( Eval( oColumn:bDecode, uData, Self, nJ ) )
// EndIf
Else
If HB_ISBLOCK( oColumn:bSeek )
Eval( oColumn:bSeek, Self, nJ )
EndIf
uData := ::bDataEval( oColumn, , nJ )

// uData := Eval( oColumn:bData )
// If HB_ISBLOCK( oColumn:bDecode )
// uData := Eval( oColumn:bDecode, uData, Self, nJ )
// EndIf
EndIf
...


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




Пост N: 1962
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.08.18 12:14. Заголовок: PS Пример из поста 1..


PS
Пример из поста 1940 этой темы, работает нормально https://my-files.ru/dofcn3

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




Пост N: 1339
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.08.18 15:32. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно перенести в :bDataEval и :bDecode


Выполнил предложенные изменения.
Благодарю за помощь

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




Пост N: 1963
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.08.18 18:15. Заголовок: gfilatov2002 Еще не..


gfilatov2002
Еще немного поправил
 
METHOD SetGetValue( xCol, xVal ) INLINE ::bDataEval ( xCol, xVal )

METHOD SetValue( xCol, xVal ) INLINE ::SetGetValue( xCol, xVal )
METHOD GetValue( xCol ) INLINE ::SetGetValue( xCol )
...
METHOD bDataEval( oCol, xVal, nCol ) CLASS TSBrowse
LOCAL cAlias, lNoAls

If ! HB_ISOBJECT( oCol )
nCol := iif( HB_ISCHAR( oCol ), ::nColumn( oCol ), oCol )
oCol := ::aColumns[ nCol ]
EndIf

cAlias := oCol:cAlias
lNoAls := Empty(cAlias) .or. '->' $ oCol:cField

If xVal == Nil // FieldGet
If lNoAls; xVal := Eval( oCol:bData )
Else ; xVal := (cAlias)->( Eval( oCol:bData ) )
EndIf
If HB_ISBLOCK(oCol:bDecode) .and. nCol != Nil
If lNoAls; xVal := Eval( oCol:bDecode, xVal, Self, nCol )
Else ; xVal := (cAlias)->( Eval( oCol:bDecode, xVal, Self, nCol ) )
EndIf
EndIf
Else // FieldPut
If HB_ISBLOCK(oCol:bEncode) .and. nCol != Nil
If lNoAls; xVal := Eval( oCol:bEncode, xVal, Self, nCol )
Else ; xVal := (cAlias)->( Eval( oCol:bEncode, xVal, Self, nCol ) )
EndIf

EndIf
If lNoAls; Eval( oCol:bData, xVal )
Else ; (cAlias)->( Eval( oCol:bData, xVal ) )
EndIf
EndIf

RETURN xVal


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




Пост N: 1340
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.08.18 20:28. Заголовок: SergKis пишет: немн..


SergKis пишет:

 цитата:
немного поправил


Принято с благодарностью

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




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


Всем кому это интересно

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

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

P.S. И немного о грустном:

Кузьме Скрябину сегодня исполнилось бы 50 лет...


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




Пост N: 1965
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.08.18 22:35. Заголовок: gfilatov2002 Возмож..


gfilatov2002
Возможно будет интересно (альтернатива :bData). Ввел в TsColumns DATA bValue.
Скрытый текст

Использование
 
oColum:cName := 'MET'
oColum:lChecBox := .T.
oColum:Cargo := oKeyData() // контейнер\список для recno отмеченных записей
oColum:bValue := {|xval,obrw,ncol,ocol| ;
xval := ocol:Cargo:Get((obrw:cAlias)->( RecNo() )), ;
ncol := ! empty(xval) } // .T. - при наличии в контейнере
...
oBrw:UserKeys( VK_SPACE, {|obr|
Local oCol := obr:aColumns[obr:nCell]
Local nRec
If oCol:cName == 'MET'
nRec := (obr:cAlias)->( RecNo() )
If empty(oCol:Cargo:Get(nRec)) // добавим в список
oCol:Cargo:Set(nRec, nRec)
Else
oCol:Cargo:Del(nRec) // уберем из списка
EndIf
EndIf
Return Nil
} )


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