Форум » GUI » TsBrowse в Минигуи (продолжение) » Ответить

TsBrowse в Минигуи (продолжение)

Vlad04: TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру [quote] 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 [/quote] Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Dima: Andrey Сделай проще ))) Напиши , идет загрузка данных в лейбе индикатора а уж после загрузки покажи бровс. Не то ?

Andrey: Dima пишет: Напиши , идет загрузка данных в лейбе индикатора а уж после загрузки покажи бровс. Не то ? То что надо. А как сделать то ? Я сейчас на медленном коннекте вижу как прорисовывается вся таблица.

SergKis: Andrey пишет:Я сейчас на медленном коннекте вижу как прорисовывается вся таблица. Все верно, tbrows ходит (skip-ует) по базе, время обновления skip-буф. мало, он снова заполняется и получаешь то, что видишь То что надо. А как сделать то ? Твой же пример WAIT_WINDOW с потоком и без, сделай аналогично, повесь анимацию, отбери в массив или memio и показывай.


Andrey: Помогите разобраться с глюком мышки. Пример MiniGUI\SAMPLES\Advanced\Tsb_config На самом Tsbrowse нажимаем правую кнопку мышки и выбираем "Enable display of deleted records" Клавиша PgDown до последней странице - нумерация строк (1-я колонка) в Tsbrowse - нормальная. Если крутить колёсиком мышки - нумерация строк (1-я колонка) неправильная. Как исправить ?

Andrey: Собрал в новой версии MiniGUI 2.5.1 - глюк тоже есть ! Вот так выглядит на экране: Если листать клавишей PageDown - то глюка нет ! Помогите пожалуйста исправить, юзера будут просто ВОПИТЬ - куда делись договора...

Haz: Andrey пишет: Если листать клавишей PageDown - то глюка нет Это не глюк , минигуй тут не причем. Это ошибки алгоритма заложенного в пример. Меняй алгоритм и не переназначай внутренние переменные бровса если не уверен в том как это работает. Нет времени заниматься поиском косяков в чужом коде , вот куски кода которые корректно работают [pre2] SET DELETED OFF .... INDEX ON Number TAG "ALL" INDEX ON Number TAG "DEL" FOR ( !Deleted() ) .... oBrw:bChange := { || oBrwChange() } .... STATIC FUNCTION oBrwChange() LOCAL cVal := HB_NToS( (oBrw:cAlias)->(OrdKeyNo()) ) + ' / ' + HB_NToS( (oBrw:cAlias)->(OrdKeyCount()) ) Form_0.StatusBar.Item(3) := " RecnO: " + cVal Form_0.oBrw.Setfocus RETURN Nil .... FUNCTION RecnoViewDel(lVal) LOCAL cMsg IF lVal (oBrw:cAlias)->(DbSetOrder("ALL")) cMsg := "Included a display of deleted records !" ELSE (oBrw:cAlias)->(DbSetOrder("DEL")) cMsg := "Offline mode display of deleted records !" ENDIF oBrw:Reset() MsgInfo(cMsg ) Eval( oBrw:bChange ) RETURN Nil [/pre2]

Andrey: Haz Спасибо ! Буду переделывать.... И еще заметил странность, если подёргать клавишами PageDown, PageUP а потом погонять клавишей стрелка вниз, то TsBrowse вешает программу наглухо.

Haz: Andrey пишет: TsBrowse вешает программу наглухо. Все верно, так и должно быть Перечитай эту ветку, один форумчанин примерно месяц назад. уже указывал тебе на эти грабли в твоем примере.

Andrey: Haz пишет: Перечитай эту ветку, один форумчанин примерно месяц назад. уже указывал тебе на эти грабли в твоем примере. Да пока сам на грабли еще раз не наткнёшься, ни фига не запомнишь ! Только не всегда это происходит... Пост N: 586 Haz пишет: и более того , в процедуре по ON CHANGE есть вызов Refresh() , что 100% приводит к зависаниюбровса стоит его прогнать стрелками вниз/вверх Пост N: 717 SergKis пишет: Мой (твой) пример Refresh(.F.) к зависанию не приводит, но по pgup или up ниже последней и назад - ломается веделенная закраска всей строки с фокусно ячейкой. Как то похитрее надо делать, может быть мтодом DrawLine(xRow) с цветами на пред.стоку и тек., без бутылки сразу не разберешься Так же ломается счетчик записей левой колонки. Можно туда прикрутить в саму БИБЛИОТЕКУ - чтобы это не ломалось ?

