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




Пост 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 
ПрофильЦитата Ответить
Ответов - 137 , стр: 1 2 3 4 5 6 7 All [только новые]





Пост 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 
ПрофильЦитата Ответить
moderator




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


gfilatov2002 пишет:

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


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

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



Пост 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 
ПрофильЦитата Ответить
moderator




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


SergKis пишет:

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


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

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




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


Haz пишет:

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



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

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




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


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

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




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


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

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



Пост 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 
ПрофильЦитата Ответить
постоянный участник




Пост 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 
ПрофильЦитата Ответить



Пост 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 
ПрофильЦитата Ответить
постоянный участник




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


SergKis пишет:

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


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

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


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


Andrey пишет:

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


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

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



Пост 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 
ПрофильЦитата Ответить
moderator




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


SergKis пишет:

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


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

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



Пост 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 
ПрофильЦитата Ответить
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 
ПрофильЦитата Ответить



Пост 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 
ПрофильЦитата Ответить



Пост 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 
ПрофильЦитата Ответить



Пост 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 
ПрофильЦитата Ответить
moderator




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


SergKis пишет:

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


OK

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 137 , стр: 1 2 3 4 5 6 7 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

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