On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
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 [только новые]


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




Пост N: 3174
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 15:03. Заголовок: SergKis пишет Можно ..


SergKis пишет
 цитата:
Можно не перебирать, а выполнить :DrawLine( , .F. )


Игорь, хорошо, что спросил. Начал еще раз проверять, параметр ввел, а исправить перенос из :DrawSelect() на эту переменную забыл

gfilatov2002
Правочка небольшая с выше сказанным на мой текст
 
METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse
...
Default xRow := iif( ::lDrawHeaders, Max( 1, nRowPos ), nRowPos ), lDrawCell := ::lDrawLine
...
If ::bOnDrawLine != Nil
Eval( ::bOnDrawLine, Self )
EndIf

IF ! lDrawCell
nBegin := 1
nLastCol := ::nColCount()
ENDIF

For nI := nBegin To nLastCol

If nStartCol >= nMaxWidth .and. lDrawCell
Exit
EndIf
...
IF nAlign != DT_CENTER .and. ::nCellMarginLR != NIL
uData := ::CellMarginLeftRight( nJ, uData, oColumn, nAlign, lMultiLine, 0 )
ENDIF

IF lDrawCell

oColumn:oCell := NIL

TSDrawCell( hWnd, ; // 1
...


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




Пост N: 1694
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.05.20 15:07. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
включу эти изменения в новую сборку


Выполнил все предложенные изменения кода, пересобрал пример demo5 - экспорт по клавише F8 работает аналогично готовому экзешнику

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




Пост N: 3175
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 15:22. Заголовок: gfilatov2002 Если б..


gfilatov2002
Если брали целиком мой файл h_tsbrowse.prg в нем надо убрать строки (была проба и не убрал)
 
FUNCTION _DefineTBrowse( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ;
...
oBrw:InsColumn( nColNumber, oCol )

IF oBrw:lDrawFooters
oBrw:aColumns[ nColNumber ]:cFooting := ""
ENDIF

oBrw:nCell := nColNumber + 1
oBrw:nFreeze := nColNumber
oBrw:lLockFreeze := .T.
...


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




Пост N: 1695
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.05.20 15:39. Заголовок: SergKis пишет: надо..


SergKis пишет:

 цитата:
надо убрать строки


Убрал, конечно

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




Пост N: 6651
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.20 16:11. Заголовок: Haz пишет: 3. Как у..


Haz пишет:

 цитата:
3. Как уже писал ранее ,при помощи Андрею в его TSB_экспортах - считаю такие экспорты (средствами бровса) красивыми, но бесперспективными с точки зрения временных затрат
Бровс умеет работать только с текущей записью , зачем мне тормозной перебор если я могу взять весь массив данных сразу и делать с ним что хочу (aEval, dbEval, SQLExecute() и пр) .
В целом , для демонстрашки экспорта доработка хорошая, практически не знаю зачем



Если бы такие красивые отчеты нужны были каждый день, то согласен, делал бы НЕ через ОЛЮ.
А так раз в месяц, а то и три нужен красивый отчёт начальству.
Не буду я тратить время на это, пускай 20 минут ждут, хотя у меня быстрей проходит.
Есть готовая фишка в МиниГуи - красивый экспорт, пускай работает.

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




Пост N: 1696
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 06.05.20 17:07. Заголовок: Всем кому это интересно


Подготовил 2-ю бету для новой сборки 20.05.
Что нового
Скрытый текст
Если заметили неточности в этом описании - пишите, исправлю...

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




Пост N: 6652
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.20 18:13. Заголовок: А нельзя в новой вер..


А нельзя в новой версии сделать правильное отображение символьных полей при задании центровки DT_CENTER ?
Не работает центровка сейчас !
Чтобы заработало, нужно шаманство делать, благо без бубна...

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




Пост N: 3176
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 18:35. Заголовок: Andrey пишет А нельз..


Andrey пишет
 цитата:
А нельзя в новой версии сделать правильное отображение символьных полей при задании центровки DT_CENTER ?
Не работает центровка сейчас !


Центровка работает, но мешает центровать, как ты хочешь правые пробелы.
Если их убирать ( trim() или alltrim ? ), то "сломается" отображение старого алгоритма,
т.е. значение "1 " в колонке 120 шириной отобразится по другому.
Так же сломаться может отображение строк с CRLF.
Сейчас решаю задавая oCol:bDecode := {|cval| Alltrim(cval) }

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




Пост N: 6653
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.20 18:42. Заголовок: SergKis пишет: Сейч..


SergKis пишет:

 цитата:
Сейчас решаю задавая oCol:bDecode := {|cval| Alltrim(cval) }


Это я понял. Спасибо !

Не работает цвет в суперхидере.
Делаю цвет в таблице:
 
:Setcolor( { 3}, { CLR_WHITE } ) // 3 , текста шапки таблицы
:SetColor( { 4}, { { || { CLR_BLACK, CLR_GRAY } } } ) // 4 , фона шапка таблицы
:SetColor( {16}, { { || { CLR_BLACK, CLR_GRAY } } } ) // 16, фона спецхидер
:SetColor( {17}, { { || CLR_YELLOW } } ) // 17, текста спецхидер

Вот результат:


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




Пост N: 3177
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 06.05.20 19:15. Заголовок: Andrey Как он может..


Andrey
Как он может работать, если цвета ставишь на него, раньше, чем создаешь SuperHeader
 
mySetTsb( oBrw ) // настройки таблицы
myColorTsb( oBrw ) // цвета на таблицу

myColorTsbElect( oBrw ) // цвета избранные
mySumTsb ( oBrw ) // суммирование колонок таблицы
myDbfDelColTsb( oBrw ) // убрать колонки из отображения
mySupHdTsb( oBrw, aSupHd ) // SuperHeader

myEnumTsb( oBrw ) // ENUMERATOR по порядку
mySet2Tsb( oBrw ) // настройки таблицы


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




Пост N: 6654
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 06.05.20 19:39. Заголовок: SergKis пишет: Как ..


SergKis пишет:

 цитата:
Как он может работать, если цвета ставишь на него, раньше, чем создаешь SuperHeader


Ну вот так и бывает...

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 1553
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 06.05.20 23:51. Заголовок: Andrey пишет: Не бу..


Andrey пишет:

 цитата:
Не буду я тратить время на это


Каждому своё. Я лучше один раз потрачу тк мне неприемлемо когда отчёта нужно ожидать больше нескольких секунд.
Что касается "пусть будет", то я и не говорил что эти доработки нужно убрать. Я говорил только о том, что для серьёзных объёмов есть другой инструмент, который в отличии от кривого Ole экспорта работает всегда и позволяет любые цвета и шрифт.

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




Пост N: 3179
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.05.20 08:59. Заголовок: gfilatov2002 Предло..


gfilatov2002
Предложение по hmg_alert(), AlertInfo() и др.
- hmg_alert() значение nIcoSize сделать равным 0, тогда на окне нет DRAW ICO ...
- в AlertInfo(), AlertExclamation(), AlertStop() добавить параметр lNoPlay, для отключения звук. сигнала
Alert.prg Скрытый текст

По поводу
 цитата:
- added the new variable :lDrawLine in the TSBrowse class


Добавил "быстрого" доступа к элементам тсб, SuperHeader, Header, SpecHd, DrawLine и Footer.
В TsColumn.prg добавил переменные
 
DATA oCellHead // TSBcell object Header
DATA oCellEnum // TSBcell object Enumerator
DATA oCellFoot // TSBcell object Footer
DATA oCell // TSBcell object

В h_tbrowse.prg правил
METHOD DrawSuper( lDrawCell ) CLASS TSBrowse
METHOD DrawHeaders( lFooters, lDrawCell ) CLASS TSBrowse
METHOD DrawLine( xRow, lDrawCell ) CLASS TSBrowse
METHOD DrawSelect( xRow, lDrawCell ) CLASS TSBrowse
CLASS TSBcell

Исходники и пример по использованию тут https://TransFiles.ru/vpnu8
в demo7 работают клавиши
F8 - общий способ доступа для массива и dbf, использован "родной" вариант AlertInfo()
F9 - только доступ для dbf, использован вариант AlertInfo() с nIcoSize := 0 и lNoPlay := .T.

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




Пост N: 1697
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.05.20 16:21. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение по hmg_alert(), AlertInfo() и др.
...
Добавил "быстрого" доступа к элементам тсб, SuperHeader, Header, SpecHd, DrawLine и Footer.


Все правки приняты - хорошая работа.
Благодарю за помощь

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




Пост N: 3180
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.05.20 20:26. Заголовок: gfilatov2002 Еще та..


gfilatov2002
Еще такая правка
 
CLASS TSBrowse FROM TControl
...
ACCESS IsEdit INLINE ! Empty( ::aColumns[ ::nCell ]:oEdit ) // SergKis addition
ACCESS Tsb INLINE ::oWnd

...
FUNCTION GetProperty ( Arg1 , Arg2 , Arg3 , Arg4 , Arg5 , Arg6 , Arg7 )
...
#ifdef _OBJECT_

CASE Arg3 == "OBJECT"

IF _HMG_lOOPEnabled
RetVal := _ControlObj ( Arg2 , Arg1 )
IF HB_ISOBJECT( RetVal ) .and. _HMG_aControlType[ RetVal:Index ] == "TBROWSE"
RetVal := _HMG_aControlIds[ RetVal:Index ]
ENDIF
ELSEIF ( ix := GetControlIndex ( Arg2 , Arg1 ) ) > 0
IF _HMG_aControlType[ ix ] == "TBROWSE"
RetVal := _HMG_aControlIds[ ix ]
ENDIF
ENDIF

#endif
...
Синим цветом, наверно, надо убрать
Это даст возможность получать объект TSBROWSE, как SET OOP ON, так и SET OOP OFF
? (This.oBrw.Object):ClassName // SET OOP OFF
? (This.oBrw.Object):Tsb:ClassName // SET OOP ON\OFF


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




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


SergKis пишет:

 цитата:
наверно, надо убрать


Предлагаю не убирать, но - передвинуть
SergKis пишет:

 цитата:

CASE Arg3 == "OBJECT"

IF _HMG_lOOPEnabled
#ifdef _OBJECT_
RetVal := _ControlObj ( Arg2 , Arg1 )
IF HB_ISOBJECT( RetVal ) .and. _HMG_aControlType[ RetVal:Index ] == "TBROWSE"
RetVal := _HMG_aControlIds[ RetVal:Index ]
ENDIF
#endif
ELSEIF ( ix := GetControlIndex ( Arg2 , Arg1 ) ) > 0
IF _HMG_aControlType[ ix ] == "TBROWSE"
RetVal := _HMG_aControlIds[ ix ]
ENDIF
ENDIF



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




Пост N: 3181
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.05.20 12:19. Заголовок: gfilatov2002 Добави..


gfilatov2002
Добавить в i_this.ch
 
...
#xtranslate This . <c> . <p:Names> => HMG_GetFormControls ( _HMG_THISFORMNAME , <(c)> )

#xtranslate This . <c> . <p:ClientWidth> => _GetClientRect ( GetControlHandle ( <(c)> , _HMG_THISFORMNAME ) ) \[3]

Использовать
aAll := This.All.Names
? "All controls name =", aAll
?v aAll
?
aTsb := This.TBrowse.Names
? "TBrowse =", aTsb
?v aTsb
?
aBtn := This.Button.Names
? "Button =", aBtn
?v aBtn
?
aBtn := This.ButtonEx.Names
? "ButtonEx =", aBtn
?v aBtn
?
В функциях примера demo7 можно заменить переменную ao на ac
 
AlertInfo( hb_memoread(_SetGetLogFile()), "INFO", , 0, , , ;
{||ac,cn| // {|ao,cn|
an := This.EditBox.Names // ao := (This.Object):GetObj4Type("EDITBOX")
If HB_ISARRAY(an) .and. Len(an) == 1 // If HB_ISARRAY(ao) .and. Len(ao) == 1
cn := an[1] // ao[1]:Name
This.Width := test.ClientWidth * 0.95
This.(cn).Row := 10
This.(cn).Col := 10
This.(cn).Width := This.ClientWidth - 10 * 2
This.(cn).Height := This.(cn).Height + 10 * 2 + 10
This.Center
EndIf
Return Nil
} , .T. ) // .T. - lNoPlay


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




Пост N: 3182
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.05.20 12:35. Заголовок: PS Добавить еще #xtr..


PS
Добавить еще
 
#xtranslate ThisWindow . <p:Names,Controls> => HMG_GetFormControls ( _HMG_THISFORMNAME , "ALL" )
...
#xtranslate This . <p:Names,Controls> => HMG_GetFormControls ( _HMG_THISFORMNAME , "ALL" )
...


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




Пост N: 3183
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.05.20 13:59. Заголовок: gfilatov2002 Правка..


gfilatov2002
Правка
 
METHOD AddColumn( oColumn ) CLASS TSBrowse
...
If ATail( ::aColSizes ) == NIL .and. Len( ::aColSizes ) > 0
::aColSizes[ Len( ::aColSizes ) ] := oColumn:nWidth
ENDIF

If ::aPostList != Nil // from ComboWBlock function
...


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




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


SergKis пишет:

 цитата:
Правка


OK

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