Форум » GUI » TSBROWSE - "цепляется" последняя строка » Ответить

TSBROWSE - "цепляется" последняя строка

Dr. Oldwarez: Обьясните пожалуйста, почему при прокрутке TSBROWSE последняя строка часто не обновляется, а зависает, и её значение остаётся неизменным при прокрутке. В зависимости от установленного числа пикселей высоты, эта строка может быть в половину и в четверть нормальной высоты.

Ответов - 69, стр: 1 2 3 4 All

gfilatov2002: Dr. Oldwarez пишет: почему при прокрутке TSBROWSE последняя строка часто не обновляется Да, есть такая бяка Известно даже, как ее победить: надо добавить несколько вызовов Refresh(.T.) в методы, влияющие на прокрутку Но после таких поправок оригинального кода резко увеличится мигание экрана и замедлится скорость прокрутки, что весьма критично при работе в сети. Поэтому предлагается делать небольшую настройку (тюнинг ) высоты ячеек для устранения этого неприятного эффекта. Для демонстрации этой техники посмотрите/изучите/используйте (нужное подчеркнуть) пример ниже: [pre]#include 'minigui.ch' #include "TSBrowse.ch" procedure main dbcreate('test',{{'nazwa','C',30,0},; {'ilosc','N',12,2},; {'cena','N',14,2}}) dbusearea(.t.,,'test') for i := 1 to 100 test->(dbappend()) test->nazwa := str(i) test->ilosc := test->(recno()) test->cena := (test->ilosc * HB_Random(100)) next test->(dbgotop()) DEFINE WINDOW o_dlu AT 0,0 WIDTH 600 HEIGHT 400; TITLE ' test' MAIN ICON "MAIN" ; FONT 'ARIAL' SIZE 12 @ 50,500 SPINNER Sp RANGE 0,100 value 26 WIDTH 60 ON CHANGE (br_zaw:nHeightHead := o_dlu.sp.value,br_zaw:reset()) ON KEY ESCAPE OF o_dlu ACTION o_dlu.RELEASE DEFINE TBROWSE Br_zaw AT 15, 10 OF o_dlu ALIAS "test" WIDTH 450 HEIGHT 330 br_zaw:SetColor( { 2 }, { { | | IIf( test->(OrdKeyNo()) % 2 = 0,Rgb(255,255,255),rgb(230, 230, 230) ) }}) ADD COLUMN TO br_zaw DATA {|| test->nazwa } ALIGN DT_LEFT, DT_CENTER, DT_CENTER TITLE 'Nazwa' SIZE 150 FOOTER 'Pozycji '+LTrim( str(test->(lastrec())) ) ADD COLUMN TO br_zaw DATA {|| test->ilosc } ALIGN DT_RIGHT, DT_CENTER,DT_CENTER TITLE 'Ilosc' SIZE 100 ADD COLUMN TO br_zaw DATA {|| test->cena } ALIGN DT_RIGHT, DT_CENTER, DT_CENTER TITLE 'Cena' SIZE 100 br_zaw:nHeightCell += 6 br_zaw:nHeightFoot += 4 br_zaw:nHeightHead += 10 br_zaw:nWheelLines := 1 br_zaw:reset() br_zaw:setfocus() br_zaw:DrawSelect() br_zaw:Gotop() END TBROWSE END WINDOW o_dlu.br_zaw.setfocus ACTIVATE WINDOW o_dlu return[/pre]

Dr. Oldwarez: Большое вам спасибо

gfilatov2002: Dr. Oldwarez пишет: почему при прокрутке TSBROWSE последняя строка часто не обновляется, а зависает Удалось корректно устранить эту проблему с помощью польских пользователей библиотеки Скоро ждите новую сборку с включенными исправлениями


Dr. Oldwarez: Я уже поставил новую версию и тестирую её в своих программах. В большинстве случаев TBROWSE работают нормально. Но если установлен DESCENDING (сортировка по убывающей), то при прокрутке TBROWSE вообще зависает программа. Подскажите, пожалуйста, что делать в этом случае.

Dima: Не знаю что правили польские юзеры но проблема осталась. Начальный вход в бровс , внизу живет половина строки с номером 34 , переход на нее не возможен. Стоит переключится на любое другое окно в винде и потом снова вернутся в свою прогу от 34 строки и следа не осталось (так и должно быть). Пробовал Refresh , не помог. Так же то что советовал Григорий - результат ноль. Скрины

