On-line: PSP, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
модератор




Пост 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 
ПрофильЦитата Ответить
Ответов - 137 , стр: 1 2 3 4 5 6 7 All [только новые]


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




Пост N: 6593
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.02.20 13:00. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Андрею должно понравится такое изменение:


Мне понравилось ! Спасибо !

SergKis пишет:

 цитата:
что бы не делать доп. переменных, а использовать :cargo колонки, например (от Андрея):


Да, это очень удобно получается. Загружаешь в массив короткий справочник типа:
{1, "В офисе "} 
{2, "отданы лично в руки "}
{3, "отданы Посыльному "}

А потом бровс сам показывает вместо кодов нужные наименования через функцию:
FUNCTION Select2Array(xVal,aDim)  
LOCAL nI, cRet := "none Dim"

FOR nI := 1 TO LEN(aDim)
IF xVal == aDim[nI,1]
cRet := aDim[nI,2]
ENDIF
NEXT

RETURN cRet

Ну а в oCol:bPrevEdit - показ выбора из этого массива SelectWho(ob, oc:Cargo) и потом запись в базу WriteColum4(ob).

Что-то форум потерял предыдущую тему. Не понятно будет о чем речь идёт...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3075
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.02.20 15:08. Заголовок: Andrey пишет Ну а в ..


Andrey пишет
 цитата:
Ну а в oCol:bPrevEdit - показ выбора из этого массива SelectWho(ob, oc:Cargo)


Можно упростить
 
oCol := oBrw:GetColumn("Name_4")
oCol:Cargo := oKeyData() // Get2DimCol4() // получить массив для колонки 4
oCol:bDecode := {|val,ob,nc,oc| nc:=ob, oc:Cargo:Get(val, val) } // если для кода нет наименования, будет сам код
oCol:nAlign := DT_CENTER
oCol:cPicture := REPL("x",25)
oCol:lEdit := .T.
oCol:bPrevEdit := {|val,ob,nc,oc| SelectWho(ob, oc:Cargo), WriteColum4(ob), ob:Setfocus(), FALSE }
// заполним из dbf коды и названия для колонки
USE ... ALIAS SPR NEW SHARED
dbEval({|| oCol:Cargo:Set(FIELD->KOD, FIELD->NAME) })
USE
dbSelectArea(oBrw:cAlias)
...



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3076
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.02.20 15:58. Заголовок: PS массив получить т..


PS
массив получить так
oCol:CargoGetAll(.T.) // массив наименований для combobox например
oCol:CargoGetAll(.F.) // массив {{kod, name},..., {kodN, nameN}}
т.е.
oCol:bPrevEdit := {|val,ob,nc,oc| SelectWho(ob, oc:Cargo:GetAll(.F.)), WriteColum4(ob), ob:Setfocus(), FALSE }

Спасибо: 0 
ПрофильЦитата Ответить
moderator




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


Снова обновил сборку 20.01 (Update 7) с учетом последних наработок

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

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

Обновил также архив для бесплатного Embarcadero C++ 10.1 Berlin compiler по адресу

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

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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 21
Зарегистрирован: 29.11.19
ссылка на сообщение  Отправлено: 01.03.20 14:54. Заголовок: Из замеченного, если..


Из замеченного, если в версии bcc101 подменить библиотеки hblang.lib hbcpage.lib от BCC 5.8.2
то установка русского языка отрабатывает нормально, включая обработку ошибок.
На некоторых версиях ОС проявляется ошибка ilink32, "лечение" описано тут
click here
может кому то пригодится.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




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


Завершена подготовка новой сборки 20.03, которая будет опубликована на следующей неделе.

Кратко, что нового:
Скрытый текст
Благодарю за ваше внимание

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




Пост N: 6604
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.03.20 19:41. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
которая будет опубликована на следующей неделе.


Ждем с нетерпением !

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1662
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 29.03.20 20:35. Заголовок: Andrey пишет: Ждем ..


Andrey пишет:

 цитата:
Ждем с нетерпением


Завтра буду готовить финальную версию инсталлятора для этой сборки

Спасибо: 0 
ПрофильЦитата Ответить
moderator




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


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

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

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

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

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

В марте этого года исполнилось ровно 15 лет с момента начала разработки этой версии библиотеки

Выпуск последующих обновлений будет зависеть от активности и поддержки со стороны пользователей ее разработки.

Отдельная благодарность - Андрею Верченко, Диме (админу этого форума) и Саше Савову из Болгарии за их материальную поддержку

Спасибо: 0 
ПрофильЦитата Ответить
moderator




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


Сделал "тихое" обновление сборки 20.03 после повторного исправления следующего изменения:

 цитата:
* Enhanced: Splitboxed TOOLBAR control supports the changing of a 'Caption'
property at runtime.

Проблема была указана на английском форуме библиотеки.
Если вы не используете данную возможность в своей программе, то это обновление является необязательным.

Спасибо: 0 
ПрофильЦитата Ответить
moderator




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


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

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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3129
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.20 16:42. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение:
TsBrowse.ch
 
#xcommand @ <row>,<col> TBROWSE <name> ;
...
[ <cur: DBLCURSOR, DOUBLE CURSOR, FIXED> ] ;
[ <emptyval: COLEMPTY,COLSEMPTY,EMPTYVALUE> ] ;

=>;
...
[ <number> ], [ <aBrush> ], [ <aEdit> ], [ <Adjust> ], [ <.ladjust.> ], ;
[ <.emptyval.> ] )


#xcommand DEFINE TBROWSE <name> ;
...
[ <emptyval: COLEMPTY,COLSEMPTY,EMPTYVALUE> ] ;

=>;
...
[ <number> ], [ <aBrush> ], [ <aEdit> ], [ <Adjust> ], [ <.ladjust.> ], ;
[ <.emptyval.> ] ) ;;

with object <name>
...
#xcommand DEFINE TBROWSE <name> OBJ <obrw> ;
...
[ <cur: DBLCURSOR, DOUBLE CURSOR, FIXED> ] ;
[ <emptyval: COLEMPTY,COLSEMPTY,EMPTYVALUE> ] ;

=>;
...
[ <number> ], [ <aBrush> ], [ <aEdit> ], [ <Adjust> ], [ <.ladjust.> ], ;
[ <.emptyval.> ] ) ;;

with object <obrw>
...

TsBrowse.prg
 
FUNCTION _DefineTBrowse ( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
lLoad, lDblCursor, aNames, aFooters, nColNumber, aBrush, aEdit, Adjust, ;
lAdjust, lEmptyValToChar )
...
ELSE
// BK
IF HB_ISARRAY( uAlias )
aArray := uAlias
uAlias := NIL
ENDIF

IF HB_ISLOGICAL(aEdit)
...
// BK
IF HB_ISARRAY(aArray)
oBrw:SetArrayTo( aArray, {hFontHead, hFontFoot} , aHeaders, aWidths, aFooters, aPicture, aJust, aNames )
ELSE
If ! empty(hFontHead) ; oBrw:hFontHead := hFontHead
EndIf
If ! empty(hFontFoot) ; oBrw:hFontFoot := hFontFoot
EndIf
ENDIF


IF HB_ISARRAY(aBrush) .and. Len(aBrush) > 2
...
IF ( nColums := Len( oBrw:aColumns ) ) > 0 /* BK 18.05.2015 */
...
// BK
n := nColums

IF ! HB_ISARRAY( aArray )
IF HB_ISARRAY(aNames)
j := Min(Len(aNames), n)
FOR t := 1 TO j
IF ! Empty(aNames[ t ]) .and. HB_ISCHAR(aNames[ t ])
oBrw:aColumns[ t ]:cName := aNames[ t ]
ENDIF
NEXT
ENDIF

IF HB_ISLOGICAL(aFooters) .and. aFooters
aFooters := Array( n )
aFill( aFooters, " " )
ENDIF

IF HB_ISARRAY(aFooters)
j := Min( Len(aFooters), n )
FOR t := 1 TO j
IF aFooters[ t ] != NIL
If HB_ISCHAR( aFooters[ t ] ) .and. ";" $ aFooters[ t ]
aFooters[ t ] := StrTran( aFooters[ t ], ";", Chr(13) )
EndIf
oBrw:aColumns[ t ]:cFooting := aFooters[ t ]
ENDIF
NEXT
oBrw:lDrawFooters := .T.
oBrw:lFooting := .T.
oBrw:nHeightFoot := oBrw:nHeightCell
ENDIF
ENDIF

IF HB_ISARRAY(aEdit)
...
IF ! Empty(lDblCursor)
AEval( oBrw:aColumns, {|oCol| oCol:lFixLite := .T. } )
ENDIF
IF ! empty(lEmptyValToChar)
AEval( oBrw:aColumns, {| oCol| oCol:lEmptyValToChar := .T. } )
ENDIF


nW := 0
IF nColNumber != NIL
IF HB_ISLOGICAL(nColNumber)
nColNumber := iif( nColNumber, 1, NIL )
ELSEIF HB_ISARRAY(nColNumber)
IF Len(nColNumber) > 1
nW := nColNumber[2]
nColNumber := nColNumber[1]
ELSE
nColNumber := 1
ENDIF
ENDIF
ENDIF

IF HB_ISNUMERIC(nColNumber)
nColNumber := iif( nColNumber > 0 .and. nColNumber <= n, nColNumber, 1 )
IF oBrw:lIsDbf

DEFINE COLUMN oCol DATA 'hb_ntos(iif( IndexOrd() > 0, ORDKEYNO(), RecNo() ))' ;
HEADER '#' ;
FOOTER ' ' ;
ALIGN 1, 1, 1 ;
WIDTH 80 ;
PICTURE '9999999' ;
MOVE 0 ;
DBLCURSOR ;
NAME ORDKEYNO

oCol:lEdit := .F.
oCol:cAlias := oBrw:cAlias
oCol:cFooting := { |nc,ob| nc := ob:nLen, iif( Empty(nc), '', hb_ntos(nc) ) }
#ifndef __XHARBOUR__
oCol:cData := 'hb_macroblock("'+oCol:cField+'")'
oCol:bData := hb_macroblock( oCol:cField )
#else
oCol:cData := '{|| '+oCol:cField+'}'
oCol:bData := &( '{|| '+oCol:cField+'}' )
#endif
ELSEIF oBrw:lIsArr

DEFINE COLUMN oCol DATA {|| NIL } ;
HEADER '#' ;
FOOTER ' ' ;
ALIGN 1, 1, 1 ;
WIDTH 80 ;
PICTURE '99999' ;
MOVE 0 ;
DBLCURSOR ;
NAME ARRAYNO

oCol:cFooting := { |nc,ob| nc := ob:nLen, iif( Empty(nc), '', hb_ntos(nc) ) }
oCol:bValue := { |xx,ob| xx := ob, hb_ntos( ob:nAt ) }

ENDIF

oCol:lEmptyValToChar := .T.
oCol:cFieldTyp := 'N'
oCol:nFieldLen := 10
oCol:nFieldDec := 0

oBrw:InsColumn( nColNumber, oCol )

oBrw:nCell := nColNumber + 1
oBrw:nFreeze := nColNumber
oBrw:lLockFreeze := .T.

IF HB_ISNUMERIC(nW) .and. nW > 0
...

Пример ADVANCED\Tsb_Array_2\demo3.prg Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3130
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.20 16:49. Заголовок: PS Для колонки нумер..


PS
Для колонки нумерации ARRAYNO надо поправить PICTURE '9999999'
как у ORDKEYNO, забыл это сделать.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3131
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.20 16:52. Заголовок: PS Возможно, колонки..


PS
Возможно, колонки нумерации надо назвать одинаково ?
Названия колонок оставил, как использую сам.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3132
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.20 17:34. Заголовок: PS2 Еще можно добави..


