On-line: Oskar_AAA, гостей 2. Всего: 3 [подробнее..]
АвторСообщение
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 [только новые]


Dima
администратор




Пост N: 5866
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.16 09:41. Заголовок: Порча с бровсом , эт..


Порча с бровсом , это из примера SAMPLES\Advanced\Tsb_seek_2\
Едем вниз или колесом или стрелкой вниз и бац записи стали дублироваться.
Тоже самое происходит и у меня в программе на компе заказчика (у меня норм)
В примере правда происходит расчет HOLE и дальнейшие действия , у меня
в коде ни чего подобного нет.
Куда копать ?


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




Пост N: 5867
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.16 10:28. Заголовок: Видео заказчика http..


Видео заказчика
http://files.icq.net/get/8uYhqlxRMUWAVpabMnphKX5785d4af1ad
Его лучше скачать так как в ONLINE показывает его перевернутым.

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 962
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 13.07.16 10:28. Заголовок: Dima пишет: Куда ко..


Dima пишет:

 цитата:
Куда копать ?


Это лечится в примере добавлением всего одной строки в функцию TBrw_Show()
*----------------------------------- 
Function TBrw_Show( oBrw, nDelta )
*-----------------------------------

_EndTBrowse()

If hb_IsObject(oBrw)
TBrw_NoHoles( oBrw, nDelta )
oBrw:nHeightHead -= 1
EndIf
Идея лечения состоит в том, чтобы уйти от точного соответствия высоты строк в гриде и общей высоты TBrowse

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




Пост N: 5868
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.07.16 10:30. Заголовок: Да в примере это ест..


Да в примере это есть НО в нем тоже ломается я же выложил скрин.
Упс строки то я и не заметил ))

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




Пост N: 176
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 09.08.16 23:09. Заголовок: Привет всем , я тоже пытаюсь разобратся с TSBROWS ом


Привет всем !
Я тоже пытаюсь разобратся с TSBROWS-ом

у меня возникла следучщая проблема :

имеется столбец

ADD COLUMN TO BROWSE_1;
HEADER "Код" ;
SIZE 80 ;
DATA aFld[1] ;
ALIGN DT_LEFT, nMakeLong( DT_CENTER, DT_CENTER ) ;
3DLOOK FALSE, TRUE, TRUE ;
EDITABLE //MOVE DT_MOVE_RIGHT

BROWSE_1:aColumns[ 1 ]:bHLClicked := {||artikuli->(dbseek(prihod->kod)),artikuli( .f. )}
BROWSE_1:aColumns[ 1 ]:cToolTip := "Кликнете върху хедера за да редактирате номенклатура АРТИКУЛИ."
BROWSE_1:aColumns[ 1 ]:bValid:= { | uVar | FindArt( uVar ) } ;

функция FindArt ищет в таблицу с артикулами есть или нет такой код .
если не находит хочу показать список в другом окне и сделать правильный выбор

А КАК НОВЫЙ КОД ОБРАТНО В ЯЧЕЙКУ ЗАПЕХНУТЬ НИКАК НЕ СООБРАЖУ





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




Пост N: 1037
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 09.08.16 23:43. Заголовок: sashaBG пишет: А КА..


sashaBG пишет:

 цитата:
А КАК НОВЫЙ КОД ОБРАТНО В ЯЧЕЙКУ ЗАПЕХНУТЬ НИКАК НЕ СООБРАЖУ



не совсем понятно применение :bValid , это блок который разрешает или нет GET объекту покинуть редактирование , если Т то редактирование завершается , если F то не выпускает. То есть что бы закончить редактирование нужно по любому вернуть T
В TsBrowse есть еще блоки завязанные на редакцию, это bPostEdit , bEditEnd которые выполняются после редактирования и в них можно делать проверки.
Присвоить значение в ячейку можно прямым присвоением oBrw:aArray[oBrw:nAt][ 1 ] := Kod // для колонки 1 или выполнив блок выборки/записи Eval( oBrw:aColumns[1]:bData, Kod ), в результате чего значение Kod будет записано в ячейку . останется только перерисовать строку для отображения нового значения . Перерисовку делает или :Refresh( F ) или :DrawSelect() - этот предпочтительнее