SergKis: Dima я себе соорудил такую бяку:[pre2] FUNCTION sTBrwHeight( oBrw ) // уст. реальный размер TBrowse LOCAL nHeightCell := oBrw:nHeightCell LOCAL nHeightHead := oBrw:nHeightHead LOCAL nHeightFoot := oBrw:nHeightFoot LOCAL nHeightSpecHd := oBrw:nHeightSpecHd LOCAL nHeightSuper := oBrw:nHeightSuper LOCAL nLineStyle := oBrw:nLineStyle LOCAL nRowHeight := oBrw:nRowCount() * nHeightCell nHeight := nHeightSuper + ; nHeightHead + ; nHeightSpecHd + ; nRowHeight + ; nHeightFoot + 1 IF GetwindowHeight(oBrw:hWnd) > nHeight SetProperty(oBrw:cParentWnd, oBrw:cControlName, 'Height', nHeight) ENDIF RETURN nHeight [/pre2] может что то и не учел.

Dima: Спасибо Сергей , попробую ! PS Вроде решил так По ходу если в конце выдать Obrw:Paint() то все нормально и лишней строки нет.

Dima: А как лечить к примеру oBrw:gopos(2,5) , вызов идет сразу после того как бровс появился на экране. В 5-ю колонку я попал а вот строка осталась первой.

SergKis: Dima пишет:А как лечить к примеру oBrw:gopos(2,5) , вызов идет сразу после того как бровс появился на экране. oBrw:Gotop() oBrw:GoPos(2,5)

Dima: Нет не катит. Попал туда если перенести oBrw:GoPos(2,5) и вставить после END WINDOW , перед активацией окна. А этого делать не хотелось бы.

SergKis: а в On init ? часто же надо позиционировать по ранее запомненному месту при входе в просмотр

SergKis: Dima пишет:вставить после END WINDOW , перед активацией окна. А этого делать не хотелось бы. sTBrwHeight( oBrw ) тоже перед активацией надо ставить (уберет половинчатую строку) для каждого TsBrowse окна

Dima: Да это понятно все Сергей. Не понятно почему при gopos(2,5) попадаю в нужную колонку все таки а вот в строку нет. Я бы еще понял если бы gopos(2,5) совсем не сработал а тут какая то половинчатая реакция у него. SergKis пишет: а в On init ? Предлагаешь бровс описывать в ON INIT окна ? Я делаю внутри описания окна пока что. Полагал что это без разницы. А она есть ?

SergKis: Dima пишет:Предлагаешь бровс описывать в ON INIT окна ? Я делаю внутри описания окна пока что. Я тоже мах в окне (често on init не люблю - уже окно в нем нарисовано и если что перерисовать надо - может моргать) многое переношу после end window до activate (modal окна). Например расчитать окончательные размеры связанных контролов, самого окна от размеров контролов, позиционирование по таблицам, запомненное ранее или заданное как scope снаружи окна (загрузка массивов, связанная с данными на входе окна), ... Т.е. я часто разрушаю окна, а не перевожу в hide, но запоминаю где был на окне и просто потом создаю такое же окно с предыдущим позиционированием.

Dima: Понял !

SergKis: Dima пишет: у меня так:[pre2] ... ADD COLUMN TO oBrw5 DATA {|| iif(KOPER > 0, aOper[KOPER], hb_ntos(KOPER)) } ; TITLE aHdr[ i ] ; FOOTER aFot[ i ] ; COMBOBOX ; EDITABLE ; LOOK3D .F., .F., .F. oBrw5:aColumns[ i ]:Cargo := { aFld[ i ], nAls, { aOper, aKod } } oBrw5:SetData ( i, NIL, { aOper, aKod } ) oBrw5:aColumns[ i ]:bEditing := { |uVar,oBrw| oBrw:aColumns[oBrw:nCell]:oEdit:LButtonDown() } oBrw5:aColumns[ i ]:bEditEnd := { |uVal,oBrw,lSave| lSave := lSave .and. RLock(), ; iif(lSave, FieldPut(FieldPos('KOPER'), uVal+1), NIL), ; iif(lSave, dbUnLock(), NIL) } HdrClick(0) // oBrw5:bUserKeys := {|nK,nF,oB| UserKeyDown(nK, nF, oB) } oBrw5:lCellBrw := .T. oBrw5:lEditable := .T. oBrw5:lNoHScroll := .T. oBrw5:lNoMoveCols := .T. oBrw5:lNoLiteBar := .F. oBrw5:lNoResetPos := .F. oBrw5:nFreeze := 1 oBrw5:aColumns[ 1 ]:lEdit := .F. // LACC not Edit oBrw5:aColumns[ 4 ]:lEdit := .F. // адрес not Edit oBrw5:GoPos(2, 3) [/pre2] до end window и попадаю как надо