PS2
Еще можно добавить
TsBrowse.ch (в определения команд выше добавить)
 
[ <emptyval: COLEMPTY,COLSEMPTY,EMPTYVALUE> ] ;
[ <gotfocusel: GOTFOCUSSELECT,GOTFOCUSELECT> ] ;

...
[ <.emptyval.> ], [ <.gotfocusel.> ] ) ...
...

TsBrowse.prg
 
FUNCTION _DefineTBrowse ( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
lAdjust, lEmptyValToChar, lOnGotFocusSelect )
...
IF ! empty(lEmptyValToChar)
AEval( oBrw:aColumns, {| oCol| oCol:lEmptyValToChar := .T. } )
ENDIF
IF ! empty(lOnGotFocusSelect)
AEval( oBrw:aColumns, {| oCol| oCol:lOnGotFocusSelect := .T. } )
ENDIF

nW := 0
...

И в примере
 
DEFINE TBROWSE oBrw ;
AT nY, nX ALIAS aArray WIDTH nW HEIGHT nH CELL ;
FONT { "Norm", "Bold", "Bold" } ;
BRUSH { 255, 255, 240 } ;
HEADERS aHead ;
COLSIZES aSize ;
PICTURE aPict ;
JUSTIFY aAlign ;
COLNAMES aName ;
COLNUMBER { 1, 40 } ;
FOOTERS aFoot ;
FIXED ADJUST COLEMPTY ;
ENUMERATOR EDIT ;
GOTFOCUSSELECT



Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 1676
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.04.20 20:25. Заголовок: SergKis пишет: Еще ..


SergKis пишет:

 цитата:
Еще можно добавить


Добавил все ваши предложения без изменений, пример работает нормально.
Благодарю за помощь

Спасибо: 0 
ПрофильЦитата Ответить
moderator




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


Подготовил 2-й релиз-кандидат для новой сборки 20.04.
Что нового:
Скрытый текст
Благодарю за ваше внимание

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 149
Зарегистрирован: 12.07.06
ссылка на сообщение  Отправлено: 22.04.20 06:46. Заголовок: TBROWSE vs мышь


В TBrowse использую событие ON CHANGE, в котором некая функция выводит в
STATUSBAR дополнительную информацию из текущей строки:
...
DEFINE TBROWSE Br_omes AT h_tlbar,0 ALIAS (al) WIDTH w_br HEIGHT h_br ;
BOLD CELLED ;
ON CHANGE Form_oMes.StatusBar.Item(1) := f_corr(1,al)
...
Если движение по строкам осуществляется клавиатурой, то все работает нормально,
в STATUSBAR'е идет корректное отображение данных функцией f_corr().
Если перемещение производить мышью, указывая строку в TBrowse или использовать
колесо прокрутки, то после отработки события ON CHANGE, данные в STATUSBAR'е
исчезают, т.е поле очищается.
В Browse в аналогичной ситуации все отрабатывает нормально.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 7181
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.04.20 08:05. Заголовок: alex_II Глянь приме..


alex_II
Глянь пример C:\MiniGUI\SAMPLES\Advanced\Tsb_config\
и функцию FUNCTION MyChangeBrowse
Вроде все работает и с мышкой

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3145
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.04.20 22:39. Заголовок: gfilatov2002 Можно ..


gfilatov2002
Можно чуть поправить ? h_objmisc.prg
 
FUNCTION _wPost( nEvent, nIndex, xParam )
...
ENDIF
ELSEIF HB_ISCHAR( nIndex )
oWnd := _WindowObj( nIndex )
nIndex := NIL

ELSE
oWnd := _WindowObj( _HMG_THISFORMNAME )
ENDIF
...
FUNCTION _wSend( nEvent, nIndex, xParam )
...
ENDIF
ELSEIF HB_ISCHAR( nIndex )
oWnd := _WindowObj( nIndex )
nIndex := NIL

ELSE
oWnd := _WindowObj( _HMG_THISFORMNAME )
ENDIF
...


Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 137 , стр: 1 2 3 4 5 6 7 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 336
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет