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




Пост 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 
ПрофильЦитата Ответить
Ответов -297 ,стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]





Пост N:19
Зарегистрирован:29.11.19
ссылка на сообщение  Отправлено:09.02.20 11:00.Заголовок:gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Обновил сборку 20.01 (Update 3)


а можно в стандартный комплект поставки bcc101 добавить библиотечку SQLMIX (hbsqldd.lib) ?
Спасибо.

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



Пост N:3036
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:09.02.20 12:49.Заголовок:gfilatov2002 Надо п..


gfilatov2002
Надо поправить
 
METHOD LoadFields( lEditable, aColSel, cAlsSel, aNameSel, aHeadSel ) CLASS TSBrowse
...
Local cTmp

...
If ValType(::aHeaders) == "A" .and. ! empty(::aHeaders) .and. n <= Len( ::aHeaders )
cHeading := ::aHeaders[ n ]
IF CRLF $ cHeading
cData := ""
FOR EACH cTmp IN hb_ATokens(cHeading, CRLF)
IF Len(cTmp) > Len(cData)
cData := cTmp
EndIf
NEXT
cHeading := cData
cData := NIL
ENDIF

Else
cHeading := ::Proper( ( cAlias )->( Field( nE ) ) )
EndIf
...


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




Пост N:1649
Зарегистрирован:11.02.10
ссылка на сообщение  Отправлено:09.02.20 19:27.Заголовок:SergKis пишет: Надо..


SergKis пишет:

 цитата:
Надо поправить


При добавлении этого кода в заголовок таблицы попадет только одна строка наибольшей длины из много-строчного заголовка.
Остальные строки этого много-строчного заголовка будут удалены. В чем смысл этой поправки

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



Пост N:3040
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:09.02.20 19:49.Заголовок:gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
При добавлении этого кода в заголовок таблицы попадет только одна строка наибольшей длины из много-строчного заголовка.
Остальные строки этого много-строчного заголовка будут удалены. В чем смысл этой поправки


Эта поправка для правильного расчета ширины колонки, берется самое длинное слово для участия в расчете,
иначе ширина колонки получается по всем словам с учетом CRLF.
Текст в header потом выводится правильный, полностью все с переносом и ширина max от выделенного слова и
значения в колонке. Так работает в моей версии. После такой правки колонка после LoadFields рассчитана хорошо
и показывает аналогично.

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



Пост N:3041
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:09.02.20 20:25.Заголовок:gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
При добавлении этого кода в заголовок таблицы попадет только одна строка наибольшей длины из много-строчного заголовка.


Прошу прощения, упустил, что у меня стоит перед созданием колонки
 
If ValType(::aHeaders) == "A" .and. ! empty(::aHeaders) .and. n <= Len( ::aHeaders ) // .08.
cHeading := ::aHeaders[ n ]
EndIf
If HB_ISARRAY( aHeadSel ) .and. Len( aHeadSel ) > 0 .and. n <= Len( aHeadSel ) .and. aHeadSel[ n ] != Nil
cHeading := aHeadSel[ n ]
EndIf

т.е. восстанавливаются данные cHeading + я упустил из вида вариант
If HB_ISARRAY( aHeadSel ) .and. Len( aHeadSel ) > 0 .and. n <= Len( aHeadSel ) .and. aHeadSel[ n ] != Nil
cHeading := aHeadSel[ n ]
EndIf
при выделении слова из заголовка. Наверно проще переделать так
Local cTmp, cHead
...
If ValType(::aHeaders) == "A" .and. ! empty(::aHeaders) .and. n <= Len( ::aHeaders ) // .08.
cHeading := ::aHeaders[ n ]
cHead := cHeading
Else
cHeading := ::Proper( ( cAlias )->( Field( nE ) ) )
EndIf

If HB_ISARRAY( aHeadSel ) .and. Len( aHeadSel ) > 0 .and. n <= Len( aHeadSel ) .and. aHeadSel[ n ] != Nil
cHeading := aHeadSel[ n ]
cHead := cHeading
EndIf

IF CRLF $ cHeading
cData := ""
FOR EACH cTmp IN hb_ATokens(cHeading, CRLF)
IF Len(cTmp) > Len(cData)
cData := cTmp
EndIf
NEXT
cHeading := cData
cData := NIL
ENDIF
...
If HB_ISCHAR(cHead)
cHeading := cHead
EndIf