Dima: SergKis пишет: oBrw5:GoPos(2, 3) до end window и попадаю как надо Чудеса да и только .....а я не попал ;) Буду разбираться чего ему надо.

Dima: Кстати попал вот так ;) oBrwM:Display() oBrwM:gopos(3,5)

SergKis: Dima пишет:Кстати попал вот так у меня END WINDOW oBrw5:nHeightHead := 25 // высота строки заоловка oBrw5:nHeightFoot := 25 // высота строки подвала oBrw5:aColumns[ 3 ]:cFooting := "Итог 3 " // установить значение подвала колонки 3 // oBrw5:Display() попробовал разкоментировал - одинаково ставит правильно oBrw5:goto(2,3)

Dima: а вот еще "странный" вопрос ;) если oBrwM:lNoHScroll := TRUE вот в таком положении то выравнивание через nAdjColumn не работает. как можно избавится от горизонтального скрола и при этом не сломать выравнивание ? SergKis пишет: попробовал разкоментировал - одинаково ставит правильно oBrw5:goto(2,3) Сергей это я делал до END WINDOW , работает. Хотя я мысль понял что по уму делать надо конечно же после END WINDOW

Dima: SergKis Собственно я пока играюсь что бы понять как и что Конструкция примерно такая [pre2] Func NEW_Magaz(nmag,cTitle) DEFINE WINDOW MAGAZIN.......... if nmag==1 Magaz_po("MAGAZIN") // а тут в этой функции дефайню бровс который живет в окне MAGAZIN // и как бы не хотелось находясь в функции NEW_Magaz дергать сам бровс //после END WINDOW и все хотел сделать в Magaz_po() endif END WINDOW DoMethod("MAGAZIN","Activate") Return nil [/pre2]

SergKis: Попробуй через метод resize перед action nSizeType := 0 nWidth := Form_1.oBrw5.Width nHeight := Form_1.oBrw5.Height oBrw:ReSize( nSizeType, nWidth, nHeight ) в нем пересчет идет с учетом nAdjColumn

Dima: SergKis пишет: Попробуй через метод resize перед action Сработало но как то "криво".......ладно бог с ним гориз.скролом , пусть живет ;)

SergKis: Dima пишет:Конструкция примерно такая Строю примерно так: Function Wnd_Child_Kassa(...) или Wnd_Modal_Kassa(...) Before_Wnd() // действия перед окном подчитываем что надо для работы Create_Wnd(...) // DEFINE WINDOW ... IF lErr MsgStop("Чего то не сраслось", "ERROR") ELSE Create_Menu() // созд.меню Create_TBar()// созд.toolbar Create_SBar() // statusbar Create_Brw1() Create_Brw2() или для окна ввода данных Create_Lbl_Get() ENDIF After_Create_Wnd() Show() After_Wnd() RETURN Static function Before_Wnd() ... Static function Create_Wnd() ... Static function Create_Menu() ... Static function Create_TBar() ... Static function Create_SBar() ... Static function Create_Brw1() ... Static function Create_Brw2() ... Static function Create_Lbl_Get() ... Static function After_Create_Wnd() END WINDOW действия перед ACTIVATE ... Static function Show() ACTIVATE ... ... Static function After_Wnd() ...

Dima: SergKis Понял. Сенкс !

Dima: До кучи так сказать. Это я исключительно про TSBrowse. Как в обычном не знаю , да и не нужно пока. Вот такое присвоение делать не следует если использовать nAdjColumn oBrw:aColumns[ 1 ]:nWidth:=470 Правильно вот так oBrw:SetColSize( 1, 470 )

SergKis: Dima пишет: делать не следует если использовать nAdjColumn я делал без nAdjColumn (и горизонт. scroll) так (TsBrowse) w := oBrw5:GetAllColsWidth() Form_1.Width := w+GetVScrollBarWidth()+GetBorderWidth()+10 // 10 - отступ справа, слева такой тоже есть Form_1.oBrw5.Width := w

Dima: SergKis пишет: w := oBrw5:GetAllColsWidth() Так тоже не совсем правильно , так как учтены будут все колонки в том числе скрытые и ширина установится не правильно. SergKis пишет: я делал без nAdjColumn что бы делать с ним корректно надо чуть поправить сырец h_tbrowse.prg в METHOD TSBrowse:ReSize()

