Автор | Сообщение |
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
[только новые]
|
|
Andrey
|
| постоянный участник
|
Пост N: 4810
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.03.16 13:43. Заголовок: Блин, пробовал до эт..
Блин, пробовал до этого так {|nRow,nCo| MyFunctionSelect(nRow,nCol) } Увидел что пикселы это и бросил... а зря оказывается.... Спасибо !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 926
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.03.16 17:01. Заголовок: Andrey пишет:и твой ..
Andrey пишет: цитата: | и твой блок кода будет таким {|nRowPix,nColPix,nAt,oBrw| MyFunctionSelect(nRowPix,nColPix,nAt,oBrw) } Номера подвала колонки нет ! |
| Andrey, а посмотреть указанное место трудно ? там есть ответ буквально несколькими строками ниже от uPar1 := nRowPix, ; uPar2 := nColPix, ; ... nClickRow := ::GetTxtRow( nRowPix ) nAtCol := Max( ::nAtCol( nColPix ), 1 ) поставь и подсвети в свою ф-ю
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4814
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.03.16 17:01. Заголовок: Рано радовался... ..
Рано радовался... oBrw1:aColumns[ nI ]:bFLClicked := {|nRowPix,nColPix,nAt,oBrw| SelectRunColumns(nRowPix,nColPix,nAt,oBrw) } Как получить номер нажатого подвала колонки ? nAt - это номер строки таблицы. Нельзя в исходнике добавить НОМЕР подвала нажатой колонки ?
|
|
|
Haz
|
| |
Пост N: 839
Зарегистрирован: 20.02.11
|
|
Отправлено: 28.03.16 17:11. Заголовок: Andrey пишет: Нельз..
Andrey пишет: цитата: | Нельзя в исходнике добавить НОМЕР подвала нажатой колонки |
| Во первых он там есть Во вторых , то что Сергей в посте 925 написал , не подходит что ли ? SergKis: цитата: | и номер колонки в ф-ии будет oBrw:nCell, а oBrw:nRowPos тек. строка и т.д. |
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4815
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.03.16 17:28. Заголовок: Haz пишет: Во вторы..
Haz пишет: цитата: | Во вторых , то что Сергей в посте 925 написал , не подходит что ли ? |
| Это я написал, а потом смотрю ответ выше моего появился... SergKis пишет: цитата: | поставь и подсвети в свою ф-ю |
| Спасибо БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4819
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.03.16 22:21. Заголовок: Погонял я нажатие мы..
Погонял я нажатие мышкой подвала таблицы и заметил ляпы: под 8.1 ширина нажатия подвала - чуть больше половины подвала. Нижняя половина подвала на нажатие мышки никак не реагирует. Под 7-кой срабатывание при нажатии мышкой сужается до 1/3 подвала таблицы. А почему так ? For nI := 2 To oBrw1:nColCount() oBrw1:aColumns[ nI ]:bFLClicked := {|nRowPix,nColPix,nAt,oBrw| SelectRunColumns(nRowPix,nColPix,nAt,oBrw) } Next ............ ////////////////////////////////////////////////////////////////// FUNCTION SelectRunColumns(nRowPix,nColPix,nAt,oBrw) LOCAL nClickRow := oBrw:GetTxtRow( nRowPix ) LOCAL nAtCol := Max( oBrw:nAtCol( nColPix ), 1 ) LOCAL cRet //MsgDebug(nRowPix,nColPix,nAt,"----",nClickRow,nAtCol) cRet := Form_SelectRunColumns(nAtCol) IF LEN(cRet) > 0 // выбрана настройка формул oBrw1:aColumns[nAtCol]:cFooting := cRet oBrw1:DrawFooters() ENDIF RETURN NIL
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4822
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.03.16 16:23. Заголовок: Andrey пишет: Погон..
Andrey пишет: цитата: | Погонял я нажатие мышкой подвала таблицы и заметил ляпы: под 8.1 ширина нажатия подвала - чуть больше половины подвала. Нижняя половина подвала на нажатие мышки никак не реагирует. |
| Сделал обработку подвала в другом примере - заработало без проблем. Вернулся к этому же примеру и понял, что при увеличение высоты подвала + ширины колонки подвала будет такая проблема (см.описание выше) ! Как решить эту проблему ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4824
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.04.16 01:14. Заголовок: Вот ещё одна проблем..
Вот ещё одна проблемка.... Назначаю подсказку на один столбец: oBrw1:cToolTip := {|oBr,nCol,nRow| IIF( nCol==2, cToolTip + " "+HB_NtoS(nRow), "") } Ставлю мышку на суперхидер - подсказка всё равно отображается: Как убрать подсказку с суперхидера ?
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 543
Зарегистрирован: 13.10.05
|
|
Отправлено: 05.04.16 08:54. Заголовок: Имеется TsBrows на ф..
Имеется TsBrows на форме.Отображаются данные таблицы 1, после некоторых действий надо на этом же месте отобразить данные другой таблицы . Структура та же, алиас другой. Как правильно переопределить TsBrows
|
|
|
Haz
|
| |
Пост N: 850
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.04.16 10:31. Заголовок: Vlad04 пишет: Как п..
Vlad04 пишет: цитата: | Как правильно переопределить TsBrows |
| Brw:cAlias := cNewAlias то что ниже Brw:Reset() перед Brw:Reset() важно переопределить блоки кода бровса ( в них остался прежний алиас ). Я работаю с ADS и для него годится так Brw:cAlias := cAlias Brw:bGoTop := {|| ( cAlias )->( DbGoTop() ) } Brw:bGoBottom := {|| ( cAlias )->( DbGoBottom() ) } Brw:bSkip := {| n | If( n == Nil, n := 1, Nil ), Brw:DbSkipper( n ) } Brw:bBof := {|| ( cAlias )->( Bof() ) } Brw:bEof := {|| ( cAlias )->( Eof() ) } // отсюда специфика ADS cAdsKeyNo := "{| n, oBrw | If( n == Nil, Round( " + cAlias + "->( ADSGetRelKeyPos() ) * oBrw:nLen, 0 ), " + ; cAlias + "->( ADSSetRelKeyPos( n / oBrw:nLen ) ) ) }" cAdsKeyCount := "{|cTag| " + cAlias + "->( ADSKeyCount(cTag,, 1 ) ) }" Brw:bKeyNo := &cAdsKeyNo Brw:bKeyCount := &cAdsKeyCount Brw:bLogicLen := &cAdsKeyCount Brw:bTagOrder := {|uTag| ( cAlias )->( OrdSetFocus( uTag ) ) } Brw:bGoToPos := {|n| Eval( Brw:bKeyNo, n, Brw ) } /* А это для других RDD Brw:bKeyNo := {| n | ( cAlias )->( If( n == Nil, If( IndexOrd() > 0, OrdKeyNo(), RecNo() ), ; If( IndexOrd() > 0, OrdKeyGoto( n ), DbGoTo( n ) ) ) ) } Brw:bKeyCount := {|| ( cAlias )->( If( IndexOrd() > 0, OrdKeyCount(), LastRec() ) ) } Brw:bLogicLen := {|| ( cAlias )->( If( IndexOrd() == 0, LastRec(), OrdKeyCount() ) ) } Brw:bTagOrder := {|uTag| ( cAlias )->( OrdSetFocus( uTag ) ) } Brw:bGoToPos := {|n| Eval( ::bKeyNo, n ) } */ Brw:SetDbf( cAlias ) PS. в случае когда структура другая , нужно убить старый бровс и на его месте создать новый . В случае когда отличия только в части полей - проще в первом бровсе удалить колонки , которых не должно быть во втором и добавить новые, потом Reset()
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 544
Зарегистрирован: 13.10.05
|
|
Отправлено: 05.04.16 11:29. Заголовок: Haz нужно убить ста..
|
|
|
|
Haz
|
| |
Пост N: 851
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.04.16 12:02. Заголовок: Vlad04 пишет: А как..
Vlad04 пишет: Элементарно ) DoMethod('Form_1', 'Brw', 'Release')
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 930
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.04.16 12:24. Заголовок: Vlad04 пишет: Как пр..
Vlad04 пишет: цитата: | Как правильно переопределить TsBrows |
| можно закрыть dbf с oBrw:cAlias и в той же область открыть аналогичный dbf с таким же алиасом, если использовались oCol:cOrder (сортировка на колонках), то аналогичный dbf должен иметь и аналогичные индексы
|
|
|
Haz
|
| |
Пост N: 852
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.04.16 13:40. Заголовок: SergKis пишет: отк..
SergKis пишет: цитата: | открыть аналогичный dbf с таким же алиасом, |
| Подтверждаю, это самый простой способ. Использую именно его когда получаю алиас из SQL запроса. т.к. управляющий индекс не нужен ( сортировка ставится как ORDER BY ) , то достаточно одного Brw:Reset()
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 545
Зарегистрирован: 13.10.05
|
|
Отправлено: 05.04.16 14:47. Заголовок: оК! Все нормально!..
оК! Все нормально!
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 546
Зарегистрирован: 13.10.05
|
|
Отправлено: 05.04.16 14:56. Заголовок: С открытием и закры..
С открытием и закрытием все нормально. Как избежать повторного закрытия (открытия) соответственно уже закрытого или открытого бровза ( исключаем человеческий фактор )? Для окна делаем так цитата: | if !IsWindowDefined(Frm_klient) |
| а для элемента окна ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4829
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.04.16 15:20. Заголовок: Наверно так: I..
Наверно так: IF GetControlIndex("Timer_1", cForm ) > 0
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 931
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.04.16 15:55. Заголовок: или #translate IsCon..
или #translate IsControlDefined ( <ControlName> , <FormName> ) ; => ; _IsControlDefined ( <"ControlName"> , <"FormName"> )
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 547
Зарегистрирован: 13.10.05
|
|
Отправлено: 05.04.16 17:49. Заголовок: *------------------..
цитата: | *-------------------------------- Удаляем Контрол, при его наличии Procedure Del_Brv() if _IsControlDefined ( "oBrw" , "DEMO" ) = .t. //вариант // IF GetControlIndex("oBrw",'Demo' ) > 0 DoMethod('Demo', 'oBrw', 'Release') endif Return *------------------------------- Открывам контрол , если его нет Procedure Open_Brw() IF GetControlIndex("oBrw",'Demo' ) = 0 // вариант // if _IsControlDefined ( "oBrw" , "DEMO" ) = .f. OpenBrows( "oBrw", 'DEMO', 80, 15, dEMO.Width-20, DEMO.Height-130 , Alias() ) endif Return *----------------------------------------- |
| Оба способа работают, только функции проверки возвращают разные значения.
|
|
|
Haz
|
| |
Пост N: 875
Зарегистрирован: 20.02.11
|
|
Отправлено: 11.04.16 16:46. Заголовок: мелкий фикс
Григорий, просьба в два метода ::DrawLine() и ::DrawSelect() добавить проверку условия ::lVisible в строках lCheck := ( oColumn:lCheckBox .and. ValType( uData ) == "L" .and. oColumn:lVisible ) примерные номера строк в исходнике 2932 и 3253 без этой проверки , если lCheckBox истина и колонка скрыта, в соседнюю выдает мусор от битмапа. Тестовый пример писать не стал, т.к. и так все просто. В любом примере TS в колонке по логическому полю задать то что ниже и посмотреть oBrw:aColumns[n]:lCheckBox := .T. oBrw:Hidecolumns(n, .T. ) PS. Хорошо кстати тестится на примере Сергея Tsb_BitMaps
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|