Автор | Сообщение |
Vlad04
|
| постоянный участник
|
Пост N: 420
Зарегистрирован: 13.10.05
|
|
Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи (продолжение)
TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру цитата: | 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 |
| Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
SergKis
|
| постоянный участник
|
Пост N: 718
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.07.15 20:31. Заголовок: Dima пишет: фон BMP ..
Dima пишет: цитата: | фон BMP надо делать белый |
| Попробовал из VO bmp с белым фоном - полет нормальный.
|
|
|
Dima
|
| |
Пост N: 5057
Зарегистрирован: 17.05.05
|
|
Отправлено: 05.07.15 21:25. Заголовок: Снова о Double Curso..
SergKis пишет: цитата: | Попробовал из VO bmp с белым фоном - полет нормальный. |
| OK Снова о Double Cursor. Вот так выглядит , без особого тюнинга. Но не трудно заметить что фон в 4 ячейке красится по условию и когда курсор там лежит , то этой окраске труба Еще вопрос: Full oBrw:nLineStyle := 1 Only vertical lines oBrw:nLineStyle := 2 Only horizontal lines oBrw:nLineStyle := 4 No lines oBrw:nLineStyle := 0 Пока стоит у меня 1 , вроде ни чего так. В консоли если сравнивать была бы 2. В общем пробнул все варианты включая 5 и 3 И так и не понял как лучше и как быстрее будет для самого бровса. Быстрее будет конечно с nLineStyle := 0 , но выглядит как то вяло все Кто как юзает ? PS Смотрел таблички в задачах на DELPHI , там летает все и ни чего не "подмаргивает" , просто хотелось улучшить Tsbrowse в плане прорисовки и скорости.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4360
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.07.15 00:17. Заголовок: Dima пишет: Смотрел..
Dima пишет: цитата: | Смотрел таблички в задачах на DELPHI , там летает все и ни чего не "подмаргивает" |
| Там двойная буферизация при выводе на экран. Кто нам сделает такое же в МиниГуи - вопрос открыт ! Dima пишет: цитата: | просто хотелось улучшить Tsbrowse в плане прорисовки и скорости. |
| Аналогично. Мне бы тоже хотелось иметь готовые примеры как нужно делать то или иное в Tsbrowse.
|
|
|
Dima
|
| |
Пост N: 5058
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.07.15 08:52. Заголовок: Andrey пишет: Там д..
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
|
| постоянный участник
|
Пост N: 719
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.07.15 09:12. Заголовок: Dima если меняем ис..
Dima если меняем исходники TsBrowse, вопросик А ты делел, по совету Haz, добавление cName (своего имени колонки) в TSColumn ? CLASS TSColumn DATA cName INIT "" ... Я да, и еще тронул 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 может и еще надо было бы пройтись, но пока этим обхожусь
|
|
|
Dima
|
| |
Пост N: 5059
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.07.15 09:15. Заголовок: SergKis Нет этого н..
SergKis Нет этого не делал. О DoubleBuffer читал , мыслю верно ? Я о _HMG_aControlMiscData1 [k] := 0 функции _DefineTBrowse
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 720
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.07.15 09:23. Заголовок: Dima так глубоко ещ..
Dima так глубоко еще не лазил (как устроено не копал), по простым методам не прошел даже. Получается, как ты говорил "зашел на 5 минут", а вышел через неделю и не заметил. В Browse и вернулся по этим причинам.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 721
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.07.15 09:33. Заголовок: Dima пишет:Я о _HMG_..
Dima пишет: цитата: | Я о _HMG_aControlMiscData1 [k] := 0 функции _DefineTBrowse |
| В др.контролах это контейнер внутренних данных, в TsBrowse нашел только это METHOD EditExit line 3950 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 не считая функции _DefineTBrowse
|
|
|
Dima
|
| |
Пост N: 5060
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.07.15 09:57. Заголовок: Тогда не понятно как..
Тогда не понятно как корректно в 19 элемент сложить TRUE
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 722
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.07.15 10:33. Заголовок: Dima LVS_EX_DOUBLEB..
Dima LVS_EX_DOUBLEBUFFER - это для ListView, т.е. дл Browse, Grid
|
|
|
Haz
|
| |
Пост N: 590
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.07.15 10:39. Заголовок: SergKis пишет: може..
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
|
| постоянный участник
|
Пост N: 723
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.07.15 10:40. Заголовок: Haz Спасибо. :sm36..
Haz Спасибо.
|
|
|
Dima
|
| |
Пост N: 5061
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.07.15 10:41. Заголовок: SergKis пишет: LVS_..
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
|
| постоянный участник
|
Пост N: 724
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.07.15 10:56. Заголовок: Dima это где ? не в..
Dima это где ? не вижу, ткни цитата: | который в свою очередь юзает InitDialogBrowse из h_browse.prg в котором и считывается doublebuffer := _HMG_aControlMiscData1 [i,19] и затем скармливается SendMessage. |
|
|
|
|
Dima
|
| |
Пост N: 5062
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.07.15 11:06. Заголовок: Вызов InitDialogBrow..
Вызов InitDialogBrowse есть в SOURCE\TsBrowse\h_tbrowse.prg Сам InitDialogBrowse живет в сырцах Минигуи в h_browse.prg , строка примерно 296 Там чуть ниже и считывается doublebuffer из массива _HMG_aControlMiscData1
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 725
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.07.15 11:18. Заголовок: туда попадаем при i..
туда попадаем при if _HMG_BeginDialogActive а унас ситуация else и oBrw := TSBrowse():New( ControlName, nRow, nCol, nWidth, nHeight,;
|
|
|
Dima
|
| |
Пост N: 5063
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.07.15 13:29. Заголовок: SergKis Попробовал ..
SergKis Попробовал сделать по аналогии с обычным бровсом в Function _DefineTBrowse в самом конце перед Return if .Not. _HMG_DialogInMemory SendMessage( ControlHandle, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_DOUBLEBUFFER) endif Пересобрал , видимого эффекта не обнаружил , все по старому............ Наверное там не все так просто если Григорий этого не сделал после того как в Grid и бровсе был введен DOUBLEBUFFER. Фсё , у меня мысли кончились в плане DOUBLEBUFFER
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 726
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.07.15 14:09. Заголовок: Dima LVS_EX_DOUBLEB..
Dima LVS_EX_DOUBLEBUFFER это ListView контрол от Мвйкрософта и появилось то ли с Висты, то ли с 7ки, раньше вроде не было. а TsBrowse типа самописный, так что ...
|
|
|
Dima
|
| |
Пост N: 5064
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.07.15 14:11. Заголовок: SergKis Понял. Посл..
SergKis Понял. Последняя попытка ;) Пробнул вот так еще в своем сырце после END WINDOW ListView_ChangeExtendedStyle ( GetControlHandle('oBrwm','MAGAZIN'), LVS_EX_DOUBLEBUFFER, NIL ) Эффекта не увидел. Тут не катит такое ? PS Похоже не катит........
|
|
|
Dima
|
| |
Пост N: 5065
Зарегистрирован: 17.05.05
|
|
Отправлено: 06.07.15 14:45. Заголовок: SergKis А в обычном..
SergKis А в обычном бровсе не TS , супер хидер возможен ? Сделать двойной курсор можно ?
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|