SergKis: Dima Ты прав, я же у себя окно притягиваю к tsbrowse (колонки все на окне), но где то видел как получить только видимые колонки

Dima: SergKis Это правка сырца [pre2] AEval( ::aColumns, {|n| IF( n:lVisible, nTotPix += n:nWidth, nil ) } ) Copyright Has [/pre2]

SergKis: Dima пишет:Это правка сырца а она решает проблемку при oBrw5:lNoHScrol := .T.

Dima: SergKis пишет: а она решает проблемку при oBrw5:lNoHScrol := .T. Нет. Это решает проблему корректного выравнивания. Это установка у меня живет в коменте // oBrw5:lNoHScrol := .T.

SergKis: т.е. :Resize(...) Сработало но как то "криво".......ладно бог с ним гориз.скролом , пусть живет

Dima: SergKis пишет: т.е. :Resize(...) Да

SergKis: Dima Спасибо

Dima: Сергей полный текст правки [pre2] // AEval( ::aColSizes, {|n| nTotPix += n } ) // это было AEval( ::aColumns, {|n| IF( n:lVisible, nTotPix += n:nWidth, nil ) } ) // добавлено do events // добавлено , удивительно но в ряде случаев без этого не работает [/pre2]

SergKis: Dima пишет:Сергей полный текст правки Спасибо. Загнал к себе. Правда TsBrowse отложил пока. Вроде пару недель прошло, а отключился от него сильно, да еще жара 31 ...

Dima: Да в жару сложно думать и работать. Включи кондей ! ЗЫ У нас дождик , прохладно....красота. В этом году кондей еще не включал ;)

SergKis: Dima Включил, но еще первый раз в этом году (еще 2-а дня назад было прохладно). Но пока со второго этажа дойдет ... (я на огороде) Наверно надо перенести посты по общим вопр. TsBrowse (крайние) в тему TsBrowse. А то плавно засорили эту темеу др. вопросами, ну флуд удали, если возможно

Dima: Кому надо тот найдет. Тем более тут в названии фигурирует TSBROWSE. Поиск по TSBROWSE покажет и эту тему. А не много флуда это нормально ;)

Dima: Кто то плотно еще работает с Tsbrowse ? Хочется этот отличный но слегка кривоватый в некоторых моментах инструмент довести до "совершенства" По ходу кое чего еще исправили с Has , в частности курсор более не моргает при достижении верхней и нижней видимых границ бровса. Но вот глюк с прорисовкой лишней строки в бровсе не очень ясен , скрины в этой теме , пост 5026. Понятно что он лечится с помощью метода Paint или Display. Но это не наш метод ;) Где еще эта бяка вылезет не понятно. Хочется понять где рисуется и почему эта лишняя строка. nRowCount() четко показал 33 строки , тем не менее при первом вызове наблюдается фантомная строка 34. На которую попасть нельзя. Спинной мозК подсказывает что глюк в каком то методе...........

SergKis: Dima Модифицировал свою бяку из поста 698, с учетом HScroll: [pre2] FUNCTION sTBrwHeight( oBrw ) // уст. реальный размер TBrowse LOCAL nHeightCell := oBrw:nHeightCell LOCAL nHeightHead := oBrw:nHeightHead LOCAL nHeightFoot := oBrw:nHeightFoot LOCAL nHeightSpecHd := oBrw:nHeightSpecHd LOCAL nHeightSuper := oBrw:nHeightSuper LOCAL nLineStyle := oBrw:nLineStyle LOCAL nRowHeight := oBrw:nRowCount() * nHeightCell LOCAL nBrwH := GetwindowHeight(oBrw:hWnd) LOCAL nDelta nHeight := nHeightSuper + ; nHeightHead + ; nHeightSpecHd + ; nRowHeight + ; nHeightFoot + 1 IF ! oBrw:lNoHScroll nDelta := nBrwH - nHeight IF nDelta > 0 .and. nHeightCell > nDelta nHeight += nHeightCell - nDelta - 2 ENDIF ENDIF SetProperty(oBrw:cParentWnd, oBrw:cControlName, 'Height', nHeight) RETURN nHeight [/pre2] Использовать до END WINDOW или перед ACTIVATE WINDOW sTBrwHeight(oBrw5, 'Form_1')

