Автор | Сообщение |
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
[только новые]
|
|
SergKis
|
| постоянный участник
|
Пост N: 3185
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.05.20 17:16. Заголовок: gfilatov2002 По HMG..
gfilatov2002 По HMG_ALert(...), добавить static переменную для кол-сток, сейчас стоит константа 20 Скрытый текст
STATIC aBackColor, aFontColor STATIC s_nMaxLineas := 20 *-----------------------------------------------------------------------------* FUNCTION HMG_Alert_MaxLineas( nMaxLineas ) *-----------------------------------------------------------------------------* IF 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 ) ... LOCAL lExt LOCAL nMaxLineas := HMG_Alert_MaxLineas() ... nWidthDlg := nWidthCli + GetBorderWidth() + iif( nLineas > nMaxLineas, MARGIN * 1.5, 0 ) nHeightCli := ( ( Min( nMaxLineas, nLineas ) + iif( nLineas == 1, 4, 3 ) ) * nChrHeight ) + nVMARGIN_BUTTON + nHeightBtn + GetBorderHeight() ... IF nLineas > 1 IF nLineas > nMaxLineas n := 1 cLblName := "Say_" + StrZero( n, 2 ) @ nChrHeight + GetBorderHeight(), nCol ; EDITBOX (cLblName) VALUE AllTrim( cMsg ) OF (cForm) ; FONT cFont WIDTH nWidthCli - nCol + iif( nLineas < 25, 0.9, 1 ) * MARGIN ; HEIGHT nChrHeight * nMaxLineas + GetBorderHeight() ; FONTCOLOR aFontColor BACKCOLOR aBackColor READONLY NOHSCROLL ELSE ... FOR n := nLenaOp TO 1 STEP -1 This.( aBut[ n ] ).Row := nHeightCli + SEP_BUTTON + GetBorderHeight() / iif( lIsWin10, 2.5, .9 ) - nChrHeight - nHeightBtn This.( aBut[ n ] ).Col := nWidthCli + iif( nLineas > nMaxLineas, MARGIN * 1.5, 0 ) + iif( lIsWin10, 0, GetBorderWidth() / 2 ) - ( nMaxBoton + SEP_BUTTON ) * nOpc++ NEXT n ...
| Что бы управлять высотой окна
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1700
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.05.20 18:59. Заголовок: SergKis пишет: доба..
SergKis пишет: цитата: | добавить static переменную... Что бы управлять высотой окна |
| Добавил, конечно. Но переименовал функцию в HMG_Alert_MaxLines() Благодарю за помощь
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3188
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.05.20 13:31. Заголовок: gfilatov2002 Немног..
gfilatov2002 Немного подкрутил h_alert.prg для контроля выхода за пределы экрана по width. Вот, что получилось. Пример и исходник тут https://TransFiles.ru/mowhr Можно поиграть размером фонта DEFINE FONT DlgFont FONTNAME "Courier New" SIZE _HMG_DefaultFontSize + 1 DEFINE FONT DlgFont FONTNAME "Courier New" SIZE _HMG_DefaultFontSize DEFINE FONT DlgFont FONTNAME "Courier New" SIZE _HMG_DefaultFontSize - 1 DEFINE FONT DlgFont FONTNAME "Courier New" SIZE _HMG_DefaultFontSize - 2
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1701
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.05.20 15:00. Заголовок: SergKis пишет: подк..
SergKis пишет: цитата: | подкрутил h_alert.prg для контроля выхода за пределы экрана |
| Эти изменения не приняты по причине увеличения ширины окон Alert* в примере из папки samples\Basic\WALERT_2 Изменения в файле h_alert.prg не должны приводить к изменению вида обычных окон (совместимость снизу вверх)
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3189
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.05.20 15:28. Заголовок: gfilatov2002 пишет и..
gfilatov2002 пишет цитата: | изменения не приняты по причине увеличения ширины окон Alert* |
| Очень не хочется писать лишний блок кода bInit. Может такие поправки помогут STATIC s_nMaxLineas := 20 STATIC s_lMaxWidth := .F. *-----------------------------------------------------------------------------* FUNCTION HMG_Alert_MaxLines( nMaxLineas, lMaxWidth ) *-----------------------------------------------------------------------------* IF HB_ISNUMERIC(nMaxLineas ) .and. nMaxLineas > 0 s_nMaxLineas := nMaxLineas ENDIF IF HB_ISLOGICAL( lMaxWidth ) s_lMaxWidth := lMaxWidth ENDIF RETURN s_nMaxLineas ... STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen ) ... LOCAL nMaxLineas := HMG_Alert_MaxLines() LOCAL lMaxWidth := s_lMaxWidth LOCAL nMaxWidth := 0 ... nChrHeight := GetTextHeight( hDC, aOptions[ 1 ], hDlgFont ) + nVMARGIN_BUTTON / 2 // calculate the maximum width of the lines IF lMaxWidth nMaxWidth := GetFontWidth ( cFont, nMaxLen ) ENDIF FOR n := 1 TO nLineas ...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3190
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.05.20 15:31. Заголовок: PS В примере demo7.p..
PS В примере demo7.prg ставим HMG_Alert_MaxLines(23, .T.)
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1702
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.05.20 15:59. Заголовок: SergKis пишет: таки..
SergKis пишет: Да, с этими изменениями примеры не отличаются
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3191
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.05.20 16:27. Заголовок: gfilatov2002 пишет Д..
gfilatov2002 пишет цитата: | Да, с этими изменениями примеры не отличаются |
| В примере BASIC\WALERT_2 надо, наверно, учесть вылезание списка ошибок за пределы descktop при фонте 16 на 14" мониторе (кнопку почти не видно), т.е. надо ставить ограничение по высоте DEFINE FONT DlgFont FONTNAME "DejaVu Sans Mono" SIZE 16 SET MSGALERT FONTCOLOR TO BLACK SET MSGALERT BACKCOLOR TO {248,209,211} cMsg := "" aButton := { "&Continue" } cTitle := "Multiline Error Message" cIcoRes := "Stop64.ico" nIcoSize := 64 aBtnColor := { {235,117,121} } FOR nI := 1 TO 99 cMsg += "Error: " + HB_NtoS( nI ) + " simple error message.;" NEXT HMG_Alert_MaxLines( 15 ) HMG_Alert( cMsg, aButton, cTitle, Nil, cIcoRes, nIcoSize, aBtnColor ) RELEASE FONT DlgFont
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3192
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.05.20 17:00. Заголовок: PS Возможно есть смы..
PS Возможно есть смысл добавить STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen ) ... // calculate the maximum width of the lines IF lMaxWidth nMaxWidth := GetFontWidth ( cFont, nMaxLen ) IF GetTextWidth( hDC, space(10), hDlgFont ) != GetTextWidth( hDC, replicate("B", 10), hDlgFont ) nMaxWidth *= 0.7 ENDIF ENDIF ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1703
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.05.20 17:09. Заголовок: SergKis пишет: есть..
SergKis пишет: Спасибо Да, я тоже вышел на этот коэффициент 0,7
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3193
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.05.20 17:47. Заголовок: gfilatov2002 пишет я..
gfilatov2002 пишет цитата: | я тоже вышел на этот коэффициент 0,7 |
| Ширины может не хватить, если исп. много заглавных букв типа W,B Можно игнорировать ситуацию или ввести static переменную для коэф. 0.7 или установленного в переменную
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1704
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.05.20 19:37. Заголовок: Убрал статик-перемен..
Убрал статик-переменную s_lMaxWidth, т.к. теперь в ней нет необходимости
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3194
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.05.20 11:45. Заголовок: gfilatov2002 Сделал..
gfilatov2002 Сделал контроль выхода за пределы экрана по height STATIC FUNCTION FillDlg( cMsg, aOptions, nLineas, cIcoFile, nIcoSize, aBtnColors, bBlock, lClosable, cFont, nMaxLen ) ... LOCAL nMaxLineas := HMG_Alert_MaxLines() LOCAL nMaxWidth, nMaxHeight ... IF MSC_VER() > 0 .AND. _HMG_IsThemed nWidthDlg += 10 nHeightDlg += 10 ENDIF IF nHeightDlg > System.ClientHeight n := 0 WHILE ( nHeightDlg - ( nChrHeight * ( ++n ) ) ) > System.ClientHeight END nMaxHeight := nChrHeight * n nMaxLineas -= n nHeightDlg -= nMaxHeight nHeightCli -= nMaxHeight ENDIF This.Width := nWidthDlg ...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3195
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.05.20 11:50. Заголовок: PS В примере BASIC..
PS В примере BASIC\WALERT_2 окно со списком не выходит за пределы окна при фонте SIZE 16 и больше В примере demo7 установка большего фонта или HMG_Alert_MaxLines(35) - все в пределах окна
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1705
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.05.20 13:10. Заголовок: SergKis пишет: конт..
SergKis пишет: цитата: | контроль выхода за пределы экрана по height |
| Добавил, контрольный пример отработал нормально. Благодарю за помощь
|
|
|
rvu
|
| |
Пост N: 250
Зарегистрирован: 05.11.05
|
|
Отправлено: 14.05.20 16:30. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Harbour MiniGUI Extended Edition 20.04 (Release) (64-bit) |
| А какие возможности эта версия дает по сравнению с 32-битными? Если не пользоваться большими числами в расчетах. Хотел ради интереса посмотреть примеры. Как я понимаю последняя общедоступная версия была 16.10? Скачал ее, но при сборке примеров почему-то вылезает ошибка с файлом minigui.ch, хотя все есть, вроде. Если кто помнит, там все файлы есть или надо еще что-то скачивать? Или просто пути там не так прописаны? Хочется вообще посмотреть на это, как на демо, понять нужность или не ненужность для себя. А с поддержкой увы, ранее хотел говорить с директором о развитии, а тут с этим вирусом самим бы выжить.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1706
Зарегистрирован: 11.02.10
|
|
Отправлено: 14.05.20 19:58. Заголовок: rvu пишет: какие во..
rvu пишет: цитата: | какие возможности эта версия дает по сравнению с 32-битными? |
| Благодарю за вопрос! Если коротко, то это - относительно высокая скорость выполнения и возможность адресовать больший объем памяти, поскольку приложение становится нативным для 64-битной среды. Подробнее можно почитать статьи в Интернете. Приведу для справки список поддерживаемых Си-компиляторов: - MinGW GNU C 10.1 - самый свежий и самый быстрый из всех - BCC 64, основанный на LLVM/Clang C 3.3.1; - Visual C++ 19.24.28314; - PellesC 9.0.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3200
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.05.20 08:03. Заголовок: gfilatov2002 Правки..
gfilatov2002 Правки небольшие CLASS TSBrowse FROM TControl ... METHOD DrawFooters( lDrawCell ) INLINE ::DrawHeaders( .T., lDrawCell ) ... METHOD DrawHeaders( lFooters, lDrawCell ) CLASS TSBrowse ... oColumn:oCellEnum:nClrBack := nClrBackS // 9 ... oColumn:oCellEnum:nClrTo := nClrToS // 25 ... oColumn:oCellFoot:nVAlign := nVAlign // 23 oColumn:oCellFoot:nVertText := 0 // 24 ... METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse ... oColumn:oCell:nRow := xRow // ... oColumn:oCell:xRow := xRow // 3 ... oColumn:oCell:l3DLook := oColumn:l3DLook // 13 ... METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse ... IF ! ::lDrawLine IF empty( oColumn:oCell ) oColumn:oCell := TSBcell():New() ENDIF ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1707
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.05.20 11:32. Заголовок: SergKis пишет: Прав..
SergKis пишет: Благодарю за помощь
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3205
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.05.20 13:52. Заголовок: gfilatov2002 Добавь..
gfilatov2002 Добавьте ф-ю для получения hmg имени фонта от handle FUNCTION HMG_FontName( FontHandle ) LOCAL FontName, i IF ( i := AScan( _HMG_aControlHandles, FontHandle ) ) > 0 IF _HMG_aControlType [ i ] == "FONT" FontName := _HMG_aControlNames [ i ] ENDIF ENDIF RETURN FontName Использование ... cFntH := HMG_FontName( oHead:hFont ) cFntC := HMG_FontName( oCell:hFont ) cFntF := HMG_FontName( oFoot:hFont ) ... cN := cName+'_Head' @ nY, nX LABEL &cN VALUE cValH WIDTH oCell:nSize HEIGHT oHead:nHeightCell FONT cFntH ; BACKCOLOR aClrToH FONTCOLOR aForeH BORDER ON INIT {|| nY += This.Height + nGaps } cN := cName+'_Cell' @ nY, nX LABEL &cN VALUE cValC WIDTH oCell:nSize HEIGHT oCell:nHeightCell FONT cFntC ; BACKCOLOR aBackC FONTCOLOR aForeC BORDER ON INIT {|| nY += This.Height + nGaps } cN := cName+'_Foot' @ nY, nX LABEL &cN VALUE cValF WIDTH oCell:nSize HEIGHT oFoot:nHeightCell FONT cFntF ; BACKCOLOR aBackF FONTCOLOR aForeF BORDER ON INIT {|| nY += This.Height + nGaps }
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|