Автор | Сообщение |
Vlad04
|
| постоянный участник
|
Пост N: 420
Зарегистрирован: 13.10.05
|
|
Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи (продолжение)
TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру цитата: | 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 |
| Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
Andrey
|
| постоянный участник
|
Пост N: 6665
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.05.20 19:07. Заголовок: А зачем в demo7.prg ..
А зачем в demo7.prg в конце функций my0(oBrw) и my1(oBrw) ставится вот этот код: :lDrawLine := .T. :Reset() AEval( :aColumns ,{|oc| oc:oCell := NIL, ; oc:oCellHead := NIL, ; oc:oCellEnum := NIL, ; oc:oCellFoot := NIL } )
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3196
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.05.20 19:18. Заголовок: Andrey пишет А зачем..
Andrey пишет цитата: | А зачем в demo7.prg в конце функций my0(oBrw) и my1(oBrw) ставится вот этот код: |
| Эти переменные, после :DarawLine(, .F.), :DrawHeader(, .F.), DrawFooters(, .F.) хранят данные, которые можно убрать, что и делается в AEval(), т.к. с тсб можно работать еще долго. Если этого не делать, ничего страшного, повисят до окончания работы этого тсб.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6669
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.05.20 15:18. Заголовок: Всем привет ! Нашёл ..
Всем привет ! Нашёл тут большую непонятку в примере. Если кол-во колонок равно 45 и стрелками вправо-влево до конца и начала таблицы, то всё, таблица ломается и пример вешается. Если сделать 44 или 46 колонок, то всё нормально. Почему так ? Цифру 45 нашёл в mySet2Tsb(), может из-за этого ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3201
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.05.20 18:25. Заголовок: Andrey пишет Почему ..
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
|
| постоянный участник
|
Пост N: 6670
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.05.20 20:12. Заголовок: SergKis пишет: Ты п..
SergKis пишет: А как тогда сделать этот пример чтобы всегда работал ? Сломал на 34 колонках... Проект положил к тебе.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3202
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.05.20 20:51. Заголовок: Andrey пишет Уменьш..
Andrey пишет [quote]` Уменьшил 45 на 30 и у меня работает, т.е. :lMoreFields := ( :nColCount() > 30 )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6671
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.05.20 21:17. Заголовок: SergKis пишет: Умен..
SergKis пишет: цитата: | Уменьшил 45 на 30 и у меня работает, т.е. |
| Да, так заработало ! Спасибо !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6672
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.05.20 21:51. Заголовок: Если делать цвета че..
Если делать цвета через контейнер: 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 ) .... то начинает ломаться экспорт в эксель. Выдаёт такую ошибку: 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 И как теперь быть ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3203
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.05.20 22:00. Заголовок: Andrey пишет Да, так..
Andrey пишет Если бы ты вставил команду :lNoHScroll := .F. // добавить\вкл. ползунок горизонтальный ? procname(), :nColCount() ? :lMoreFields := ( :nColCount() > 45 ) то по результату все увидел бы сам MYSET2TSB 44
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3204
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.05.20 22:13. Заголовок: Andrey пишет И как т..
Andrey пишет Переделать на oCol:oСell ( :DrawLine(, .F.) ), все брать оттуда и :hFont, цвета, :cValue, :uValue, valtype(:uValue) Там все готовые данные к выводу, бери нужные, формат excel от них ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6673
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.05.20 22:16. Заголовок: SergKis пишет: Пере..
SergKis пишет: Понял...
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6687
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.05.20 10:44. Заголовок: Всем доброго утра ! ..
Всем доброго утра ! Возникли вопросы по tsbrowse 1) Почему при создании тсб нельзя сразу задать все фонты ? вот так: aFont := { "TsbCellNorm", "TsbHeadBold", "TsbFootBold", "TsbSpHd" } DEFINE TBROWSE oBrw ; AT nY, nX ALIAS aArray WIDTH nWTsb HEIGHT nHTsb CELL ; FONT aFont ; ..... Сейчас 3 фонта работают. Добавить 4 фонт возможно ? 2) Сейчас в тсб можно добавить первую виртуальную колонку для tsbrowse-Dbf и tsbrowse-Array А можно ещё сделать добавление своих доп.колонок ? Для tsbrowse-Array понятно, что делать этого не нужно. А вот для tsbrowse-Dbf иногда нужно, допустим когда нельзя править структуры базы. Можно создавать свое поле в базе, но иногда этого делать нельзя, допустим при работе с чужой базой. Если это сложно сделать, то вопрос можно пропустить.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3218
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.05.20 13:00. Заголовок: Andrey пишет А можно..
Andrey пишет цитата: | А можно ещё сделать добавление своих доп.колонок ? |
| Сколько угодно 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 есть переменные в своих местах
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3219
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.05.20 13:26. Заголовок: PS Если ты говоришь ..
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
|
| постоянный участник
|
Пост N: 6688
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.05.20 18:54. Заголовок: SergKis пишет: то н..
SergKis пишет: цитата: | то надо добавлять в массив в каком то порядке и присваивать в _DefineTBrowse () |
| Ну да, я про это. При создании ТСБ задать сразу все фонты 4 штуки, таблица же из 4 секций состоит. Для основных задач будет простое и понятное заполнение. Ну а потом, кто хочет делает фонты какие сам захочет.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3220
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.05.20 19:57. Заголовок: Andrey пишет При соз..
Andrey пишет цитата: | При создании ТСБ задать сразу все фонты 4 штуки, таблица же из 4 секций состоит. |
| Для этого поправить немного надо 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 ... Проверил, работает
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6689
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.05.20 20:04. Заголовок: SergKis пишет: Ты,..
SergKis пишет: цитата: | Ты, наверно, путаешь SpecHeader (ENUMERATOR) и SuperHeader - это две разницы |
| Да, я наверное путаю. Имеется таблица, в ней 4 части: ячейки, подвал, шапка и та часть над шапкой. Я её называю суперхидером. Или я неправ ? Вот для неё и нужно сразу задавать фонт. Хотя идея автора наверное была что суперхидер имеет одинаковый шрифт как у шапки таблицы. Но это для юзера не наглядно ! Заголовок таблицы нужно делать крупней для юзера, чтобы в глаза бросалась. Из-за этого и возник вопрос.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6690
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.05.20 20:57. Заголовок: SergKis пишет: Пров..
SergKis пишет: Да я тоже проверил. Так лучше ! Но тогда напрашивается вопрос размещения 5 фонта. aFont := { "TsbNorm", "TsbBold", "TsbBold", "TsbSpecH", "TsbSuperH" } Можно ли это реализовать ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 3221
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.05.20 20:59. Заголовок: Andrey пишет Я её на..
Andrey пишет цитата: | Я её называю суперхидером. |
| Это специальный заголовок, для нумерации колонок SuperHeader это над Header, объединяет колонки. Используй для фонта для него команду #command ADD [ SUPER ] HEADER TO <oBrw> ; ... [ FONT <uFont> ] ; ... или метод с параметрами :AddSuperHead( nFromCol, nToCol, uHead, nHeight, aColors, l3dLook , uFont, uBitMap, lAdjust, lTransp, ...)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 6691
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.05.20 21:04. Заголовок: SergKis пишет: Supe..
SergKis пишет: цитата: | SuperHeader это над Header, объединяет колонки. |
| Ну да, я так и пишу - "шапка и та часть над шапкой." SergKis пишет: цитата: | или метод с параметрами или после :AddSuperHead(...) :hFontSupHdSet( nCol, hFontSuper ) |
| А как можно отдельно задать фонт для суперхидера, сразу. Пробовал так: :hFontSupHdSet := GetFontHandle("CardSuperH") // 5-доп.фонт Прога вылетает с ошибкой: 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 Там 2 параметра в METHOD hFontSupHdSet( nCol, uFont ) А как правильно задать мне в :hFontSupHdSet := ???????
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|