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



Спасибо: 0 
Профиль
Ответов - 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 } )



Спасибо: 0 
Профиль
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(), т.к. с тсб можно работать еще долго. Если этого не делать, ничего страшного, повисят до окончания работы этого тсб.

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




Пост N: 6669
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.05.20 15:18. Заголовок: Всем привет ! Нашёл ..


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

Спасибо: 0 
Профиль
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)
У меня с такими значениями работает норм.

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




Пост N: 6670
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.05.20 20:12. Заголовок: SergKis пишет: Ты п..


SergKis пишет:

 цитата:
Ты пропустил, почитай


А как тогда сделать этот пример чтобы всегда работал ?
Сломал на 34 колонках...
Проект положил к тебе.

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




Пост N: 3202
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.05.20 20:51. Заголовок: Andrey пишет Уменьш..


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

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




Пост N: 6671
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.05.20 21:17. Заголовок: SergKis пишет: Умен..


SergKis пишет:

 цитата:
Уменьшил 45 на 30 и у меня работает, т.е.


Да, так заработало !
Спасибо !

Спасибо: 0 
Профиль
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

И как теперь быть ?

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




Пост N: 3203
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.05.20 22:00. Заголовок: Andrey пишет Да, так..


Andrey пишет
 цитата:
Да, так заработало !


Если бы ты вставил команду
 
:lNoHScroll := .F. // добавить\вкл. ползунок горизонтальный
? procname(), :nColCount()
?
:lMoreFields := ( :nColCount() > 45 )

то по результату все увидел бы сам
MYSET2TSB 44

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




Пост N: 3204
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.05.20 22:13. Заголовок: Andrey пишет И как т..


Andrey пишет
 цитата:
И как теперь быть ?


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

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




Пост N: 6673
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.05.20 22:16. Заголовок: SergKis пишет: Пере..


SergKis пишет:

 цитата:
Переделать на


Понял...

Спасибо: 0 
Профиль
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 иногда нужно, допустим когда нельзя править структуры базы.
Можно создавать свое поле в базе, но иногда этого делать нельзя, допустим при работе с чужой базой.
Если это сложно сделать, то вопрос можно пропустить.

Спасибо: 0 
Профиль
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 есть переменные в своих местах



Спасибо: 0 
Профиль
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 ()

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




Пост N: 6688
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.05.20 18:54. Заголовок: SergKis пишет: то н..


SergKis пишет:

 цитата:
то надо добавлять в массив в каком то порядке и присваивать в _DefineTBrowse ()


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


Спасибо: 0 
Профиль
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
...

Проверил, работает

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




Пост N: 6689
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.05.20 20:04. Заголовок: SergKis пишет: Ты,..


SergKis пишет:

 цитата:
Ты, наверно, путаешь SpecHeader (ENUMERATOR) и SuperHeader - это две разницы


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

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




Пост N: 6690
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.05.20 20:57. Заголовок: SergKis пишет: Пров..


SergKis пишет:

 цитата:
Проверил, работает


Да я тоже проверил.
Так лучше !

Но тогда напрашивается вопрос размещения 5 фонта.
      aFont  := { "TsbNorm", "TsbBold", "TsbBold", "TsbSpecH", "TsbSuperH" } 

Можно ли это реализовать ?

Спасибо: 0 
Профиль
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, ...)

Спасибо: 0 
Профиль
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 := ???????

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