cBlock := 'FieldWBlock("' + aStru[ nE, 1 ] + '",Select("' + cAlias + '"))'
::AddColumn( TSColumn():New( cHeading, FieldWBlock( aStru[ nE, 1 ], Select( cAlias ) ),cPicture, ;
...


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



Пост N:3042
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:09.02.20 20:32.Заголовок:PS Правда у меня все..


PS
Правда у меня всегда включен расчет nSize, т.е.
 
cPicture := "@K "+cPicture
EndIf

// If nSize == Nil

cData := ( cAlias )->( FieldGet( nE ) )
...
nSize += If( ! Empty( cOrder ), 14, 0 ) //V90
// EndIf


но это связано связано с переносом :LoadFields(...) под команды файла ch, изложенное во флайме сегодня.

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




Пост N:1650
Зарегистрирован:11.02.10
ссылка на сообщение  Отправлено:09.02.20 20:43.Заголовок:SergKis пишет: прощ..


SergKis пишет:

 цитата:
проще переделать так


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

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




Пост N:6583
Зарегистрирован:12.09.06
ссылка на сообщение  Отправлено:10.02.20 10:01.Заголовок:SergKis пишет: Эта ..


SergKis пишет:

 цитата:
Эта поправка для правильного расчета ширины колонки, берется самое длинное слово для участия в расчете,
иначе ширина колонки получается по всем словам с учетом CRLF.
Текст в header потом выводится правильный, полностью все с переносом и ширина max от выделенного слова и
значения в колонке.
Так работает в моей версии. После такой правки колонка после LoadFields рассчитана хорошо
и показывает аналогично.


Классно !
Это когда будет включено в МиниГуи ?
А то у меня своя функция криво работает...

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



Пост N:3044
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:10.02.20 12:54.Заголовок:gfilatov2002 Поправ..


gfilatov2002
Поправил у себя
 
METHOD AdjColumns( aColumns, nDelta ) CLASS TSBrowse // BK 2018.03.20
...
LOCAL nBrwLen := GetWindowWidth( ::hWnd ) - iif( ::lNoVScroll, 0, GetVScrollBarWidth() ) - ;
iif( HB_ISNUMERIC(nDelta), nDelta, 1 )

IF HB_ISLOGICAL(aColumns)
IF ! aColumns ; RETURN NIL
ENDIF
aColumns := NIL
ENDIF

If empty(aColumns)
...


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




Пост N:1651
Зарегистрирован:11.02.10
ссылка на сообщение  Отправлено:10.02.20 13:51.Заголовок:SergKis пишет: Попр..


SergKis пишет:

 цитата:
Поправил у себя


Добавил такую проверку также

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



Пост N:3051
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:11.02.20 12:21.Заголовок:gfilatov2002 Предла..


gfilatov2002
Предлагаю добавить проверку
 
IF w > GetDesktopWidth() ; w := GetDesktopWidth()
ENDIF
IF h > ( GetDesktopHeight() - GetTaskBarHeight() ) ; h := GetDesktopHeight() - GetTaskBarHeight()
ENDIF
перед строкой с
mVar := '_' + FormName

в функции
FUNCTION _DefineWindow ( FormName, Caption, x, y, w, h, nominimize, nomaximize, ;
FUNCTION _DefineModalWindow ( FormName, Caption, x, y, w, h, Parent, nosize, nosysmenu, nocaption, aMin, aMax, ;

Если высота ширина заданы, то есть шанс при переносе на др. комп, с др. монитором попадать на размеры окна > экрана, что произошло с примером CBru.exe на др. pc.

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



Пост N:3052
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:11.02.20 12:53.Заголовок:PS У меня, еще, така..


PS
У меня, еще, такая штука присутствует
 
IF y > 0 .and. y < 1 ; y := int( GetClientHeight(0) * y )
ENDIF
IF x > 0 .and. x < 1 ; x := int( GetClientWidth (0) * x )
ENDIF
IF w > 0 .and. w < 1 ; w := int( GetClientWidth (0) * w )
ENDIF
IF h > 0 .and. h < 1 ; h := int( GetClientHeight(0) * h )
ENDIF

IF w > GetClientWidth (0) ; w := GetClientWidth (0)
ENDIF
IF h > GetClientHeight(0) ; h := GetClientHeight(0)
ENDIF
...
для управления положением окна с отключенным CENTER WINDOW ... , т.е.
DEFINE WINDOW Form_0 ;
At 0.5,0.5 ;
WIDTH 0.5 ;
HEIGHT 0.5 ;
...
разместит окно в правом нижнем углу

но может это и баловство ?

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




Пост N:1654
Зарегистрирован:11.02.10
ссылка на сообщение  Отправлено:11.02.20 13:29.Заголовок:SergKis пишет: доба..


SergKis пишет:

 цитата:
добавить проверку


Благодарю за предложение.
Пока сделал эту проверку таким образом:

 цитата:

IF ! ISNUMBER( w ) .AND. ! ISNUMBER( h )
...
ELSE

w := Min( w, GetDesktopWidth() )
h := Min( h, GetDesktopHeight() - GetTaskBarHeight() )

ENDIF

mVar := '_' + FormName
...



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



Пост N:3056
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:12.02.20 08:35.Заголовок:gfilatov2002 пишет П..


gfilatov2002 пишет
 цитата:
Пока сделал эту проверку таким образом:


В большинстве случаев задаю ширину, высоту окон в процентном отношении к клиентской обл. Descktop, т.е.
w := GetClientWidth(0) * 0.4
h := GetClientHeight(0)*0.6
оказалось, что удобно располагать окно по координатам, также в процентах, т.е. запись удобна
 
DEFINE WINDOW Form_0 ;
At 0.4,0.6 ;
WIDTH 0.4 ;
HEIGHT 0.6 ;
для расположения в правом нижнем углу экрана
DEFINE WINDOW Form_0 ;
At 0,0.6 ;
WIDTH 0.4 ;
HEIGHT 0.6 ;
для расположения в правом верхнем углу экрана
DEFINE WINDOW Form_0 ;
At 0.4,0 ;
WIDTH 0.4 ;
HEIGHT 0.5 ;
в левом нижнем и т.д.
т.е. оформив y,x,w,h как параметры, на мой взгляд, удобно динамически, при вызовах, задавать позиции и размеры окна. Это актуально для небольших, в размерах, справочниках. Располагая сразу, при вызове, удобно для клиента, часто, не надо делать запоминание координат и размеров для одного и того же окна справочника.


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



Пост N:3057
Зарегистрирован:17.02.12
ссылка на сообщение  Отправлено:12.02.20 09:55.Заголовок:gfilatov2002 Не был..


gfilatov2002
Не было учтено в ch для tbrowse :lAdjColumn := .T.
Сделал у себя так
 
Function _DefineTBrowse ( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight,;
...
oBrw:nHeightCell += 4

IF ! ( Adjust == NIL .and. lAdjust == NIL )

IF HB_ISLOGICAL(lAdjust) .and. lAdjust
Adjust := lAdjust
ENDIF
IF Adjust != NIL
oBrw:AdjColumns(Adjust)
ENDIF
ENDIF

...
METHOD AdjColumns( aColumns, nDelta ) CLASS TSBrowse // BK 2018.03.20
...
IF HB_ISLOGICAL(aColumns)
IF ! aColumns
::lAdjColumn := .T.

RETURN NIL
ENDIF
aColumns := NIL
ENDIF
...
тогда в примере CBru.prg
...
DEFINE TBROWSE oBrw AT nY, nX ALIAS cAlias WIDTH nW HEIGHT nH GRID ;
...
FOOTERS .T. ;
LOADFIELDS FIXED
...
не будет работать :AdjColumns()
...
FOOTERS .T. ;
LOADFIELDS FIXED ;
COLADJUST .T. // или {...}
будет работать :AdjColumns(.T.) // :AdjColumns({...})
FOOTERS .T. ;
LOADFIELDS FIXED ;
COLADJUST .F.
будет работать :AdjColumns(.F.), т.е. установка :lAdjColumn := .T.



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




Пост N:1655
Зарегистрирован:11.02.10
ссылка на сообщение  Отправлено:12.02.20 10:54.Заголовок:SergKis пишет: Не б..


SergKis пишет:

 цитата:
Не было учтено в ch для tbrowse


Благодарю за поправку

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




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


Обновил сборку 20.01 (Update 4) с учетом последних предложений Сергея Киселева

Базовый дистрибутив для 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 
ПрофильЦитата Ответить
Ответов -297 ,стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

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