PS соответственно прочитать значение ячейки можно как Kod := oBrw:aArray[oBrw:nAt][ 1 ] или Kod := Eval( oBrw:aColumns[1]:bData)
мне кажется это проще чем пытаться управлять буфером Get объекта через Valid





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




Пост N: 177
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 10.08.16 15:12. Заголовок: Да Вы правы


Да Вы правы .
Я сделел то що хотел через bPostEdit

А вот интересно при bValid Вы говорите що не должно выпускать из контрола , на самом деле ПИКАЕТ и выходит из редактирования не меняя ячейку.



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




Пост N: 1039
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 10.08.16 20:21. Заголовок: sashaBG пишет: на ..


sashaBG пишет:

 цитата:
на самом деле ПИКАЕТ и выходит из редактирования не меняя ячейку.



Да, так и есть. Если я не ошибаюсь в Clipper Valid не выпускал из редактирования пока не вернет T, думал так же и в TS

Посмотрел исходники TS, в них Vald обрабатывается в методе bPostEdit т.е. после редактирования. Видимо это особенность которую автор заложил в метод :Edit()
По мне как это ошибка логики, будет время попробую предложить исправление. Сейчас ушел совершенно в другой процесс, и хобби в виде программирования пока пришлось отложить


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




Пост N: 1158
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.08.16 21:59. Заголовок: Haz пишет По мне как..


Haz пишет
 цитата:
По мне как это ошибка логики, будет время попробую предложить исправление


Возможно ошибки логики нет:
1. можно сделать postmessage на enter при valid .F., .т.е. вкл. edit
2. можно подвесить (организовать сообщение), как в примере BASIC\COM_2, используя ф-ю ShowGetValid( hWnd, cTxt, 'Information', 'I' ),
после закрытия поля edit после валид, положив в ячейку (visible .t.) узкий GetBox (контол cNam) и ... как в примере
SetProperty(ThisWindow.Name, cNam, 'Visible', .T.)
DoMethod(ThisWindow.Name, cNam, 'SetFocus')
InkeyGui(10) // otherwise it does not have time to respond
ShowGetValid( hWnd, cTxt, 'Information', 'I' )
InkeyGui(3000) // 3 sec.
SetProperty(ThisWindow.Name, cNam, 'Visible', .F.)
3. потом п. 1


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




Пост N: 1040
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 10.08.16 22:38. Заголовок: SergKis пишет: Возм..


SergKis пишет:

 цитата:
Возможно ошибки логики нет:
1. можно сделать


Сергей, то что ты предлагаешь и есть "выпрямление" логики
Ведь что говорил букварь по clipper -
If the VALID clause is specified and <lValid> evaluates to it logical true (.T.)  
condition the current GET will be considered valid and the get operation will continue
onto the next active GET object. If not, the cursor will remain on this GET object until
aborted or until the condition in <lValid> evaluates to true (.T.).

То есть в "классике" не завершать GET при lValid == .F. было "из коробки" и не нужно было ничего доделывать.


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




Пост N: 1159
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.08.16 23:24. Заголовок: Haz пишет То есть в ..


Haz пишет
 цитата:
То есть в "классике" не завершать GET при lValid == .F. было "из коробки" и не нужно было ничего доделывать


При клацаньи мышой где хочу "классик" уходит на 2-ой план.
Как при замороженом GET validом (.F.), переключить курсор на "нужную" ячейку , не записав введенные данные ("неправильные") в поле ?
Потому и говорю, что "возможно ..."

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




Пост N: 1041
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 10.08.16 23:29. Заголовок: SergKis пишет: Пото..


SergKis пишет:

 цитата:
Потому и говорю, что "возможно ..."


Мысль понял , логично но "осадочек остался"

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




Пост N: 5070
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.09.16 23:00. Заголовок: Использую стандартну..


