Автор | Сообщение |
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: 5076
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.09.16 15:41. Заголовок: Dima пишет: Уверен ..
Dima пишет: цитата: | Уверен что cDataType возвращается тот что надо ? |
| Даже не задумывался... Блин опять исходники Tsbrowse не то возвращают... Или не они виноваты ? Точно, проверил не работает, вернее возвращает U oBrw1:aColumns[nJ]:cDataType -> "U"
|
|
|
Dima
|
| |
Пост N: 5993
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.09.16 16:15. Заголовок: Из сырца ::cDataType..
Из сырца ::cDataType = ValType( Eval( ::bData ) ) , может наведет на какие мысли
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5077
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.09.16 16:26. Заголовок: Да какие тут мысли....
Да какие тут мысли... Править надо исходник бровса и всё тут !
|
|
|
Dima
|
| |
Пост N: 5994
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.09.16 16:43. Заголовок: Andrey пишет: Да к..
Andrey пишет: цитата: | Да какие тут мысли... Править надо исходник бровса и всё тут ! |
| Ну вообще то нет Считывать и проверять нужно не тип а ФЛАГ (тип поля). Примерно так ? dbFieldInfo( DBS_TYPE, FieldPos( "t" ) ) ? dbFieldInfo( DBS_TYPE, FieldPos( "t2" ) ) ЗЫ По ходу Петр разжевал для тебя этот вопрос в теме , Новые типы переменных , но ты снова фСё забыл
|
|
|
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," } )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5078
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.09.16 17:10. Заголовок: SergKis пишет: Прив..
SergKis пишет: цитата: | Привязываться надо к именам колонок aEval( oBrw:aColumns, {|oCol| oCol:lEdit := ! ','+oCol:cName+ ',' $ ",ID,DTM,DTM2," } ) |
| Не согласен. Берём чужую базу и тупо её открываем. Я откуда знаю какие имена колонок типа: "+", "=", "^", "@" ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1205
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.16 17:13. Заголовок: Andrey пишет Не согл..
Andrey пишет повторяю цитата: | Выход - взять метод METHOD LoadFields( lEditable ) CLASS TSBrowse преобразовать в функцию, подправить под свое понимание ситуации и предложть в использование, если будет хорошо, можно поправить старый или сделать новый метод LoadField2(...) в TsBrowse |
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1206
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.16 17:17. Заголовок: PS У себя так и сдел..
PS У себя так и сделал, по аналогии с ::SetArrayTo(...), написал ::SetFieldTo(...)
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1207
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.16 17:33. Заголовок: Andrey пишет Берём ..
Andrey пишет цитата: | Берём чужую базу и тупо её открываем. Я откуда знаю какие имена колонок типа: "+", "=", "^","@ |
| Для этого надо исп. утилиту DbEdit TsBrowse предполагает программируемую работу над таблицей. А следить за всеми новыми полями и как их обрабатывать, не уверен что надо, к примеру поле @ - TimeStamp корректировать можно, его, вроде самому заполнять надо (често подзабыл уже)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5079
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.09.16 18:25. Заголовок: SergKis пишет: @ - ..
SergKis пишет: цитата: | @ - TimeStamp корректировать можно, его, вроде самому заполнять надо (често подзабыл уже) |
| Да, это поле нормально редактируется. Из-за этого и не включил его в запрет редактирования. SergKis пишет: цитата: | Выход - взять метод METHOD LoadFields( lEditable ) CLASS TSBrowse преобразовать в функцию, подправить под свое понимание ситуации и предложть в использование, если будет хорошо, можно поправить старый или сделать новый метод LoadField2(...) в TsBrowse |
| Ну не согласен с этим. Есть нормальная функция, которая сделана для Харбора !!! Это же типы уже есть в Харборе. Чуток отредактировать и будет служить 100 лет ещё...
|
|
|
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 похерит результат предыдущего
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5080
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.09.16 20:22. Заголовок: Dima пишет: дарю ..
Dima пишет: Спасибо ! Хотел без цикла обойтись, но наверное лучше с ним.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1208
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.16 20:47. Заголовок: Andrey пишет Ну не с..
Andrey пишет Взял бы текст h_tbrowse.prg и просканировал на cDataType, думаю многие вопросы отпали. В основе лежит bData отображения, как задал, так и будет работать. Если надо тебе спец. обработки, надо писать и спец. блок, т.е. TimeStamp превращать как надо для конкретного отображения, то же и по lEdit, ну или перелопатить весь TsBrowse.
|
|
|
Haz
|
| |
Пост N: 1048
Зарегистрирован: 20.02.11
|
|
Отправлено: 03.09.16 20:51. Заголовок: Andrey пишет: TsBro..
SergKis пишет: цитата: | TsBrowse предполагает программируемую работу над таблицей. А следить за всеми новыми полями и как их обрабатывать, |
| я за, проще самому определить как ТСБровс будет работать с базой в каждом конкретном, чем каждый раз переопределять то что почему то сделано стандартом.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1209
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.16 20:53. Заголовок: PS Метод SetFields (..
PS Метод SetFields (совместро с заданым\нет списком указанных полей) служит для первоначального заполнения\формирования колонок (вместо исп. ADD COLUMN ...), а дальше все ручками, меняешь bData, lEdit, Size, Color, ....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5081
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.09.16 21:06. Заголовок: SergKis пишет: а да..
SergKis пишет: цитата: | а дальше все ручками, меняешь bData, lEdit, Size, Color, .... |
| Нет в мире совершенства ... Понял ! Спасибо !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1210
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.09.16 21:52. Заголовок: Andrey пишет Нет в м..
Andrey пишет цитата: | Нет в мире совершенства ... |
| Правильнее "Лучшее - враг хорошего"
|
|
|
Dima
|
| |
Пост N: 6007
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.09.16 16:38. Заголовок: Что то я снова в вид..
Что то я снова в виду того что долго не юзал Tsbrowse , торможу. Есть бровс и в нем стоит фильтр по полю WB , строка фильтра WB==1. На одной из записей меняю значение WB. Эта запись из фильтра должна уйти. Что нужно корректно сказать бровсу что бы правильно его обновить ? Было показано скажем 5 записей и после того как я сменил на одной из них значение WB , осталось 4 записи. Reset() юзать не хочется.
|
|
|
Haz
|
| |
Пост N: 1052
Зарегистрирован: 20.02.11
|
|
Отправлено: 12.09.16 20:44. Заголовок: Dima пишет: reset н..
Dima пишет: Дима, пишу с мобилки и поэтому коротко и по пямяти ). Глянь код в методе ::Delete (). Последовательность должна быть такой же как после dbDelete () в этом методе.
|
|
|
Dima
|
| |
Пост N: 6008
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.09.16 21:25. Заголовок: Haz пишет: Глянь ко..
Haz пишет: цитата: | Глянь код в методе ::Delete () |
| Ты в смысле про DeleteRow() ? Покопаю завтра , спасибо.
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|