Форум » GUI » TsBrowse в Минигуи (продолжение) » Ответить

TsBrowse в Минигуи (продолжение)

Vlad04: TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру [quote] DEFINE TBROWSE oBrw2 ; AT 60,450 ; ALIAS cAlias ; OF Form1 ; WIDTH 330 ; HEIGHT 340 ; FONT "Verdana" ; SIZE 9 ; ON DBLCLICK CopyRec(); ON GOTFOCUS fModelo_Hab(2) ; AUTOFILTER ; CELLED EDIT; VALUE nRec; GRID [/quote] Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Andrey: А зачем в demo7.prg в конце функций my0(oBrw) и my1(oBrw) ставится вот этот код: [pre2] :lDrawLine := .T. :Reset() AEval( :aColumns ,{|oc| oc:oCell := NIL, ; oc:oCellHead := NIL, ; oc:oCellEnum := NIL, ; oc:oCellFoot := NIL } )[/pre2]

SergKis: Andrey пишет А зачем в demo7.prg в конце функций my0(oBrw) и my1(oBrw) ставится вот этот код: Эти переменные, после :DarawLine(, .F.), :DrawHeader(, .F.), DrawFooters(, .F.) хранят данные, которые можно убрать, что и делается в AEval(), т.к. с тсб можно работать еще долго. Если этого не делать, ничего страшного, повисят до окончания работы этого тсб.

Andrey: Всем привет ! Нашёл тут большую непонятку в примере. Если кол-во колонок равно 45 и стрелками вправо-влево до конца и начала таблицы, то всё, таблица ломается и пример вешается. Если сделать 44 или 46 колонок, то всё нормально. Почему так ? Цифру 45 нашёл в mySet2Tsb(), может из-за этого ?


SergKis: Andrey пишет Почему так ? Ты пропустил, почитай http://clipper.borda.ru/?1-1-0-00000559-000-60-0 Пост 1 Отправлено: 29.11.19 10:25 и далее ChangeLog.txt 2019/12/12: HMG Extended Edition version 19.12. ... * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - added the new variable :lMoreFields in the TSBrowse class; - added the new method MoreFields( nMsg, nWParam ). ... Надо подбирать кол-во полей или переменную DATA nMaxKeysLR AS NUMERIC INIT 3 Значение для MySet2Tsb() взял (see demo in folder \Utils\mgDBU) У меня с такими значениями работает норм.

Andrey: SergKis пишет: Ты пропустил, почитай А как тогда сделать этот пример чтобы всегда работал ? Сломал на 34 колонках... Проект положил к тебе.

SergKis: Andrey пишет Уменьшил 45 на 30 и у меня работает, т.е. :lMoreFields := ( :nColCount() > 30 )

Andrey: SergKis пишет: Уменьшил 45 на 30 и у меня работает, т.е. Да, так заработало ! Спасибо !

Andrey: Если делать цвета через контейнер: [pre2] FUNCTION mySetTsb( oBrw ) WITH OBJECT oBrw :Cargo := oKeyData() // создает объект без переменных (условно пустой) используем ниже по коду ..... FUNCTION myColorTsb( oBrw ) LOCAL O WITH OBJECT oBrw:Cargo :nText := GetSysColor( COLOR_WINDOWTEXT ) :nPane := GetSysColor( COLOR_WINDOW ) ....[/pre2] то начинает ломаться экспорт в эксель. Выдаёт такую ошибку: [pre2]Error BASE/1004 Метод не экспортирован: CARGO Args: [1] = N 10 --------------------------------- Stack Trace --------------------------------- Called from CARGO(0) Called from MYTSBCOLORBACKFOOT(552) in module: demo7.prg Called from (b)MYCOLORTSBELECT(278) in module: demo7.prg Called from MYCOLORN(785) in module: Tsb5xlsOle1.prg Called from EXCELOLE4EXTERN(706) in module: Tsb5xlsOle1.prg Called from (b)TOEXCEL5(86) in module: Excel5.prg Called from BRW4XLSOLE(357) in module: Tsb5xlsOle1.prg [/pre2] И как теперь быть ?

SergKis: Andrey пишет Да, так заработало ! Если бы ты вставил команду[pre2] :lNoHScroll := .F. // добавить\вкл. ползунок горизонтальный ? procname(), :nColCount() ? :lMoreFields := ( :nColCount() > 45 ) [/pre2] то по результату все увидел бы сам MYSET2TSB 44

SergKis: Andrey пишет И как теперь быть ? Переделать на oCol:oСell ( :DrawLine(, .F.) ), все брать оттуда и :hFont, цвета, :cValue, :uValue, valtype(:uValue) Там все готовые данные к выводу, бери нужные, формат excel от них ...

Andrey: SergKis пишет: Переделать на Понял...

Andrey: Всем доброго утра ! Возникли вопросы по tsbrowse 1) Почему при создании тсб нельзя сразу задать все фонты ? вот так: [pre2] aFont := { "TsbCellNorm", "TsbHeadBold", "TsbFootBold", "TsbSpHd" } DEFINE TBROWSE oBrw ; AT nY, nX ALIAS aArray WIDTH nWTsb HEIGHT nHTsb CELL ; FONT aFont ; .....[/pre2] Сейчас 3 фонта работают. Добавить 4 фонт возможно ? 2) Сейчас в тсб можно добавить первую виртуальную колонку для tsbrowse-Dbf и tsbrowse-Array А можно ещё сделать добавление своих доп.колонок ? Для tsbrowse-Array понятно, что делать этого не нужно. А вот для tsbrowse-Dbf иногда нужно, допустим когда нельзя править структуры базы. Можно создавать свое поле в базе, но иногда этого делать нельзя, допустим при работе с чужой базой. Если это сложно сделать, то вопрос можно пропустить.