Использую стандартную функцию загрузки настроек \MiniGUI\SOURCE\TsBrowse\h_tbrowse.prg
LoadFields( "oBrw1", cForm, .T.) // все поля редактируемые

Поля типа: "+", "=", "^", "@" - неправильно отображаются в TBROWSE, да и в добавок редактировать разрешены.

Можно там подправить в исходнике эту функцию ?


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




Пост N: 1199
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.09.16 09:46. Заголовок: Andrey пишет: Можно ..


Andrey пишет:
 цитата:
Можно там подправить в исходнике эту функцию ?


1. Отображение идет блоком кода, через стандартный FieldWBlock(cFiled, nWorkArea), Что тут менять ?
2. Ты сам ставишь все поля редактируемые .T. или нет .F.
3. Есть расчет ширины колонки, если не задано, но как правило (для красоты) ставишь под себя (свое понимание красоты)
Выход - взять метод
METHOD LoadFields( lEditable ) CLASS TSBrowse
преобразовать в функцию, подправить под свое понимание ситуации и предложть в использование, если будент хорошо,
можно поправить старый или сделать новый метод LoadField2(...) в TsBrowse

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




Пост N: 1046
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 02.09.16 10:10. Заголовок: Andrey пишет: подп..


Andrey пишет:

 цитата:
подправить


подправить надо не в исходнике. Задай нужным полям соответствующий шаблон вывода и запрети редактирование.
Делов то на один выэов aEval.
Если идти дорогой правки исходников, то под все RDD.
Я к примеру на ADS сижу, там расширенных типов полей куча, и что тоже все туда пихать?
И кому этот мусор в исходниках нужен будет ?

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




Пост N: 5072
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.09.16 12:31. Заголовок: Принял к сведению ва..


Принял к сведению ваши предложения. Спасибо !

Haz пишет:

 цитата:
Делов то на один выэов aEval.



Если нетрудно, дай пожалуйста как это сделать.

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




Пост N: 5989
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 02.09.16 12:58. Заголовок: Andrey Пройдись по ..


Andrey
Пройдись по массиву полей (или как там у тебя устроено) и в зависимости от типа поля присвой свой :cPicture ,
возможно придется поиграться и с :bdata

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




Пост N: 1047
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.09.16 10:39. Заголовок: Andrey пишет: Если ..


Andrey пишет:

 цитата:
Если нетрудно, дай пожалуйста как это сделать.


для запрета редактирования к примеру
aEval( oBrw:aColumns, {|oCol| If( oCol:cDataType == чему_надо, oCol:lEdit := .F., NIL } )

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




Пост N: 5074
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.09.16 15:02. Заголовок: Haz пишет: для запр..


Haz пишет:

 цитата:
для запрета редактирования к примеру



Не работает...
LoadFields( "oBrw1", cForm, .T.) // все поля редактируемые

// запрет редактирования полей типа: "+", "=", "^"
aEval( oBrw1:aColumns, {|oCol| If( oCol:cDataType == "+", oCol:lEdit := .F., NIL) } )
aEval( oBrw1:aColumns, {|oCol| If( oCol:cDataType == "=", oCol:lEdit := .F., NIL) } )
aEval( oBrw1:aColumns, {|oCol| If( oCol:cDataType == "^", oCol:lEdit := .F., NIL) } )

// формат вывода полей типа: "+", "=", "@"
aEval( oBrw1:aColumns, {|oCol| If( oCol:cDataType == "+", oCol:cPicture := REPL("9",10), NIL) } )
aEval( oBrw1:aColumns, {|oCol| If( oCol:cDataType == "=", oCol:cPicture := REPL("x",20), NIL) } )
aEval( oBrw1:aColumns, {|oCol| If( oCol:cDataType == "@", oCol:cPicture := REPL("x",20), NIL) } )



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




Пост N: 5992
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.09.16 15:17. Заголовок: Andrey пишет: oCol:..


Andrey пишет:

 цитата:
oCol:cDataType == "+"


Уверен что cDataType возвращается тот что надо ?

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