Haz: в чем проблема ? показывай в первой колонке OrdKeyNo()

Haz: Andrey пишет: Только не всегда это происходит... Это происходит ВСЕГДА если в ON CHANGE есть Refresh() и бежать по длинной базе не отрывая пальца по стрелки вниз или вверх достаточно долго. Если почитать дальше 717 714 поста то там есть и пост 587 и ответ на него 716 . Читать надо внимательнее

Haz: Andrey пишет: Так же ломается счетчик записей левой колонки. в DBFCDX нет логического нумератора строк , кроме как номер ключа при наличии индекса. в TSBrowse ::nAt - тоже не нумератор , он может и отрицательные значения принимать Поэтому как отобразить логический номер - головняк разработчика программы где используется TSBrowse PS nAt совпадает с логическим номером только при бровсе по массиву.

Andrey: Понял. Спасибо БОЛЬШОЕ ! Вопрос по ломке нумерации - это происходит ТОЛЬКО мышкой и клавишей стрелка вниз, когда находишься на последней строке в бровсе. Как то можно отловить этот момент и не давать маркеру/курсору скакнуть вниз ? Тогда и ломаться нумерация не будет. Но может я и не прав...

Dima: Andrey Что бы не флудить еще пару-тройку страниц , самодостаточный пример. Ни чего не глючит , не виснет и "ездит" как нужно Да простит меня Has [pre2] #include "minigui.ch" #include "tsbrowse.ch" MEMVAR oBrw FUNCTION Main() LOCAL cDbf := 'Test.dbf' LOCAL i := 0 REQUEST DBFCDX SET CENTURY ON SET DELETED OFF RDDSETDEFAULT('DBFCDX') if !file(cDbf) DBCreate( cDbf , {{"String", "C", 50 , 0}, {"number", "N", 5, 0} } ) USE (cDbf) Excl New Alias "TEST" FOR i := 1 TO 200 TEST->(DbAppend()) TEST->String := RandStr(50) TEST->Number := Random( 200) IF( i % 3 == 0, TEST->(DbDelete()) , NIL ) END INDEX ON Number TAG "ALL" TO ("TEST") INDEX ON Number TAG "DEL" TO ("TEST") FOR ( !Deleted() ) USE end DEFINE WINDOW Form_0 ; At 0, 0 ; WIDTH 800 ; HEIGHT 450 ; TITLE 'TsBrowse sample' ; ICON 'lupa.ico' ; MAIN ; DEFINE STATUSBAR SIZE 10 BOLD STATUSITEM "" STATUSITEM "Right mouse button - the popup menu TBROWSE" WIDTH 380 STATUSITEM " Recno: 0/0" WIDTH 200 STATUSITEM "Alias: "+ ALIAS() WIDTH 115 DATE END STATUSBAR END WINDOW USE (cDbf) Shared New Alias "TEST" INDEX ("TEST.CDX") TEST->(OrdSetFocus("DEL")) CreateBrowse( "oBrw", 'Form_0', 30, 2, Form_0.Width-20, Form_0.Height-95, 'TEST' ) AEval( oBrw:aColumns, { |oCol| oCol:lEdit := oCol:lFixLite := TRUE } ) oBrw:SetColor( { 6 }, { { |a,b,c| IF( c:nCell == b, { Rgb( 66, 255, 236 ), Rgb( 111, 183, 155 ) } , { Rgb( 220, 220, 220 ), Rgb( 220, 220, 220 ) }) } } ) // фон курсора oBrw:bChange := { || oBrwChange() } oBrw:lNoChangeOrd := .T. oBrw:SetColSize( "String", 600 ) oBrw:SetColSize( "Number", 150 ) oBrw:Display() DEFINE CONTEXT MENU CONTROL oBRW OF FORM_0 MENUITEM "Enable display of deleted records" ACTION { || RecnoViewDel(.T.) } NAME A1 MENUITEM "Disable display of deleted records" ACTION { || RecnoViewDel(.F.) } NAME A2 END MENU CENTER WINDOW Form_0 ACTIVATE WINDOW Form_0 RETURN Nil FUNCTION CreateBrowse( cBrw, cParent, nRow, nCol, nWidth, nHeight, cAlias ) LOCAL i PUBLIC &cBrw DEFINE TBROWSE &cBrw ; AT nRow, nCol ; ALIAS cAlias ; OF &cParent ; WIDTH nWidth ; HEIGHT nHeight ; COLORS { CLR_BLACK, CLR_BLUE } ; FONT "MS Sans Serif" ; SIZE 8 :SetAppendMode( .F. ) :SetDeleteMode( .F. ) :lNoHScroll := .T. :lCellBrw := .F. END TBROWSE LoadFields( cBrw, cParent ) &cBrw:nHeightCell += 6 &cBrw:nHeightHead += 14 &cBrw:nWheelLines := 1 &cBrw:SetColor( { 3 }, { RGB( 255, 255, 255 )}) &cBrw:SetColor( { 4 }, { { || { RGB( 43, 149, 168 ), RGB( 0, 54, 94 )}}}) &cBrw:SetColor( { 12 }, { { || { RGB( 128, 128, 128 ), RGB( 250, 250, 250 )}}}) &cBrw:SetColor( { 2 }, { { || IF( !(oBrw:cAlias)->(Deleted()), RGB( 230, 240, 255 ), RGB( 130, 140, 155 )) }}) &cBrw:SetColor( { 1 }, { { || IF( !(oBrw:cAlias)->(Deleted()), RGB( 0, 0, 0 ), RGB( 130, 40, 55 )) }}) &cBrw:SetColor( { 5 }, { { || RGB( 0, 0, 255 )}}) &cBrw:SetColor( { 11 }, { { || RGB( 0, 0, 0 )}}) &cBrw:nClrLine := COLOR_GRID &cBrw:ResetVScroll() RETURN Nil FUNCTION RandStr( nLen ) LOCAL cSet := "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM" LOCAL cStr := "" LOCAL i := 0 FOR i := 1 TO nLen cStr += SubStr( cSet, Random( 52 ), 1 ) NEXT RETURN cStr STATIC FUNCTION oBrwChange() LOCAL cVal := HB_NToS( (oBrw:cAlias)->(OrdKeyNo()) ) + ' / ' + HB_NToS( (oBrw:cAlias)->(OrdKeyCount()) ) Form_0.StatusBar.Item(3) := " RecnO: " + cVal Form_0.oBrw.Setfocus RETURN Nil FUNCTION RecnoViewDel(lVal) LOCAL cMsg IF lVal TEST->(DbSetOrder("ALL")) cMsg := "Included a display of deleted records !" ELSE TEST->(DbSetOrder("DEL")) cMsg := "Offline mode display of deleted records !" ENDIF oBrw:Reset() MsgInfo(cMsg ) Eval( oBrw:bChange ) RETURN Nil [/pre2] PS Пример не мой. https://www.youtube.com/watch?v=p0-TYMZ4iRE

Haz: Dima пишет: Да простит меня Has Слил военную тайну тока так Теперь все узнают что TsBrowse работает нормально

Dima: Haz пишет: Слил военную тайну тока так Чисто на благо форума (темы). Все , к стенке меня... PS Могу убрать если надо

Haz: Dima пишет: Все , к стенке меня... ))) Ага, через оформление примера для минигуя жаль для примера этого маловато. В следующий раз - по всей строгости

Dima: Haz пишет: жаль для примера этого маловато. Пример в порядке что бы исправить другой пример. PS По ходу можно назначить тебя админом что бы иногда разгребать.......ну ты понял что. Если готов скажи

Haz: Dima пишет: разгребать.......ну ты понял что.

Dima: Haz



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