Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне
Кратко, что нового:
- исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).
Отправлено: 13.07.24 17:26. Заголовок: gfilatov2002 пишет Т..
gfilatov2002 пишет
цитата:
Также потребовалось добавить oBrw:lRowPosAtRec := .T.
Это я пропустил (вылетело из головы, от жары, наверное, извините), т.к. установка :lRowPosAtRec := .T. у меня стоит в _TBrowse(...) по умолчанию, что бы всегда знать строки отображаемые и для Tooltip подсвечивать длинную информацию из строки
К слову SIXRDD версии 3.02 был разработан в 1993-1995, и он поддерживается в Харборе для совместимости. Многие его функции заменены вызовом нативных Харбор функций (или заданы через них). В свое время, конечно, это был продвинутый RDD, но кому сейчас интересен формат DBF, кроме гиков
Считаю более актуальными для тех, кто рассматривает миграцию от DBF к SQL, примеры с использованием библиотек SQLRDD, SQLMIX и т.п. Но я могу быть неправ...
P.S. Кстати, я включил в ПРО-сборку исправленную версию библиотеки SQLRDD: - была исправлена ошибка, когда для символьных полей возвращался размер, который в 4 раза больше, чем размер оригинального поля в базе DBF. Эта ошибка проявляется только в 64-битной версии библиотеки.
Считаю более актуальными для тех, кто рассматривает миграцию от DBF к SQL, примеры с использованием библиотек SQLRDD, SQLMIX и т.п. Но я могу быть неправ...
Это да, нужное решение. А можно включить простой пример открытия базы SQLRDD с использованием ТСБ на базе примера SIX3 ? Для sqlite тоже хотелось бы иметь пример на базе ТСБ, как пример для SIX3 (коротко и понятно) Я сам работал ранее с PostgreSql, сделаю простой пример для него, ранее давал конвертор DBF -> PgSql.
gfilatov2002
moderator
Пост N: 2336
Зарегистрирован: 11.02.10
Отправлено: 22.07.24 09:50. Заголовок: Опубликована финальн..
gfilatov2002 Работа с цветом, в :DrawHeaders() с :lSelector := .T., на мой взгляд, не корректна, т.е. отключен метод :SetColor() и стандартные задания цветов в заголовках SELECTOR и добавка DATA nClrSelectorFtBack // special selector footer background color мало что решает, заполняем лишние переменные, когда есть переменные самой колонки + при установке цвета есть неточность кода
IF ::lDrawSpecHd ... IF nI == nBegin .AND. ::lSelector nClrBacks := iif( ::lDrawSpecHd, ::nClrSpcHdBack, nClrHeadBack ) ... мы уже в ::lDrawSpecHd. Предлагаю вернуться к варианту DATA nClrSelectorHdBack // special selector header background color DATA nClrSelectorFtBack // special selector footer background color если не убирать эту строку DATA lClrSelectorHdBack AS LOGICAL INIT .T. // special selector header background color ... METHOD DrawHeaders( lFooters, lDrawCell ) CLASS TSBrowse ... IF !( nJ == 1 .AND. ::lSelector ) IF ( nClrBack := iif( ::nColOrder == nI, oColumn:nClrOrdeBack, oColumn:nClrHeadBack ) ) == NIL nClrBack := iif( ::nColOrder == nI, nClrOrdeBack, nClrHeadBack ) ENDIF ELSEIF ! ::lClrSelectorHdBack nClrBack := oColumn:nClrHeadBack ELSEIF ::nClrSelectorHdBack != NIL nClrBack := ::nClrSelectorHdBack ELSE nClrBack := ATail( ::aColumns ):nClrHeadBack ENDIF ... IF ::lDrawSpecHd ... IF nI == nBegin .AND. ::lSelector //!!! nClrBacks := iif( ::lDrawSpecHd, ::nClrSpcHdBack, nClrHeadBack ) IF ! ::lClrSelectorHdBack nClrBacks := oColumn:nClrSpcHdBack ELSEIF ::nClrSelectorHdBack != NIL nClrBacks := ::nClrSelectorHdBack ELSE nClrBacks := nClrHeadBack ENDIF ELSE nClrBacks := iif( ::nPhantom == -1, ATail( ::aColumns ):nClrSpcHdBack, nClrPane ) ENDIF ... IF ::lFooting .AND. ::lDrawFooters ... IF !( nJ == 1 .AND. ::lSelector ) // JP nClrBack := iif( oColumn:nClrFootBack != NIL, oColumn:nClrFootBack, nClrFootBack ) ELSEIF ! ::lClrSelectorHdBack nClrBack := oColumn:nClrFootBack ELSEIF ::nClrSelectorFtBack != NIL nClrBack := ::nClrSelectorFtBack ELSEIF ::nClrSelectorHdBack != NIL nClrBack := ::nClrSelectorHdBack ELSE nClrBack := ATail( ::aColumns ):nClrFootBack ENDIF nClrBack := ::GetValProp( nClrBack, nClrBack, nJ ) ... Где oBrw:lClrSelectorHdBack := .F. - вкл. работу от параметров цветов из объекта колонки
Еще правка в _Tbrowse(...) FUNCTION _TBrowse( oParam, uAlias, cBrw, nY, nX, nW, nH )
LOCAL oBrw, aTmp, aBrush, aHead, aField, aFoot, aColor LOCAL cForm, lSpecHd, bInit, bEnd LOCAL hForm LOCAL i, j DEFAULT oParam := oHmgData() DEFAULT oParam:cForm := oParam:cFormName DEFAULT oParam:cForm := _HMG_ThisFormName
IF HB_ISBLOCK( oParam:bChange ) oBrw:bChange := oParam:bChange // :bChange := {|ob| ... } ENDIF добавил, что бы работал внутренний oParam:bEnd без изменений IF HB_ISBLOCK( oParam:bAfter ) ; EVal( oParam:bAfter, oBrw, oParam ) ENDIF
IF HB_ISBLOCK( bEnd ) ; EVal( bEnd, oBrw, oParam ) ...
на IF HB_ISBLOCK( oParam:bLostFocus ) oBrw:bLostFocus := oParam:bLostFocus // :bLostFocus := {|hCtlFocus,ob| ... } ENDIF
SergKis
постоянный участник
Пост N: 4613
Зарегистрирован: 17.02.12
Отправлено: 30.07.24 18:44. Заголовок: gfilatov2002 пишет и..
gfilatov2002 пишет
цитата:
исправил опечатку
Спасибо , пропустил такую бяку
Andrey
постоянный участник
Пост N: 7822
Зарегистрирован: 12.09.06
Отправлено: 17.08.24 15:42. Заголовок: Собираю проект Tsb_A..
Собираю проект Tsb_Access2 в версии 23.12.5 - всё работает. Если собираю последней версией 24.07 - вылетает с такой ошибкой:
Error BASE/1005 Message not found: TSBROWSE:_LCLRSELECTORHDBACK Args: [1] = O TSBROWSE Called from __ERRRT_SBASE(0) Called from TSBROWSE:ERROR(0) Called from (b)HBOBJECT(0) Called from TSBROWSE:MSGNOTFOUND(0) Called from TSBROWSE:_LCLRSELECTORHDBACK(0) <<-- наверное нет в версии 24.07 Called from MYTSBEND(744) in module: tsb_ViewAccess.prg Called from DRAW_RECORDSET(351) in module: tsb_ViewAccess.prg
Andrey
постоянный участник
Пост N: 7827
Зарегистрирован: 12.09.06
Отправлено: 20.08.24 15:29. Заголовок: Не работает мой прое..
Не работает мой проект Tsb_dbf(0.74).7z на версии 24.07 Ошибка на версии 24.07 такая:
Error BASE/1081 Неверный аргумент: + Args: [1] = C Window: [2] = U --------------------------------- Stack Trace --------------------------------- Called from _DEFINETBROWSE(249) in module: h_tbrowse.prg Called from _TBROWSE(558) in module: h_controlmisc2.prg Called from TSB_VIEWDBF(63) in module: tsb_ViewDbf.prg Called from MENU2OPENFILE(171) in module: 2file.prg Called from (b)SETS_EVENT2WINDOWSTANDART(211) in module: 0main.prg Called from DO_WINDOWEVENTPROCEDURE(82) in module: h_objmisc.prg Called from TWNDDATA:DOEVENT(1435) in module: h_objects.prg Called from DO_ONWNDLAUNCH(668) in module: h_objmisc.prg Called from (b)INIT(127) in module: h_init.prg
Если собираю на версии Сергея - 23.12.5 то работает
Нет правки для случая когда объект ТСБ определяется на другом окне. Мой код:
// ------ вариант 2 oTsb:cForm := oWnd:Name // <--- обязательно так !!! oTsb:cFormName := oWnd:Name // или так ? ProcNL(), cAls, ALIAS(), "cBrw=",cBrw // функция в библиотеке \MiniGUI\SOURCE\TsBrowse\h_controlmisc2.prg oBrw := _TBrowse( oTsb, cAls, cBrw, oTsb:nY, oTsb:nX, oTsb:nW, oTsb:nH ) <<<----- строка 63
Наверное в версии 24.07 нет изменений для назначения
* Enhanced: Added the auxiliary function HMG_Alert_FontName() for managing of a font name in the function HMG_Alert(). Usage: // Alert* font _DefineFont( "DlgFont" , o:cDlgFont , o:nDlgSize, .F., .F. ) _DefineFont( "DlgFont2", "Courier New", o:nDlgSize, .F., .F. ) ... cOld := HMG_Alert_FontName( "DlgFont2" ) AlertInfo( cMsg ) HMG_Alert_FontName( cOld )
gfilatov2002
moderator
Пост N: 2345
Зарегистрирован: 11.02.10
Отправлено: 02.09.24 09:58. Заголовок: Всем кому это интересно...
Все даты в формате GMT
3 час. Хитов сегодня: 399
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет