Форум » 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

SergKis: Dima пишет: фон BMP надо делать белый Попробовал из VO bmp с белым фоном - полет нормальный.

Dima: SergKis пишет: Попробовал из VO bmp с белым фоном - полет нормальный. OK Снова о Double Cursor. Вот так выглядит , без особого тюнинга. Но не трудно заметить что фон в 4 ячейке красится по условию и когда курсор там лежит , то этой окраске труба Делаем тюнинг. Еще вопрос: [pre2] Full oBrw:nLineStyle := 1 Only vertical lines oBrw:nLineStyle := 2 Only horizontal lines oBrw:nLineStyle := 4 No lines oBrw:nLineStyle := 0 [/pre2] Пока стоит у меня 1 , вроде ни чего так. В консоли если сравнивать была бы 2. В общем пробнул все варианты включая 5 и 3 И так и не понял как лучше и как быстрее будет для самого бровса. Быстрее будет конечно с nLineStyle := 0 , но выглядит как то вяло все Кто как юзает ? PS Смотрел таблички в задачах на DELPHI , там летает все и ни чего не "подмаргивает" , просто хотелось улучшить Tsbrowse в плане прорисовки и скорости.

Andrey: Dima пишет: Смотрел таблички в задачах на DELPHI , там летает все и ни чего не "подмаргивает" Там двойная буферизация при выводе на экран. Кто нам сделает такое же в МиниГуи - вопрос открыт ! Dima пишет: просто хотелось улучшить Tsbrowse в плане прорисовки и скорости. Аналогично. Мне бы тоже хотелось иметь готовые примеры как нужно делать то или иное в Tsbrowse.


Dima: Andrey пишет: Там двойная буферизация Ну по идее (хотя в си я валенок) надо в сырцах TsBrowse где идут вызовы SendMessage(...) 4-ым параметром передавать LVS_EX_DOUBLEBUFFER Только надо знать в каком из них (SendMessage) это сделать. Хотя, нет....... В Tsbrowse есть InitDialogBrowse , вот надо как то перед его вызовом поиграть с doublebuffer := _HMG_aControlMiscData1 [i,19] Возможно в Function _DefineTBrowse в _HMG_aControlMiscData1 [k] := 0 , вместо этого сделать так _HMG_aControlMiscData1 [k] := { , , , , , , , , , , , , , , , , , , TRUE }

SergKis: Dima если меняем исходники TsBrowse, вопросик А ты делел, по совету Haz, добавление cName (своего имени колонки) в TSColumn ? CLASS TSColumn DATA cName INIT "" ... Я да, и еще тронул [pre2] METHOD GetColumn( nCol ) CLASS TSBrowse Default nCol := 1 IF hb_IsString( nCol ) nCol := Max( AScan( ::aColumns, {|oCol| Upper(oCol:cName)==Upper(nCol) } ), 1) RETURN ::aColumns[ nCol ] // returns a Column object ENDIF If nCol < 1 nCol := 1 ElseIf nCol > Len( ::aColumns ) nCol := Len( ::aColumns ) EndIf Return ::aColumns[ nCol ] // returns a Column object [/pre2] может и еще надо было бы пройтись, но пока этим обхожусь

Dima: SergKis Нет этого не делал. О DoubleBuffer читал , мыслю верно ? Я о _HMG_aControlMiscData1 [k] := 0 функции _DefineTBrowse

SergKis: Dima так глубоко еще не лазил (как устроено не копал), по простым методам не прошел даже. Получается, как ты говорил "зашел на 5 минут", а вышел через неделю и не заметил. В Browse и вернулся по этим причинам.

SergKis: Dima пишет:Я о _HMG_aControlMiscData1 [k] := 0 функции _DefineTBrowse В др.контролах это контейнер внутренних данных, в TsBrowse нашел только это METHOD EditExit line 3950 [pre2] If ValType( oCol:oEdit ) == "O" DO CASE CASE "TGETBOX" $ Upper( oCol:oEdit:ClassName() ) ix := GetControlIndex ( ::cChildControl, ::cParentWnd ) nKey := _HMG_aControlMiscData1 [ix][3] SetFocus( ::hWnd ) // JP 1.59 CASE "TBTNBOX" $ Upper( oCol:oEdit:ClassName() ) .and. lSpinner [/pre2] не считая функции _DefineTBrowse

Dima: Тогда не понятно как корректно в 19 элемент сложить TRUE

SergKis: Dima LVS_EX_DOUBLEBUFFER - это для ListView, т.е. дл Browse, Grid

Haz: SergKis пишет: может и еще надо было бы пройтись, но пока этим обхожусь Сергей, я еще это менял ( номера строк примерные т.к. дома не актуальные исходники ) добавил код чтобы по ENTER и SPACE вызывался код дабл клика мышкой в широком курсоре 6396 Case !::lCellbrw .And. (nKey == 13 .Or. nKey == 32 ) If ::bLDblClick != Nil Eval( ::bLDblClick ) EndIf Otherwise Выход из редактирования при потере фокуса ячейкой с СОХРАНЕНИЕМ редакции ( как Excel ) // if nKey == 0 3915 // lLostFocus := .T. Закоментировал и изменил условие ниже с nKey > 0 на nKey >= 0 // endif 3919 If ! lLostFocus .and. nKey >= 0 .and. (nKey != VK_ESCAPE .or. ::nColSpecHd != 0) .and. ;

SergKis: Haz Спасибо.

Dima: SergKis пишет: LVS_EX_DOUBLEBUFFER - это для ListView, т.е. дл Browse, Grid То есть не для TSBROWSE......??? , который в свою очередь юзает InitDialogBrowse из h_browse.prg в котором и считывается doublebuffer := _HMG_aControlMiscData1 [i,19] и затем скармливается SendMessage. Можно тупо закоментить doublebuffer := _HMG_aControlMiscData1 [i,19] и написать doublebuffer := TRUE

SergKis: Dima это где ? не вижу, ткни который в свою очередь юзает InitDialogBrowse из h_browse.prg в котором и считывается doublebuffer := _HMG_aControlMiscData1 [i,19] и затем скармливается SendMessage.

Dima: Вызов InitDialogBrowse есть в SOURCE\TsBrowse\h_tbrowse.prg Сам InitDialogBrowse живет в сырцах Минигуи в h_browse.prg , строка примерно 296 Там чуть ниже и считывается doublebuffer из массива _HMG_aControlMiscData1

SergKis: туда попадаем при if _HMG_BeginDialogActive а унас ситуация else и oBrw := TSBrowse():New( ControlName, nRow, nCol, nWidth, nHeight,;

Dima: SergKis Попробовал сделать по аналогии с обычным бровсом в Function _DefineTBrowse в самом конце перед Return [pre2] if .Not. _HMG_DialogInMemory SendMessage( ControlHandle, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_DOUBLEBUFFER) endif [/pre2] Пересобрал , видимого эффекта не обнаружил , все по старому............ Наверное там не все так просто если Григорий этого не сделал после того как в Grid и бровсе был введен DOUBLEBUFFER. Фсё , у меня мысли кончились в плане DOUBLEBUFFER

SergKis: Dima LVS_EX_DOUBLEBUFFER это ListView контрол от Мвйкрософта и появилось то ли с Висты, то ли с 7ки, раньше вроде не было. а TsBrowse типа самописный, так что ...

Dima: SergKis Понял. Последняя попытка ;) Пробнул вот так еще в своем сырце после END WINDOW ListView_ChangeExtendedStyle ( GetControlHandle('oBrwm','MAGAZIN'), LVS_EX_DOUBLEBUFFER, NIL ) Эффекта не увидел. Тут не катит такое ? PS Похоже не катит........

Dima: SergKis А в обычном бровсе не TS , супер хидер возможен ? Сделать двойной курсор можно ?



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