SergKis: Andrey пишет А можно ещё сделать добавление своих доп.колонок ? Сколько угодно [pre2] LOCAL oCol DEFINE COLUMN oCol ... ... oBrw:InsColumn( nPos, oCol ) // nPos номер перед которой вставить ... Для dbf в списке полей одно имя поля повторяешь 2 раза (можешь 3 и ...), потом для колонки по номеру меняешь oCol:bData или oCol:bValue и даешь новое имя oCol:cName := "...". можно поправить oCol:cField и т.д. если надо Сейчас 3 фонта работают. Добавить 4 фонт возможно ? Куда ? Есть oBrw:hFont, oBrw:hFontHead, oBrw:hFontFoot. Для колонок, SuperHead, SpecHd есть переменные в своих местах [/pre2]

SergKis: PS Если ты говоришь о заполнении, выделенное цветом DATA hFontEdit AS NUMERIC // edition font DATA hFontHead AS NUMERIC // header font DATA hFontFoot AS NUMERIC // footer font DATA hFontSpcHd AS NUMERIC // special header font то надо добавлять в массив в каком то порядке и присваивать в _DefineTBrowse ()

Andrey: SergKis пишет: то надо добавлять в массив в каком то порядке и присваивать в _DefineTBrowse () Ну да, я про это. При создании ТСБ задать сразу все фонты 4 штуки, таблица же из 4 секций состоит. Для основных задач будет простое и понятное заполнение. Ну а потом, кто хочет делает фонты какие сам захочет.

SergKis: Andrey пишет При создании ТСБ задать сразу все фонты 4 штуки, таблица же из 4 секций состоит. Для этого поправить немного надо[pre2] FUNCTION _DefineTBrowse( ControlName, ParentFormName, nCol, nRow, nWidth, nHeight, ; ... IF ! Empty( FontName ) .and. HB_ISARRAY( FontName ) AEval( FontName, { |cf| AAdd( aFonts, cf ) } ) aFont := ASize( aFonts, 4 ) FontName := aFont[1] ... oBrw := TSBrowse():New( ControlName, nRow, nCol, nWidth, nHeight, ; bFields, aHeaders, aWidths, ParentFormName, ; change, bDblClick, bRClick, fontname, fontsize, ; hCursor, aTmpColor, aBmp, cMsg, update, uAlias, uWhen, value, cell, ; nStyle, bLClick, aFlds, aHeadClick, nLineStyle, lRePaint, ; Delete, aJust, lock, appendable, lEnum, ; lAutoSearch, uUserSearch, lAutoFilter, uUserFilter, aPicture, ; lTransparent, uSelector, lEditable, lAutoCol, aColSel, tooltip ) IF HB_ISARRAY( aFont ) .and. Len(aFont) > 3 .and. HB_ISCHAR(aFont[ 4 ]) oBrw:hFontSpcHd := GetFontHandle(aFont[ 4 ]) ENDIF ... [/pre2] Проверил, работает

Andrey: SergKis пишет: Ты, наверно, путаешь SpecHeader (ENUMERATOR) и SuperHeader - это две разницы Да, я наверное путаю. Имеется таблица, в ней 4 части: ячейки, подвал, шапка и та часть над шапкой. Я её называю суперхидером. Или я неправ ? Вот для неё и нужно сразу задавать фонт. Хотя идея автора наверное была что суперхидер имеет одинаковый шрифт как у шапки таблицы. Но это для юзера не наглядно ! Заголовок таблицы нужно делать крупней для юзера, чтобы в глаза бросалась. Из-за этого и возник вопрос.

Andrey: SergKis пишет: Проверил, работает Да я тоже проверил. Так лучше ! Но тогда напрашивается вопрос размещения 5 фонта. [pre2] aFont := { "TsbNorm", "TsbBold", "TsbBold", "TsbSpecH", "TsbSuperH" } [/pre2] Можно ли это реализовать ?

SergKis: Andrey пишет Я её называю суперхидером. Это специальный заголовок, для нумерации колонок SuperHeader это над Header, объединяет колонки. Используй для фонта для него команду #command ADD [ SUPER ] HEADER TO <oBrw> ; ... [ FONT <uFont> ] ; ... или метод с параметрами :AddSuperHead( nFromCol, nToCol, uHead, nHeight, aColors, l3dLook, uFont, uBitMap, lAdjust, lTransp, ...)

Andrey: SergKis пишет: SuperHeader это над Header, объединяет колонки. Ну да, я так и пишу - "шапка и та часть над шапкой." SergKis пишет: или метод с параметрами или после :AddSuperHead(...) :hFontSupHdSet( nCol, hFontSuper ) А как можно отдельно задать фонт для суперхидера, сразу. Пробовал так: :hFontSupHdSet := GetFontHandle("CardSuperH") // 5-доп.фонт Прога вылетает с ошибкой:[pre2] Error BASE/1005 Message not found: TSBROWSE:_HFONTSUPHDSET Args: [1] = O TSBROWSE --------------------------------- Stack Trace --------------------------------- Called from __ERRRT_SBASE(0) Called from TSBROWSE:ERROR(0) Called from (b)HBOBJECT(0) Called from TSBROWSE:MSGNOTFOUND(0) Called from TSBROWSE:_HFONTSUPHDSET(0) Called from MYSUPERHEADER(595) in module: cardcomp.prg Called from MAIN(159) in module: cardcomp.prg [/pre2] Там 2 параметра в METHOD hFontSupHdSet( nCol, uFont ) А как правильно задать мне в :hFontSupHdSet := ???????



полная версия страницы