On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
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:....



Спасибо: 0 
Профиль
Ответов - 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) }
Увидел что пикселы это и бросил... а зря оказывается....
Спасибо !

Спасибо: 0 
Профиль
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 )

поставь и подсвети в свою ф-ю

Спасибо: 0 
Профиль
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 - это номер строки таблицы.

Нельзя в исходнике добавить НОМЕР подвала нажатой колонки ?


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 839
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 28.03.16 17:11. Заголовок: Andrey пишет: Нельз..


Andrey пишет:

 цитата:
Нельзя в исходнике добавить НОМЕР подвала нажатой колонки


Во первых он там есть
Во вторых , то что Сергей в посте 925 написал , не подходит что ли ?


SergKis:

 цитата:
и номер колонки в ф-ии будет oBrw:nCell, а oBrw:nRowPos тек. строка и т.д.



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4815
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.03.16 17:28. Заголовок: Haz пишет: Во вторы..


Haz пишет:

 цитата:
Во вторых , то что Сергей в посте 925 написал , не подходит что ли ?


Это я написал, а потом смотрю ответ выше моего появился...


SergKis пишет:

 цитата:
поставь и подсвети в свою ф-ю


Спасибо БОЛЬШОЕ !


Спасибо: 0 
Профиль
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




Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4822
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.03.16 16:23. Заголовок: Andrey пишет: Погон..


Andrey пишет:

 цитата:
Погонял я нажатие мышкой подвала таблицы и заметил ляпы:
под 8.1 ширина нажатия подвала - чуть больше половины подвала. Нижняя половина подвала на нажатие мышки никак не реагирует.



Сделал обработку подвала в другом примере - заработало без проблем.
Вернулся к этому же примеру и понял, что
при увеличение высоты подвала + ширины колонки подвала будет такая проблема (см.описание выше) !
Как решить эту проблему ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4824
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.04.16 01:14. Заголовок: Вот ещё одна проблем..


Вот ещё одна проблемка....
Назначаю подсказку на один столбец:
oBrw1:cToolTip := {|oBr,nCol,nRow| IIF( nCol==2, cToolTip + " "+HB_NtoS(nRow), "") }


Ставлю мышку на суперхидер - подсказка всё равно отображается:


Как убрать подсказку с суперхидера ?

Спасибо: 0 
Профиль
Vlad04
постоянный участник


Пост N: 543
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 05.04.16 08:54. Заголовок: Имеется TsBrows на ф..


Имеется TsBrows на форме.Отображаются данные таблицы 1, после некоторых действий надо на этом же месте отобразить данные другой таблицы . Структура та же, алиас другой.
Как правильно переопределить TsBrows

Спасибо: 0 
Профиль
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()

Спасибо: 0 
Профиль
Vlad04
постоянный участник


Пост N: 544
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 05.04.16 11:29. Заголовок: Haz нужно убить ста..


Haz

 цитата:
нужно убить старый бровс


А как ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 851
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.16 12:02. Заголовок: Vlad04 пишет: А как..


Vlad04 пишет:

 цитата:
А как ?



Элементарно )
DoMethod('Form_1', 'Brw', 'Release')

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 930
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.04.16 12:24. Заголовок: Vlad04 пишет: Как пр..


Vlad04 пишет:
 цитата:
Как правильно переопределить TsBrows


можно закрыть dbf с oBrw:cAlias и в той же область открыть аналогичный dbf с таким же алиасом, если использовались oCol:cOrder (сортировка на колонках), то аналогичный dbf должен иметь и аналогичные индексы

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 852
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 05.04.16 13:40. Заголовок: SergKis пишет: отк..


SergKis пишет:

 цитата:
открыть аналогичный dbf с таким же алиасом,



Подтверждаю, это самый простой способ. Использую именно его когда получаю алиас из SQL запроса.
т.к. управляющий индекс не нужен ( сортировка ставится как ORDER BY ) , то достаточно одного Brw:Reset()



Спасибо: 0 
Профиль
Vlad04
постоянный участник


Пост N: 545
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 05.04.16 14:47. Заголовок: оК! Все нормально!..


оК!
Все нормально!

Спасибо: 0 
Профиль
Vlad04
постоянный участник


Пост N: 546
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 05.04.16 14:56. Заголовок: С открытием и закры..


С открытием и закрытием все нормально. Как избежать повторного закрытия (открытия) соответственно уже закрытого или
открытого бровза ( исключаем человеческий фактор )?
Для окна делаем так

 цитата:
if !IsWindowDefined(Frm_klient)



а для элемента окна ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4829
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.04.16 15:20. Заголовок: Наверно так: I..


Наверно так:
IF GetControlIndex("Timer_1", cForm ) > 0


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 931
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.04.16 15:55. Заголовок: или #translate IsCon..


или
#translate IsControlDefined ( <ControlName> , <FormName> ) ;
=> ;
_IsControlDefined ( <"ControlName"> , <"FormName"> )


Спасибо: 0 
Профиль
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
*-----------------------------------------


Оба способа работают, только функции проверки возвращают разные значения.

Спасибо: 0 
Профиль
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




Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 68
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет