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 [только новые]


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




Пост N: 6708
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.05.20 15:27. Заголовок: SergKis пишет: А до..


SergKis пишет:

 цитата:
А добавить пустых строк AlertInfo(cMsg+repl(" ;", 20), "INFO")


Да не хотелось бы.

gfilatov2002 пишет:

 цитата:
Да, это будет возможно в сборке 20.05, если перед вызовом функции HMG_Alert() написать
HMG_Alert_MaxLines( 1 )
тогда будет вывод всех строк в EDITBOX , а на экране будет показана только одна строка.



Спасибо !
Эта настройка глобальная или только для одного вызова HMG_Alert() ?

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




Пост N: 3239
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 15:55. Заголовок: gfilatov2002 Может ..


gfilatov2002
Может чуть поправить HMG_Alert
 
STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen )
...
IF nLineas > 1

IF nLineas >= nMaxLineas
...
Тогда проще делать, что хочет Андрей
nOld := HMG_Alert_MaxLines()
IF nOld > hb_TokenCount(cMsg, ";")
HMG_Alert_MaxLines(hb_TokenCount(cMsg, ";"))
AlertInfo(cMsg, ...)
HMG_Alert_MaxLines( nOld )
ENDIF


и весь текст войдет в EditBox

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




Пост N: 3240
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 16:07. Заголовок: PS Возможно, лучше и..


PS
Возможно, лучше и проще так
 
STATIC s_nMaxLineas := 20
STATIC s_lEditBox := .F.

*-----------------------------------------------------------------------------*
FUNCTION HMG_Alert_MaxLines( nMaxLineas, )
*-----------------------------------------------------------------------------*
IF HB_ISLOGICAL(nMaxLineas )
s_lEditBox := nMaxLineas
ELSEIF HB_ISNUMERIC(nMaxLineas ) .and. nMaxLineas > 0
s_nMaxLineas := nMaxLineas
ENDIF
RETURN s_nMaxLineas

STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen )
...
IF nLineas > 1

IF nLineas > nMaxLineas .or. s_lEditBox
...


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




Пост N: 1717
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.05.20 17:04. Заголовок: Andrey пишет: Эта н..


Andrey пишет:

 цитата:
Эта настройка глобальная или только для одного вызова


Глобальная

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




Пост N: 6709
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.05.20 17:15. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Глобальная


Не очень удобно будет кодить.
Нужно для разового вызова.
Лучше бы сделать как Сергей предлагает.

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




Пост N: 1718
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.05.20 17:24. Заголовок: Andrey пишет: Нужно..


Andrey пишет:

 цитата:
Нужно для разового вызова.


Тогда можно использовать таким образом:

nI := HMG_Alert_MaxLines()
HMG_Alert_MaxLines( 1 )

HMG_Alert( cMsg, aButton, cTitle, Nil, cIcoRes, nIcoSize, aBtnColor )

HMG_Alert_MaxLines( nI )


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




Пост N: 3241
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 17:49. Заголовок: gfilatov2002 FUNCTI..


gfilatov2002
FUNCTION HMG_Alert( cMsg, aOptions, cTitle, nType, cIcoFile, nIcoSize, aBtnColors, bInit, lClosable, cFontName )
...
cMsg := cValToChar( cMsg )
cMsg := StrTran( cMsg, ";", CRLF )
nLineas := MLCount( cMsg )
_logfile(.t.,procname(), hb_TokenCount(cMsg, CRLF), MLCount( cMsg ))
получаем
HMG_ALERT 12 11
по разному считают, правильно посчитала hb_TokenCount(cMsg, CRLF)
Надо подменить, наверно, иначе код работает не верно
 
ITEM '_MsgLog.lst' ACTION {|cs,nn,no|
cs := StrTran(hb_memoread("_MsgLog.lst"), CRLF, ';')
nn := hb_TokenCount(cs, ';')
no := HMG_Alert_MaxLines(nn-1)
AlertInfo( cs, "INFO")
HMG_Alert_MaxLines(no)
Return Nil
}


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




Пост N: 3242
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 18:29. Заголовок: PS В таком виде отра..


PS
В таком виде отработал код правильно, все строки видны в EditBox
 
ITEM '_MsgLog.txt' ACTION {|cs,nn,no|
cs := hb_memoread("_MsgLog.lst")
nn := MLCount(cs)
no := HMG_Alert_MaxLines(nn)
AlertInfo( cs+CRLF, "INFO")
HMG_Alert_MaxLines(no)
Return Nil
}


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




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


gfilatov2002 пишет:

 цитата:
Тогда можно использовать таким образом:


Хорошо ! Спасибо !
Только если я в коде промахнулся и строчек больше одной - то нужно показывать ВСЕ строчки !
Т.е. задал 1 строчку, значение вывожу 5 строчек, то должны показываться все 5 строчек.

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




Пост N: 3243
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.05.20 19:39. Заголовок: Andrey пишет Т.е. за..


Andrey пишет
 цитата:
Т.е. задал 1 строчку, значение вывожу 5 строчек, то должны показываться все 5 строчек.