Dima: SergKis пишет: Модифицировал свою бяку из поста 698, с учетом HScroll: Проверил. Получил в nRowCount() 32 строки , на экране вижу 33 , 33-ая фантом и не перейти на нее. Повторить то что у меня получилось будет сложно , так как разные разрешения у нас. И да , высота гор скрола 17 вроде. До кучи , даже если мы установим некую правильную высоту то все сойдет на НЕТ при вызове метода PAINT , DISPLAY в одном из методов. Все перейдет на круги своя.

SergKis: Dima пишет:Получил в nRowCount() 32 строки , на экране вижу 33 , 33-ая фантом и не перейти на нее. Повторить то что у меня получилось будет сложно , так как разные разрешения у нас. Не очень понял, проверил на 11' и 15' - все нормально и HScroll и без него. Без бяки (с HScroll) есть 32 фантомная строка, с бякой она дотягивается до полноценной.

SergKis: Dima пишет:До кучи , даже если мы установим некую правильную высоту то все сойдет на НЕТ при вызове метода PAINT , DISPLAY в одном из методов. Все перейдет на круги своя. Возмо у тебя что то сложное. У меня узкое окно, широкий TBrowse (HScroll), коректировка в строке (на части колонок), реакция на click в header и footer с Refresh(.T.) - и не сбивается выравненная (фантомная) строка

Dima: Сергей попробуй после sTBrwHeight( oBrw ) сделать сразу obrw:display() и ты увидишь что от заданной высоты установленной в sTBrwHeight ни чего не осталось и все пересчиталось.

SergKis: Дима, у меня так: sTBrwHeight(oBrw5) oBrw5:Refresh(.F.) // oBrw5:Display() oBrw5:GoPos(5,2) CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Все ok!и разницы с Display или Refresh нет, но по мне refresh больше нравиться

Dima: Странно. Работает значит по разному. Можно пойти другим путем ...я было начал но не закончил тесты. Вычисляем высоту "дырки" в низу бровса , то что он не использовал. [pre2] Func GetHole() local WorkHeight := oBrw:nHeight-oBrw:nHeightHead-oBrw:nHeightSuper-; oBrw:nHeightFoot-oBrw:nHeightSpecHd-if(!oBrw:lNoHScroll,16,0) RETURN WorkHeight-Int(WorkHeight/oBrw:nHeightCell)*oBrw:nHeightCell [/pre2] И затем значение что вернется добавляем к высоте хидера или суперхилера.

SergKis: Dima пишет:И затем значение что вернется добавляем к высоте хидера или суперхилера. Бяка практически это и делает, меняя размер бровсе, можно достричь до хидера, суперхидера. IF oBrw:nHeightSuper > 0 oBrw:nHeightSuper += nDelta ELSE oBrw:nHeightHead += nDelta ENDIF

Dima: Фуф...... Сергей нужно обмениваться примерами , что бы понять что не так. Я менял сырец бровса в методах GoUP и GoDown а так же TSBRWSCROLL из c_TBrowse.c , но это все ради того что бы курсор не мигал при достижении границ и тут дело не в этом. Чуть позже выложу сырец примера и EXE. Не против ? PS Пример самодостаточный , если что и можно его собрать. Но мой EXE все же пощупай и ощути разницу поведения курсора на текущей строке если нажимая стрелку вниз достиг последней строки видимой на экране , тож самое и верхней касается. У тебя будет мерцать ( блымать и тд курсор) а в EXE моем нет.

Dima: SergKis https://cloud.mail.ru/public/HtfA/HnzaTizqW

SergKis: Dima пишет: EXE все же пощупай и ощути разницу поведения курсора на текущей строке если нажимая стрелку вниз достиг последней строки видимой на экране , тож самое и верхней касается. У тебя будет мерцать ( блымать и тд курсор) а в EXE моем нет. Согласен, смотрится лучше.

Dima: И что , у тебя нет фантомной строки если запустить мой EXE ? У меня есть...34-я А если пересобрать пример (ни чего не меняя) тоже нет ?

SergKis: Дима, дырка 5, строк 26, со сборкой и без одинаково. Пробовал только на 11' на 15' позже гляну.

Dima: То есть фантома нет , да ? СтрЯнно........ У меня так Разрешение экрана у меня 1440 x 900

SergKis: Dima пишет:То есть фантома нет Совсем нет, все достойно, только с моей сборкой помаргивает курсор и усе.

Dima: Понял, косяк где то.......... Или в методе NEW или DEFAULT

SergKis: Дима, косяк получил, при MAGAZIN.oBrw.Height := MAGAZIN.oBrw.Height - 12 т.е. дырка 15, строк 25, а в показу +0.5 от 26

SergKis: Дима, на первый взгляд, кажется лечится PRIV nGetHole .... END WINDOW MAGAZIN.oBrw.Height -= nGetHole [pre2]Func GetHole() local WorkHeight := oBrw:nHeight-oBrw:nHeightHead-oBrw:nHeightSuper-; oBrw:nHeightFoot-oBrw:nHeightSpecHd-if(!oBrw:lNoHScroll,16,0) LOCAL nHole := WorkHeight-Int(WorkHeight/oBrw:nHeightCell)*oBrw:nHeightCell nGetHole := nHole RETURN nHole [/pre2] в. показе 26 и фанома нет, но такое чувство, что есть 27 строка и сделав pgdn - попадаем на 27 (а должны были на 26, 1-ая сверху)

Andrey: Я немного модифицировал пример, поставил показ разрешения экрана и проверку на LargeFonts(), получилось так: Разрешение: 1920х1080 Ширину колонок надо бы делать так (сразу под разные разрешения экрана): oBrw:aColumns[ 4 ]:cHeading :="накладной" nTxtWidth := GetTxtWidth( "1накладной1", nFontSize, cFont) oBrw:SetColSize( 4, nTxtWidth ) Определение nFontSize, cFont - задать выше. Функцию GetTxtWidth() дал SergKis, можно взять из http://clipper.borda.ru/?1-1-0-00000454-000-60-0 Пост N: 4373

SergKis: Андрей, это понятно, мы боремся с фантомной (заполненной) строкой. В твоем мод. примере она тоже просматривается, если бы она (фантомная строка) была пуста - это, по мне, было бы нормой. Получается тбровсе говорит (у меня) о 26 строках, а прорисовывает 27 и листает из расчета 27

Haz: SergKis пишет: мы боремся с фантомной (заполненной) строкой Сергей , мне кажется этот фантом - результат разбалансировки высот заданных при инициализации и высот получаемых при первой пририсовке Высоты шапки подвала и строк корректируются при END TSBROSE вызовом SetHeights( Self ) и число строк расчитывается из этих условий скорее всего и формируется значение nRowCount() при первой прорисовке бровса, Затем назначая заголовки футинги и хидеры , или прямо меняя высоту строки через :nHeighCell := вызова SetHeights( Self ) не производится В этом и есть моя догадка ( не проверял ), а при вызове ::Display() или ::Paint() - опять вызов SetHeights( Self ) и все встает в норму. PS позже поковыряю, пока не могу, на работе плотно буду занят

SergKis: Haz пишет:В этом и есть моя догадка ( не проверял ), а при вызове ::Display() или ::Paint() в самую точку MAGAZIN.oBrw.Height -= 12 // nGetHole oBrw:Paint() // Display() решают проблему прорисовки (Refresh нет), а с листанием, может мой глюк, новый лист от nRowCount+1 в TsBrowse

Dima: SergKis пишет: oBrw:Paint() // Display() решают проблему прорисовки (Refresh нет) Да я про это ранее писал что решает )) Хотелось понять "кто" рисует фантомную (заполненную) строку.

SergKis: Dima пишет:Да я про это ранее писал что решает )) В моем примере (не твой модифицированный) с реальным скролингом, фантомная строка есть, но она пустая, а тут HScroll есть, а скролинга нет происходит накладка и ты писал, когда я со своим возился, ну и сам понимаешь склероз догнал Haz разложил по полочкам

Dima: SergKis пишет: ну и сам понимаешь склероз догнал аналогично + Остеохондроз

Haz: Dima пишет: Да я про это ранее писал что решает На основе твоих записей догадка и появилась Dima пишет: Хотелось понять "кто" Скорее всего это END TSBROWSE Видимо пересчет высот надо делать после любого изменения высоты строк или значений заглловков и футингов. Может потребуется все назначения делать через новые методы типа ::SetHeightCell () и пр. которые должны вызавать этот пересчет

Dima: Haz Следующее поколение ("Клинского , Пепси и 1С") читая этот форум ни черта не поймет о чём мы это тут трём

Andrey: Dima пишет: Следующее поколение ("Клинского , Пепси и 1С") читая этот форум ни черта не поймет о чём мы это тут трём Это поколение просто отрицает само существование всех xBase языков... Им подавай только те языки , которые в топе всяких опросов и рекомендаций всяких центров...



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