On-line: Andrey, гостей 2. Всего: 3 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 7018
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.08.21 12:42. Заголовок: TsBrowse и мемо поле


Столкнулся тут с загадкой...
Одна программа с ТСБ показывает разные таблицы, т.е разное кол-во строк на экране.
Только у одного заказчика показывает 9 строк, во всех остальных 15 строк.
В ТСБ показываю всего несколько столбцов, мемо-поля в показ НИКОГДА не ставлю, показ полей через свою функцию.
И всё равно разное поведение ТСБ.
Пока Сергей не просветил меня в чём дело.
ТСБ сам высчитывает размер nHeight и пофиг ТСБ что программист это сам указывает.
А ты сиди и думай почему так ?

STATIC FUNCTION SetHeights( oBrw ) 
она считает высоты
...
nHHeight := oBrw:nHeightCell

FOR nEle := 1 TO Len( oBrw:aColumns )
....
IF ValType( cHeading ) == "C" .AND. At( Chr( 13 ), cHeading ) > 0 .OR. ;
ValType( cHeading ) == "M" .OR. oColumn:cDataType != NIL .AND. oColumn:cDataType == "M"

IF Empty( oBrw:nMemoHV )
IF At( Chr( 13 ), cHeading ) > 0
oBrw:nMemoHV := Len( hb_ATokens( cHeading, Chr( 13 ) ) )
ENDIF
ENDIF
DEFAULT oBrw:nMemoHV := 2
nHeight := SBGetHeight( oBrw:hWnd, hFont, 0 )
nHeight *= oBrw:nMemoHV
nHeight += iif( oBrw:nLineStyle != 0 .AND. oBrw:nLineStyle != 2, 1, 0 )
ELSE
nHeight := SBGetHeight( oBrw:hWnd, hFont, 0 )
nHeight += iif( oBrw:nLineStyle != 0 .AND. oBrw:nLineStyle != 2, 1, 0 )
ENDIF

Меня это НЕ УСТРАИВАЕТ ! Да и другие могут с этим столкнутся потом.
И вообще почему сам ТСБ решает какую высоту показывать ?
Предложение такое - можно ли добавить в ТСБ переключатель для игнорирования таких случаев ?
Типа такого - oBrw:lOnlyOneLineTsb // только одна строка показа в ТСБ
Или по другому назвать можно.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]


постоянный участник




Пост N: 7019
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.08.21 13:00. Заголовок: Блин, уже всё придум..


Блин, уже всё придумано... Ничего делать не надо.
Указать так и всё работает.

         DEFINE TBROWSE oBrw AT nY,nX WIDTH nW HEIGHT nH CELL              ; 
FONT aTsbFont ;
ON CHANGE {|ob| on_Got_Change(ob) } ;
ON GOTFOCUS {|ob| on_Got_Change(ob) } ;
BACKCOLOR aBackColor ;
ON INIT {|ob| ;
ob:nColOrder := 0 ,; // убрать значок сортировки по полю
ob:lNoChangeOrd := .T.,; // убрать сортировку по полю
ob:nWheelLines := 1 ,; // прокрутка колесом мыши с шагом ...
ob:lNoGrayBar := .F.,; // показывать неактивный курсор в таблице
ob:lNoLiteBar := .F.,; // при переключении фокуса на другое окно не убирать "легкий" Bar
ob:lNoResetPos := .F.,; // предотвращает сброс позиции записи на gotfocus
ob:lNoPopUp := .T.,; // избегает всплывающее меню при щелчке правой кнопкой мыши по заголовку столбца
ob:nStatusItem := 0 ,; // в 1-й Item StatusBar не выводить автоматом из тсб
ob:lPickerMode := .F.,; // формат даты нормальный
ob:nMemoHV := 1 ,; // показ одной строки мемо-поля
ob:nCellMarginLR := 1 ; // отступ от линии ячейки при прижатии влево, вправо на кол-во пробелов
} // !!! только эти установки в ON INIT !!!

CreateBrowse() // создать таблицу: поля, и т.д.

END TBROWSE ON END {|ob| ob:SetNoHoles(), ob:SetFocus(), ob:Refresh() }


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




Пост N: 3831
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.08.21 13:03. Заголовок: Andrey пишет ТСБ сам..


Andrey пишет
 цитата:
ТСБ сам высчитывает размер nHeight и пофиг ТСБ что программист это сам указывает.


Ты бы показал место, где сам указываешь, то что я видел Это
 
oBrw:nLineStyle := LINES_ALL // LINES_NONE LINES_ALL LINES_VERT LINES_HORZ LINES_3D LINES_DOTTED
// стиль линий в таблице
oBrw:nHeightCell += 10 // расчёт высоты строки
oBrw:nHeightFoot := oBrw:nHeightCell //!!! высота строки подвала

oBrw:nHeightSuper := 0 //IIF(LargeFonts(),48,34) // высота заголовка ( спецхидер )
oBrw:nHeightHead += 8 // к высоте строки заголовка по умолчпанию добавить пиксела
oBrw:lNoHScroll := .F. // показ горизонтального скролинга

т.е. ты берешь, что тебе посчитал :LoadFields() и добавляешь oBrw:nHeightCell += 10
Кто тебе мешает поставить oBrw:nHeightCell := 32 ?

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




Пост N: 7020
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.08.21 13:11. Заголовок: SergKis пишет: т.е...


SergKis пишет:

 цитата:
т.е. ты берешь, что тебе посчитал :LoadFields() и добавляешь oBrw:nHeightCell += 10
Кто тебе мешает поставить oBrw:nHeightCell := 32 ?


Так я исходил из одной строки ТСБ.
Кто же знал что добавиться еще дополнительная строка из мемо-поля.
Я понимаю что сам неправильно написал, но я это делал так еще в 2014-15 году, беря то что в примерах было.
А сейчас просто упустил этот момент. Так бывает...
Спасибо БОЛЬШОЕ тебе за помощь !

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

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