Форум » GUI » TsBrowse и мемо поле » Ответить

TsBrowse и мемо поле

Andrey: Столкнулся тут с загадкой... Одна программа с ТСБ показывает разные таблицы, т.е разное кол-во строк на экране. Только у одного заказчика показывает 9 строк, во всех остальных 15 строк. В ТСБ показываю всего несколько столбцов, мемо-поля в показ НИКОГДА не ставлю, показ полей через свою функцию. И всё равно разное поведение ТСБ. Пока Сергей не просветил меня в чём дело. ТСБ сам высчитывает размер nHeight и пофиг ТСБ что программист это сам указывает. А ты сиди и думай почему так ? [pre2]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 [/pre2] Меня это НЕ УСТРАИВАЕТ ! Да и другие могут с этим столкнутся потом. И вообще почему сам ТСБ решает какую высоту показывать ? Предложение такое - можно ли добавить в ТСБ переключатель для игнорирования таких случаев ? Типа такого - oBrw:lOnlyOneLineTsb // только одна строка показа в ТСБ Или по другому назвать можно.

Ответов - 3

Andrey: Блин, уже всё придумано... Ничего делать не надо. Указать так и всё работает. [pre2] 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() } [/pre2]

SergKis: Andrey пишет ТСБ сам высчитывает размер nHeight и пофиг ТСБ что программист это сам указывает. Ты бы показал место, где сам указываешь, то что я видел Это [pre2] 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. // показ горизонтального скролинга [/pre2] т.е. ты берешь, что тебе посчитал :LoadFields() и добавляешь oBrw:nHeightCell += 10 Кто тебе мешает поставить oBrw:nHeightCell := 32 ?

Andrey: SergKis пишет: т.е. ты берешь, что тебе посчитал :LoadFields() и добавляешь oBrw:nHeightCell += 10 Кто тебе мешает поставить oBrw:nHeightCell := 32 ? Так я исходил из одной строки ТСБ. Кто же знал что добавиться еще дополнительная строка из мемо-поля. Я понимаю что сам неправильно написал, но я это делал так еще в 2014-15 году, беря то что в примерах было. А сейчас просто упустил этот момент. Так бывает... Спасибо БОЛЬШОЕ тебе за помощь !




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