Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Andrey: SergKis пишет: А добавить пустых строк AlertInfo(cMsg+repl(" ;", 20), "INFO") Да не хотелось бы. gfilatov2002 пишет: Да, это будет возможно в сборке 20.05, если перед вызовом функции HMG_Alert() написать HMG_Alert_MaxLines( 1 ) тогда будет вывод всех строк в EDITBOX , а на экране будет показана только одна строка. Спасибо ! Эта настройка глобальная или только для одного вызова HMG_Alert() ?

SergKis: gfilatov2002 Может чуть поправить HMG_Alert[pre2] 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 [/pre2] и весь текст войдет в EditBox

SergKis: PS Возможно, лучше и проще так [pre2] 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 ... [/pre2]


gfilatov2002: Andrey пишет: Эта настройка глобальная или только для одного вызова Глобальная

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

gfilatov2002: Andrey пишет: Нужно для разового вызова. Тогда можно использовать таким образом: nI := HMG_Alert_MaxLines() HMG_Alert_MaxLines( 1 ) HMG_Alert( cMsg, aButton, cTitle, Nil, cIcoRes, nIcoSize, aBtnColor ) HMG_Alert_MaxLines( nI )

SergKis: 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) Надо подменить, наверно, иначе код работает не верно[pre2] 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 } [/pre2]

SergKis: PS В таком виде отработал код правильно, все строки видны в EditBox[pre2] 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 } [/pre2]

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

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

Andrey: SergKis пишет: Посмотри предыдущий пост, такой код сделает как ты хочешь Да не успел прочитать. Понял сейчас !

gfilatov2002: Опубликована новая сборка 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 Огромная благодарность Сергею Киселеву за помощь при подготовке этой сборки Для частного использования подготовлены еще два дистрибутива: [pre2]------------------------------------------------------------- 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 [/pre2] [pre2]------------------------------------------------------------- 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 [/pre2]

SergKis: gfilatov2002 ChangeLog.txt[pre2] - 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 [/pre2] Перенести :DrawLine(), т.к. в предыдущем варианте срабатывала последней :DrawSelect(), это другое заполнение oCol:oCell Что бы не делать лишний вызов, наверно, надо поправить[pre2] *-----------------------------------------------------------------------------* FUNCTION HMG_Alert_MaxLines( nMaxLines ) *-----------------------------------------------------------------------------* LOCAL nLines := s_nMaxLines IF HB_ISNUMERIC( nMaxLines ) .AND. nMaxLines > 0 s_nMaxLines := nMaxLines ENDIF RETURN nLines [/pre2]

SergKis: PS Сборка файлом MakeAllMiniguiLibs.bat не проходит. Протокол [pre2] 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)' ... [/pre2]

SergKis: PS2 Может можно добавить таблицу процентов scale от размера фонта. h_objects.prg[pre2] *-----------------------------------------------------------------------------* 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 ... [/pre2]

gfilatov2002: 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 от размера фонта Да, это интересное предложение, но уже для следующей сборки. Благодарю за оперативную помощь

gfilatov2002: SergKis пишет: Сборка файлом MakeAllMiniguiLibs.bat не проходит Уже поправил в первом update для сборки 20.05, который выйдет завтра SergKis пишет: можно добавить таблицу процентов scale от размера фонта. Добавил

gfilatov2002: Выложил первое обновление для сборки 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. Благодарю Сашу Савова за поддержку проекта

Andrey: SergKis пишет: - enhanced auxiliary class TSBcell for a quick export of a data. А можно для суперхидера получить начало и конец объединенных ячеек ? Это нужно для экселя. [pre2] 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[/pre2] Или это можно уже сейчас получать в этом классе ?

SergKis: Andrey пишет А можно для суперхидера получить начало и конец объединенных ячеек ? Это нужно для экселя. Можно получать сейчас так[pre2] 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 [/pre2] Если поправить класс TSBcell и метод, то можно проще получать данные[pre2] 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 [/pre2]



полная версия страницы