Посмотри предыдущий пост, такой код сделает как ты хочешь, т.е. от кол-ва строк в тексте, т.е. у меня _MsgLog.lst 12 строк, что бы их всех сразу увидеть и написан код выше

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




Пост N: 6712
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.05.20 19:52. Заголовок: SergKis пишет: Пос..


SergKis пишет:

 цитата:

Посмотри предыдущий пост, такой код сделает как ты хочешь



Да не успел прочитать. Понял сейчас !

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




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


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

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

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

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

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

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

Для частного использования подготовлены еще два дистрибутива:

 цитата:
-------------------------------------------------------------  
Minigui Ex Package (build date: 25.05.2020)
Download links: http://hmgextended.com/files/PRIVATE
-------------------------------------------------------------

Components versions:
--------------------

Harbour MiniGUI Extended Edition 20.05 (Release)

Harbour 3.2.0dev (r2004201301)

Harbour Make (hbmk2) 3.2.0dev (r2020-04-20 13:01)

gcc (MinGW-W64 i686-posix-dwarf, built by Brecht Sanders) 10.1.0



 цитата:
-------------------------------------------------------------  
Minigui Ex 64-bit Package (build date: 25.05.2020)
Download links: http://hmgextended.com/files/PRIVATE
-------------------------------------------------------------

Components versions:
--------------------

Harbour MiniGUI Extended Edition 20.05 (Release)

Harbour 3.4.0dev () (2017-12-20 13:40)

Harbour Make (hbmk2) 3.4.0dev () (2017-12-20 13:40)

gcc (MinGW-W64 x86_64-posix-seh, built by Brecht Sanders) 10.1.0



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




Пост N: 3244
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.05.20 10:43. Заголовок: gfilatov2002 Change..


gfilatov2002
ChangeLog.txt
 
- enhanced auxiliary class TSBcell for a quick export of a data.
Usage:
WITH OBJECT oBrw
:lDrawLine := .F.
:GoTop()
FOR nAt := 1 TO :nLen
:DrawLine()
FOR nCol := 1 TO :nColCount()
oCol := :aColumns[ nCol ]

? "..", nCol, oCol:cName, Valtype(oCol:oCell:uValue), oCol:oCell:uValue, oCol:oCell:cValue
NEXT
:GoDown()
NEXT
:lDrawLine := .T.
:Reset()
END WITH

Перенести :DrawLine(), т.к. в предыдущем варианте срабатывала последней :DrawSelect(), это другое заполнение oCol:oCell

Что бы не делать лишний вызов, наверно, надо поправить
 
*-----------------------------------------------------------------------------*
FUNCTION HMG_Alert_MaxLines( nMaxLines )
*-----------------------------------------------------------------------------*
LOCAL nLines := s_nMaxLines

IF HB_ISNUMERIC( nMaxLines ) .AND. nMaxLines > 0
s_nMaxLines := nMaxLines
ENDIF

RETURN nLines


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




Пост N: 3245
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.05.20 11:15. Заголовок: PS Сборка файлом Mak..


PS
Сборка файлом MakeAllMiniguiLibs.bat не проходит. Протокол
 
MiniGui.lib


h_activex.prg(326) Error E0020 Incomplete statement or unbalanced delimiters

h_activex.prg(328) Error E0030 Syntax error "syntax error at 'OERROR'"

h_activex.prg(330) Error E0010 ENDIF does not match IF

h_graph.prg(426) Warning W0032 Variable 'CNAMEOBJ' is assigned but not used in function 'GRAPHSHOW(190)'

h_graph.prg(426) Warning W0032 Variable 'CNAMEOBJ' is assigned but not used in function 'GRAPHSHOW(323)'
...


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




Пост N: 3246
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.05.20 11:23. Заголовок: PS2 Может можно доба..


PS2
Может можно добавить таблицу процентов scale от размера фонта.
h_objects.prg
 
*-----------------------------------------------------------------------------*
FUNCTION oDlu4Font( nFontSize, lDlu2Pix )
*-----------------------------------------------------------------------------*
LOCAL nPrcW, nPrcH, aDim
LOCAL aScale := { { 8, 75, 75}, ;
{ 9, 85, 85}, ;
{ 10, 90, 90}, ;
{ 11, 100, 100}, ;
{ 12, 110, 100}, ;
{ 13, 115, 100}, ;
{ 14, 120, 110}, ;
{ 15, 130, 110}, ;
{ 16, 140, 120}, ;
{ 17, 145, 120}, ;
{ 18, 150, 130}, ;
{ 19, 160, 130}, ;
{ 20, 170, 140}, ;
{ 21, 175, 140}, ;
{ 22, 180, 150}, ;
{ 23, 190, 150}, ;
{ 24, 200, 160}, ;
{ 25, 205, 170}, ;
{ 26, 210, 170} ;
}

Default lDlu2Pix := .T., nFontSize := 11, nPrcW := 100, nPrcH := 100

IF nFontSize < aScale[1][1] ; nFontSize := aScale[1][1]
ELSEIF nFontSize > ATail(aScale)[1] ; nFontSize := ATail(aScale)[1]
ENDIF

FOR EACH aDim IN aScale
IF nFontSize == aDim[1]
nPrcW := aDim[2]
nPrcH := aDim[3]
EXIT
ENDIF
NEXT

IF lDlu2Pix ; RETURN := TDlu2Pix():New( nPrcW, nPrcH )
ENDIF

RETURN { nPrcW, nPrcH }

*-----------------------------------------------------------------------------*
FUNCTION oDlu2Pixel( nPrcW, nPrcH, nFontSize )
*-----------------------------------------------------------------------------*
LOCAL aPrcWH

IF HB_ISNUMERIC( nFontSize )
aPrcWH := oDlu4Font( nFontSize, .F. )
nPrcW := aPrcWH[1]
nPrcH := aPrcWH[2]
ENDIF

IF PCount() > 0
...


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




Пост N: 1720
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.05.20 11:43. Заголовок: SergKis пишет: Chan..


SergKis пишет:

 цитата:
ChangeLog.txt

- enhanced auxiliary class TSBcell for a quick export of a data.
Usage:
WITH OBJECT oBrw
:lDrawLine := .F.
:GoTop()
FOR nAt := 1 TO :nLen
:DrawLine()
FOR nCol := 1 TO :nColCount()
oCol := :aColumns[ nCol ]
? "..", nCol, oCol:cName, Valtype(oCol:oCell:uValue), oCol:oCell:uValue, oCol:oCell:cValue
NEXT
:GoDown()
NEXT
:lDrawLine := .T.
:Reset()
END WITH


Перенести :DrawLine(), т.к. в предыдущем варианте срабатывала последней :DrawSelect(), это другое заполнение oCol:oCell

Что бы не делать лишний вызов, наверно, надо поправить

*-----------------------------------------------------------------------------*
FUNCTION HMG_Alert_MaxLines( nMaxLines )


Уже поправил в "тихом" обновлении этой сборки.

SergKis пишет:

 цитата:
можно добавить таблицу процентов scale от размера фонта


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

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




Пост N: 1721
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 27.05.20 17:04. Заголовок: SergKis пишет: Сбор..


SergKis пишет:

 цитата:
Сборка файлом MakeAllMiniguiLibs.bat не проходит


Уже поправил в первом update для сборки 20.05, который выйдет завтра

SergKis пишет:

 цитата:
можно добавить таблицу процентов scale от размера фонта.


Добавил

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




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


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

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

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

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

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

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

P.S. Благодарю Сашу Савова за поддержку проекта

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




Пост N: 6713
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.05.20 13:16. Заголовок: SergKis пишет: - en..


SergKis пишет:

 цитата:
- enhanced auxiliary class TSBcell for a quick export of a data.



А можно для суперхидера получить начало и конец объединенных ячеек ?
Это нужно для экселя.
   aSup := oBrw:DrawSuper( .F. ) 
FOR EACH oCel IN aSup
hFnt := oCel:hFont
aFore := oCel:nClrFore
aBack := oCel:nClrBack
xVal := oCel:cValue
AADD( aRet, { aFore, aBack, hFnt, xVal } )
NEXT

Или это можно уже сейчас получать в этом классе ?

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




Пост N: 3249
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.05.20 14:56. Заголовок: Andrey пишет А можно..


Andrey пишет
 цитата:
А можно для суперхидера получить начало и конец объединенных ячеек ?
Это нужно для экселя.


Можно получать сейчас так
 
aSup := oBrw:DrawSuper( .F. )
FOR EACH oCel IN aSup
nFrom := oBrw:aSuperHead[ hb_enumindex( oCel ) ][1]
nTo := oBrw:aSuperHead[ hb_enumindex( oCel ) ][2]

hFnt := oCel:hFont
aFore := oCel:nClrFore
aBack := oCel:nClrBack
xVal := oCel:cValue
AADD( aRet, { aFore, aBack, hFnt, xVal } )
NEXT

Если поправить класс TSBcell и метод, то можно проще получать данные
 
CLASS TSBcell
...
VAR nHeight AS NUMERIC INIT 0
VAR nFromCol AS NUMERIC INIT 0
VAR nToCol AS NUMERIC INIT 0

VAR nCell
...
METHOD DrawSuper( lDrawCell ) CLASS TSBrowse
...
oSupHd := TSBcell():New()
...
oSupHd:lDrawLine := .F. // DrawLine()
oSupHd:nFromCol := aSuperHead[ nI, 1 ]
oSupHd:nToCol := aSuperHead[ nI, 2 ]

...
тогда можно так делать
aSup := oBrw:DrawSuper( .F. )
FOR EACH oCel IN aSup
nFrom := oCel:nFromCol
nTo := oCel:nToCol

hFnt := oCel:hFont
aFore := oCel:nClrFore
aBack := oCel:nClrBack
xVal := oCel:cValue
AADD( aRet, { aFore, aBack, hFnt, xVal } )
NEXT


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