On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
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: 1264
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.03.18 20:17. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправьте APP_OOPREPORT для альтернативного задания клавиш


Сделал. Благодарю за помощь

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



Пост N: 1799
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.03.18 12:24. Заголовок: gfilatov2002 Вспомн..


gfilatov2002
Вспомнил про особенность работы с context menu ( извините, что не сразу ) Скрытый текст


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




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


SergKis пишет:

 цитата:
Вспомнил про особенность работы с context menu


Спасибо

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



Пост N: 1800
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.03.18 13:41. Заголовок: SergKis пишет Вспомн..


SergKis пишет
 цитата:
Вспомнил про особенность работы с context menu


Особенность в том, что работая в context menu (думаю с обычным будет так же)
MENUITEM ... ACTION wPost()
собственные сообщения рабатают, а сообщения прорисовки кнопок ToolBar теряются.
В данном примере не снимается с кнопки ToolBar состояние Disable, а Caption 1ой кнопки срабатывает.
Т.е. надо выйти из меню и потом работать, что показано в примере.

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




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


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

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

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

Рекомендуется к использованию
Выпуск новых сборок опложен на неопределенный период вследствие финансовых и др. проблем
Благодарю за Ваше внимание и поддержку

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




Пост N: 5789
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.03.18 10:33. Заголовок: Ура ! Наконец то дож..


Ура ! Наконец то дождались !



Спасибо: 0 
Профиль
Alw Spencer



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 31.03.18 22:03. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Выпущена новая сборка 18.03



Спасибо и Приветствую

Просьба
Есть ли возможность получить сборки для компиляторов MinGW32 и MinGW64?

Спасибо.


Спасибо: 0 
gfilatov2002
moderator




Пост N: 1271
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 31.03.18 22:39. Заголовок: Alw Spencer пишет: ..


Alw Spencer пишет:

 цитата:
Есть ли возможность получить сборки для компиляторов MinGW32 и MinGW64?


Да, это возможно на платной основе, я уже подготовил такие сборки для свежего релиза.

Заплатите небольшой взнос на развитие Минигуи через сервис PayPal, и я пришлю Вам ссылки для выкачки этих сборок.


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




Пост N: 5805
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.04.18 23:08. Заголовок: Andrey пишет: #defi..


Andrey пишет:

 цитата:
#define CLR_OK RGB( 238, 89,149 ) // оранжевый, как Одноклассники



Ошибку допустил. Нужно RGB( 238, 130, 8 )

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




Пост N: 1274
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.04.18 11:00. Заголовок: Всем кому это интере..


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

В честь Дня освобождения Одессы, который отмечается сегодня, подготовил 4-ю бету для новой сборки библиотеки
со следующим списком изменений
Скрытый текст

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

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




Пост N: 5818
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.04.18 10:39. Заголовок: Ждем ! :sm36: Нов..


Ждем !

Новая версия МиниГуи 18.03
Ошибка в методе oBrw:ExcelOle(cXlsFile, ...) !!!
Отрезает имя файла, когда задаёшь полный путь и длинное имя файла.
Хотя в методе oBrw:Excel2() всё отлично работает...

Имя файла делаю так:
   cPath      := GetStartUpFolder() + "\"   // путь записи файла 
cMaska := "Test2_ExcelOle" // шаблон файла
cXlsFile := cPath + cMaska + "_" + DTOC( DATE() ) + "_"
cXlsFile += SUBSTR( CharRepl( ":", TIME(), "-" ), 1, 5 ) //+ ".xls"

И почему то пишет в папку Мои документы, а не
C:\MiniGUI\SAMPLES\Advanced\Tsb_Brw2xml\Test2_ExcelOle_17.04.2018_09-48
Может это особенность Excel 2003 ?
Есть кто может это проверить на другом Excel 2003 или новее ?

Григорий, пример отослал на почту !
P.S. Попробовал на Excel 2007 - то же самое, режет имя до "Test2_ExcelOle_17.04"

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




Пост N: 1275
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.04.18 10:45. Заголовок: Не удержался и выпус..


Не удержался и выпустил новую исправленную сборку 18.04 для BCC 5.51 для компиляторов Harbour и xHarbour

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

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

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

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

P.S. В последний момент в эту сборку были включены изменения в библиотеку TSBrowse по просьбе Андрея...

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




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


gfilatov2002 пишет:

 цитата:
P.S. В последний момент в эту сборку были включены изменения в библиотеку TSBrowse по просьбе Андрея...


СПАСИБО !
Буду тестировать этот oBrw:ExcelOle() ...

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



Пост N: 1819
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.05.18 20:35. Заголовок: gfilatov2002 Поправ..


gfilatov2002
Поправьте пожалуйста
 
h_objmisc.prg
*-----------------------------------------------------------------------------*
FUNCTION Do_Obj( nHandle, bBlock, p1, p2, p3 )
*-----------------------------------------------------------------------------*
LOCAL o

IF hmg_IsWindowObject( nHandle )
o := hmg_GetWindowObject( nHandle )
IF ISBLOCK( bBlock )
IF o:IsWindow
RETURN Do_WindowEventProcedure ( bBlock, o:Index, o, p1, p2, p3 )
ELSE
RETURN Do_ControlEventProcedure ( bBlock, o:Index, o, p1, p2, p3 )
ENDIF

ENDIF
ENDIF

RETURN o

Пример APP_OOPREPORT\demo.prg, заменить
*-----------------------------------------------------------------------------*
FUNC wPost( nEvent, nIndex, xParam )
*-----------------------------------------------------------------------------*
LOCAL oWnd

If HB_ISOBJECT(nIndex)

oWnd := _WindowObj(nIndex:cParentWnd)
oWnd:SetProp(nEvent, xParam)
oWnd:PostMsg(nEvent)

Else

DEFAULT nEvent := val( This.Name )

If nEvent > 0
oWnd := (ThisWindow.Object)
oWnd:SetProp(nEvent, xParam)
oWnd:PostMsg(nEvent, nIndex)
EndIf

EndIf

RETURN Nil

*-----------------------------------------------------------------------------*
FUNC wSend( nEvent, nIndex, xParam )
*-----------------------------------------------------------------------------*
LOCAL oWnd

If HB_ISOBJECT(nIndex)

oWnd := _WindowObj(nIndex:cParentWnd)
oWnd:SetProp(nEvent, xParam)
oWnd:SendMsg(nEvent)

Else

DEFAULT nEvent := val( This.Name )

If nEvent > 0
oWnd := (ThisWindow.Object)
oWnd:SetProp(nEvent, xParam)
oWnd:SendMsg(nEvent, nIndex)
EndIf

EndIf

RETURN Nil

Это для передачи параметров в блок кода события.
:Event( 1, {|ow,ky| myEvent(ow, ky) } )
В блоке кода извлекаем параметры
Func myEvent( oW, nEvent )
xParam := oW:GetProp(nEvent)
...

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




Пост N: 1278
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.05.18 20:57. Заголовок: SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправьте пожалуйста


Добавил эти корректировки...
Благодарю за помощь


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




Пост N: 1280
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.05.18 11:54. Заголовок: Всем кому это интере..


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

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

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

Спасибо: 1 
Профиль
SergKis



Пост N: 1824
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.05.18 10:05. Заголовок: gfilatov2002 У себя..


gfilatov2002
У себя сделал правку (для обхода picture при lMultiLine == .T.)
 
METHOD DrawLine( xRow ) CLASS TSBrowse
...
If ::lIsArr .and. ( ::lAppendMode .or. ::nAt > Len( ::aArray ) )
uData := "" // append mode for arrays
Else
uData := Eval( oColumn:bData )
EndIf

lMultiLine := Valtype( uData ) == "C" .and. At( Chr( 13 ), uData ) > 0

nVertText := 0
lCheck := ( oColumn:lCheckBox .and. ValType( uData ) == "L" .and. oColumn:lVisible )
...
ElseIf ! lCheck .and. oColumn:lEmptyValToChar .and. Empty( uData )
uData := ""
ElseIf Empty( cPicture )
uData := If( Valtype( uData ) != "C", cValToChar( uData ), uData )
ElseIf lMultiLine

Else
uData := If( uData == NIL, "", Transform( uData, cPicture ) )
EndIf
nAlign := If( ValType( nAlign ) == "B", Eval( nAlign, nJ, Self ), nAlign )
...
EndIf

// lMultiLine := Valtype( uData ) == "C" .and. At( Chr( 13 ), uData ) > 0

If oColumn:l3DTextCell != Nil
...
METHOD DrawSelect( xRow ) CLASS TSBrowse
...
lAdjBmp := oColumn:lAdjBmp
nAlign := oColumn:nAlign
lOpaque := .t.
lMulti := .F.

If nJ == 1 .and. ! Empty( ::hBmpCursor )
uBmpCell := ::hBmpCursor
...
If ::lIsArr .and. ( ::lAppendMode .or. ::nAt > Len( ::aArray ) )
uData := "" // append mode for arrays
Else
uData := Eval( oColumn:bData )
EndIf

lMulti := Valtype( uData ) == "C" .and. At( Chr( 13 ), uData ) > 0

cPicture := If( ValType( oColumn:cPicture ) == "B", Eval( oColumn:cPicture, ::nAt, nJ, Self ), ;
oColumn:cPicture )

lCheck := ( oColumn:lCheckBox .and. ValType( uData ) == "L" .and. oColumn:lVisible )
...
ElseIf ! lCheck .and. oColumn:lEmptyValToChar .and. Empty( uData )
uData := ""
ElseIf Empty( cPicture )
uData := If( Valtype( uData ) != "C", cValToChar( uData ), uData )
ElseIf lMulti

Else
uData := If( uData == NIL, "", Transform( uData, cPicture ) )
EndIf
EndIf
...
Default hBitMap := 0
// lMulti := Valtype( uData ) == "C" .and. At( Chr( 13 ), uData ) > 0

If lCheck
...


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



Пост N: 1834
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.06.18 11:44. Заголовок: gfilatov2002 Добави..


gfilatov2002
Добавить для получения массивом установленных значений :SetProp
 
CLASS TKeyData
...
_METHOD GetAll( lAll )

...
METHOD GetAll( lAll ) CLASS TKeyData
LOCAL aRet := {}

If lAll == Nil; ::Eval({|val,key| AAdd(aRet, { val, key }) })
ElseIf lAll ; ::Eval({|val | AAdd(aRet, val ) })
Else ; ::Eval({|val,key| AAdd(aRet, { key, val }) })
EndIf

RETURN aRet

...
CLASS TThrData
...
_METHOD GetAll( lAll )

...
METHOD GetAll( lAll ) CLASS TThrData
LOCAL aRet := {}

If lAll == Nil; ::Eval({|val,key| AAdd(aRet, { val, key }) })
ElseIf lAll ; ::Eval({|val | AAdd(aRet, val ) })
Else ; ::Eval({|val,key| AAdd(aRet, { key, val }) })
EndIf

RETURN aRet

...
CLASS TWndData
...
METHOD AllProp( lArray ) INLINE ::oProp:GetAll( lArray )

...

Следующее предложение не так однозначно (в метод ControlAssign cMessage получаем в upper из __GetMessage() )
 
CLASS TWndData
...
VAR oHand AS OBJECT
VAR oNameUpper AS OBJECT

EXPORTED:
...
METHOD Def( nIndex, cName, nHandle, nParent, cType, cVar ) INLINE ( ;
...
::oName := oKeyData(), ::oHand := oKeyData(), ;
::oNameUpper := oKeyData(), ;

::oProp := oKeyData(), hmg_SetWindowObject( ::nHandle, Self ), ;
...
METHOD GetObj( xName ) INLINE iif( HB_ISCHAR( xName ), ::oName:Get( xName ), ;
::oHand:Get( xName ) )
METHOD GetObjByName( cName ) INLINE ::oNameUpper:Get( upper(cName) )


// Destructor
METHOD Destroy() INLINE ( ;
...
::oName := iif( HB_ISOBJECT( ::oName ), ::oName:Destroy() , Nil ), ;
::oNameUpper := iif( HB_ISOBJECT( ::oNameUpper ), ::oNameUpper:Destroy() , Nil ), ;

::oHand := iif( HB_ISOBJECT( ::oHand ), ::oHand:Destroy() , Nil ), ;
...
#endif

ERROR HANDLER ControlAssign

ENDCLASS
...
METHOD ControlAssign( xValue ) CLASS TWndData
LOCAL cMessage, uRet, lError, o

cMessage := ALLTRIM( UPPER( __GetMessage() ) )
lError := .T.

If PCOUNT() == 0
o := ::GetObjByName( cMessage )
If HB_ISOBJECT(o)
uRet := _GetValue( , , o:nIndex )
lError := .F.
EndIf
ElseIf PCOUNT() == 1
o := ::GetObjByName( SUBSTR( cMessage, 2 ) )
If HB_ISOBJECT(o)
_SetValue( , , xValue, o:nIndex )
uRet := _GetValue( , , o:nIndex )
lError := .F.
EndIf
EndIf

If lError
uRet := Nil
::MsgNotFound( cMessage )
EndIf

RETURN uRet

...
CLASS TCnlData INHERIT TWndData
...

METHOD Set() INLINE ( iif( HB_ISOBJECT( ::oWin:oName ), ::oWin:oName:Set ( ::cName , Self ), ), ;
iif( HB_ISOBJECT( ::oWin:oNameUpper ), ::oWin:oNameUpper:Set( upper(::cName), Self ), ), ;

iif( HB_ISOBJECT( ::oWin:oHand ), ::oWin:oHand:Set ( ::nHandle , Self ), ) )
METHOD Del() INLINE ( iif( HB_ISOBJECT( ::oWin:oName ), ::oWin:oName:Del ( ::cName ), ), ;
iif( HB_ISOBJECT( ::oWin:oNameUpper ), ::oWin:oNameUpper:Del( upper(::cName) ), ), ;

iif( HB_ISOBJECT( ::oWin:oHand ), ::oWin:oHand:Del ( ::nHandle ), ) )
...
тогда это можно использовать так
@ 90, 10 LABEL Label_3 WIDTH 100 HEIGHT 20 VALUE '' ;
CENTERALIGN VCENTERALIGN TRANSPARENT
...
*-----------------------------------------------------------------------------*
STATIC FUNCTION SayToWait( oWnd, nEvent )
*-----------------------------------------------------------------------------*
LOCAL oTsb := oWnd:GetProp( nEvent )
LOCAL nDay := oTsb:GetValue()
LOCAL dDate := CalendarValue()
LOCAL hForm, oForm

FOR EACH hForm IN _HMG_aFormHandles
oForm := _WindowObj( hForm )
If HB_ISOBJECT( oForm )
If left( oForm:Name, 3 ) == '_w_'
oForm:SendMsg(93) // timers stop
// oForm:GetObj('Label_3'):Value := DtoC(dDate)
// _SetValue( 'Label_3', oForm:Name, DtoC(dDate) )
oForm:Label_3 := DtoC(dDate)
? oForm:Name, 'Label_3 =', oForm:Label_3

oForm:SendMsg(91) // timers start
EndIf
EndIf
NEXT

RETURN Nil





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




Пост N: 1281
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.06.18 19:54. Заголовок: SergKis пишет: для ..


SergKis пишет:

 цитата:
для получения массивом установленных значений :SetProp


Принято.

SergKis пишет:

 цитата:
в метод ControlAssign cMessage получаем в upper из __GetMessage()


Принято, кроме установки данных в upper

Благодарю за помощь

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



Пост N: 1835
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.06.18 20:32. Заголовок: gfilatov2002 SergKi..


gfilatov2002
SergKis пишет
 цитата:
обхода picture при lMultiLine == .T.


Ситуация возникает, к примеру, если в 2х строчной колонке первая строка 25 байт (краткое наименование), вторая строка 50 байт (адрес). Если Picture короткий (это случается при взятии данных из справочника по ID или по краткому наим. методом LoadFields), то вторая строка через Transform обрезается. Что бы этого избежать приходится уст. Picture Repl('X', Len(<кр.наименование>)+Len(<адрес>)+Len(CRLF), что кажется лишним. Обход Transform(cPicture) при lMulti == .T. все решает

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