Автор | Сообщение |
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; - новые и обновленные старые примеры (как обычно ).
|
|
|
Ответов - 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() ?
|
|
|
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
|
|
|
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 ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1717
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.05.20 17:04. Заголовок: Andrey пишет: Эта н..
Andrey пишет: цитата: | Эта настройка глобальная или только для одного вызова |
| Глобальная
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6709
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.05.20 17:15. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Не очень удобно будет кодить. Нужно для разового вызова. Лучше бы сделать как Сергей предлагает.
|
|
|
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 )
|
|
|
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 }
|
|
|
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 }
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6711
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.05.20 18:59. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Тогда можно использовать таким образом: |
| Хорошо ! Спасибо ! Только если я в коде промахнулся и строчек больше одной - то нужно показывать ВСЕ строчки ! Т.е. задал 1 строчку, значение вывожу 5 строчек, то должны показываться все 5 строчек.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3243
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.05.20 19:39. Заголовок: Andrey пишет Т.е. за..
Andrey пишет цитата: | Т.е. задал 1 строчку, значение вывожу 5 строчек, то должны показываться все 5 строчек. |
| Посмотри предыдущий пост, такой код сделает как ты хочешь, т.е. от кол-ва строк в тексте, т.е. у меня _MsgLog.lst 12 строк, что бы их всех сразу увидеть и написан код выше
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6712
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.05.20 19:52. Заголовок: SergKis пишет: Пос..
SergKis пишет: цитата: | Посмотри предыдущий пост, такой код сделает как ты хочешь |
| Да не успел прочитать. Понял сейчас !
|
|
|
|
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 |
|
|
|
|
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
|
|
|
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)' ...
|
|
|
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 ...
|
|
|
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 от размера фонта |
| Да, это интересное предложение, но уже для следующей сборки. Благодарю за оперативную помощь
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1721
Зарегистрирован: 11.02.10
|
|
Отправлено: 27.05.20 17:04. Заголовок: SergKis пишет: Сбор..
SergKis пишет: цитата: | Сборка файлом MakeAllMiniguiLibs.bat не проходит |
| Уже поправил в первом update для сборки 20.05, который выйдет завтра SergKis пишет: цитата: | можно добавить таблицу процентов scale от размера фонта. |
| Добавил
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1722
Зарегистрирован: 11.02.10
|
|
Отправлено: 28.05.20 10:20. Заголовок: Всем кому это интересно :)
|
|
|
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 Или это можно уже сейчас получать в этом классе ?
|
|
|
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
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|