On-line: PSP, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
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: 5076
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.09.16 15:41. Заголовок: Dima пишет: Уверен ..


Dima пишет:

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


Даже не задумывался...
Блин опять исходники Tsbrowse не то возвращают...
Или не они виноваты ?

Точно, проверил не работает, вернее возвращает U oBrw1:aColumns[nJ]:cDataType -> "U"


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




Пост N: 5993
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.09.16 16:15. Заголовок: Из сырца ::cDataType..


Из сырца ::cDataType = ValType( Eval( ::bData ) ) , может наведет на какие мысли

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




Пост N: 5077
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.09.16 16:26. Заголовок: Да какие тут мысли....


Да какие тут мысли... Править надо исходник бровса и всё тут !

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




Пост N: 5994
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.09.16 16:43. Заголовок: Andrey пишет: Да к..


Andrey пишет:

 цитата:

Да какие тут мысли... Править надо исходник бровса и всё тут !


Ну вообще то нет
Считывать и проверять нужно не тип а ФЛАГ (тип поля).
Примерно так
? dbFieldInfo( DBS_TYPE, FieldPos( "t" ) )
? dbFieldInfo( DBS_TYPE, FieldPos( "t2" ) )

ЗЫ
По ходу Петр разжевал для тебя этот вопрос в теме , Новые типы переменных , но ты снова фСё забыл


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




Пост N: 1204
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.09.16 16:51. Заголовок: Dima пишет Уверен чт..


Dima пишет
 цитата:
Уверен что cDataType возвращается тот что надо ?


Вот формирование cDataType
::cDataType = ValType( Eval( ::bData ) )
Привязываться надо к именам колонок
aEval( oBrw:aColumns, {|oCol| oCol:lEdit := ! ','+oCol:cName+ ',' $ ",ID,DTM,DTM2," } )



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




Пост N: 5078
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.09.16 17:10. Заголовок: SergKis пишет: Прив..


SergKis пишет:

 цитата:
Привязываться надо к именам колонок
aEval( oBrw:aColumns, {|oCol| oCol:lEdit := ! ','+oCol:cName+ ',' $ ",ID,DTM,DTM2," } )


Не согласен. Берём чужую базу и тупо её открываем. Я откуда знаю какие имена колонок типа: "+", "=", "^", "@" ?


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




Пост N: 1205
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.09.16 17:13. Заголовок: Andrey пишет Не согл..


Andrey пишет
 цитата:
Не согласен.


повторяю
 цитата:
Выход - взять метод
METHOD LoadFields( lEditable ) CLASS TSBrowse
преобразовать в функцию, подправить под свое понимание ситуации и предложть в использование, если будет хорошо,
можно поправить старый или сделать новый метод LoadField2(...) в TsBrowse



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




Пост N: 1206
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.09.16 17:17. Заголовок: PS У себя так и сдел..


PS
У себя так и сделал, по аналогии с ::SetArrayTo(...), написал ::SetFieldTo(...)

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




Пост N: 1207
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.09.16 17:33. Заголовок: Andrey пишет Берём ..


Andrey пишет
 цитата:
Берём чужую базу и тупо её открываем. Я откуда знаю какие имена колонок типа: "+", "=", "^","@


Для этого надо исп. утилиту DbEdit
TsBrowse предполагает программируемую работу над таблицей. А следить за всеми новыми полями и как их обрабатывать, не уверен что надо, к примеру поле @ - TimeStamp корректировать можно, его, вроде самому заполнять надо (често подзабыл уже)

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




Пост N: 5079
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.09.16 18:25. Заголовок: SergKis пишет: @ - ..


SergKis пишет:

 цитата:
@ - TimeStamp корректировать можно, его, вроде самому заполнять надо (често подзабыл уже)



Да, это поле нормально редактируется. Из-за этого и не включил его в запрет редактирования.

SergKis пишет:

 цитата:
Выход - взять метод
METHOD LoadFields( lEditable ) CLASS TSBrowse
преобразовать в функцию, подправить под свое понимание ситуации и предложть в использование, если будет хорошо,
можно поправить старый или сделать новый метод LoadField2(...) в TsBrowse



Ну не согласен с этим.
Есть нормальная функция, которая сделана для Харбора !!! Это же типы уже есть в Харборе.
Чуток отредактировать и будет служить 100 лет ещё...


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




Пост N: 5995
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 03.09.16 19:07. Заголовок: Andrey если по всей..


Andrey
если по всей базе то вполне сработает такой код
дарю

 
#include "dbstruct.ch"
.....
Local Hfldtype:=hb_hash("=",nil,"+",nil,"^",nil)



for i := 1 To oBrw:nColCount()
if hb_hhaskey(Hfldtype,dbFieldInfo( DBS_TYPE, i ))
oBrw:aColumns[ i ]:lEdit := FALSE
endif
next



Или можно в AEVAL все сделать

PS
Не проверял :)


Andrey пишет:

 цитата:
// запрет редактирования полей типа: "+", "=", "^"
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 , потому как
следующий AEVAL похерит результат предыдущего

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




Пост N: 5080
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.09.16 20:22. Заголовок: Dima пишет: дарю ..


Dima пишет:

 цитата:
дарю


Спасибо !
Хотел без цикла обойтись, но наверное лучше с ним.

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




Пост N: 1208
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.09.16 20:47. Заголовок: Andrey пишет Ну не с..


Andrey пишет
 цитата:
Ну не согласен с этим.


Взял бы текст h_tbrowse.prg и просканировал на cDataType, думаю многие вопросы отпали.
В основе лежит bData отображения, как задал, так и будет работать.
Если надо тебе спец. обработки, надо писать и спец. блок, т.е. TimeStamp превращать как надо для конкретного отображения, то же и по lEdit, ну или перелопатить весь TsBrowse.

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




Пост N: 1048
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.09.16 20:51. Заголовок: Andrey пишет: TsBro..


SergKis пишет:

 цитата:
TsBrowse предполагает программируемую работу над таблицей. А следить за всеми новыми полями и как их обрабатывать,



я за, проще самому определить как ТСБровс будет работать с базой в каждом конкретном, чем каждый раз переопределять то что почему то сделано стандартом.

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




Пост N: 1209
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.09.16 20:53. Заголовок: PS Метод SetFields (..


PS
Метод SetFields (совместро с заданым\нет списком указанных полей) служит для первоначального заполнения\формирования колонок (вместо исп. ADD COLUMN ...), а дальше все ручками, меняешь bData, lEdit, Size, Color, ....

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




Пост N: 5081
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.09.16 21:06. Заголовок: SergKis пишет: а да..


SergKis пишет:

 цитата:
а дальше все ручками, меняешь bData, lEdit, Size, Color, ....


Нет в мире совершенства ...
Понял ! Спасибо !

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




Пост N: 1210
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.09.16 21:52. Заголовок: Andrey пишет Нет в м..


Andrey пишет
 цитата:
Нет в мире совершенства ...


Правильнее "Лучшее - враг хорошего"

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




Пост N: 6007
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.09.16 16:38. Заголовок: Что то я снова в вид..


Что то я снова в виду того что долго не юзал Tsbrowse , торможу.
Есть бровс и в нем стоит фильтр по полю WB , строка фильтра WB==1.
На одной из записей меняю значение WB. Эта запись из фильтра должна уйти.
Что нужно корректно сказать бровсу что бы правильно его обновить ?
Было показано скажем 5 записей и после того как я сменил на одной из них значение WB ,
осталось 4 записи.
Reset() юзать не хочется.

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




Пост N: 1052
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 12.09.16 20:44. Заголовок: Dima пишет: reset н..


Dima пишет:

 цитата:
reset не хочется


Дима, пишу с мобилки и поэтому коротко и по пямяти ).
Глянь код в методе ::Delete (). Последовательность должна быть такой же как после dbDelete ()
в этом методе.


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




Пост N: 6008
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.09.16 21:25. Заголовок: Haz пишет: Глянь ко..


Haz пишет:

 цитата:
Глянь код в методе ::Delete ()


Ты в смысле про DeleteRow() ?
Покопаю завтра , спасибо.

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