Автор | Сообщение |
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: 4862
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.04.16 19:22. Заголовок: Haz пишет: а oBrw:n..
Haz пишет: А если добавляется/удаляется запись ? Он автоматом пересчитывается ?
|
|
|
Haz
|
| |
Пост N: 903
Зарегистрирован: 20.02.11
|
|
Отправлено: 22.04.16 19:40. Заголовок: Andrey пишет: Он ав..
Andrey пишет: цитата: | Он автоматом пересчитывается ? |
| ХЗ попробуй
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4863
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.04.16 23:58. Заголовок: Попробовал так: ..
Попробовал так: nI := 1 oBrw:aColumns[ nI ]:cHeading := "№№" oBrw:aColumns[ nI ]:bData := {|| oBrw:nLogicPos } Вроде работает правильно, при удалении/добавлении записи счетчик ставиться правильно. Это при сортировке по скрытой колонке по содержимому STR(NKVAR)+CKVAR - oBrwA:SetOrder(2, , .F. )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4865
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.04.16 20:50. Заголовок: Заметил такую особен..
Заметил такую особенность. Если есть первые скрытые столбцы, то при движение маркера/курсора на первые столбцы, он пропадает. Юзер не видит курсор, у него паника.... Как исправить пропадание курсора из таблицы ?
|
|
|
Haz
|
| |
Пост N: 906
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.04.16 23:11. Заголовок: Andrey пишет: Как и..
Andrey пишет: цитата: | Как исправить пропадание курсора из таблицы ? |
| Не использовать скрытые столбцы или менять исходники TS я отказался от скрытых...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4867
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.16 18:12. Заголовок: Нашёл один вариант. ..
Нашёл один вариант. Если колонки скрытые стоят первыми, то можно делать так: oBrwA:nFreeze := 3 // Заморозить первых ХХ столбца И ещё тогда наверно можно скрытые колонки переместить в первые ряды и заморозить их.
|
|
|
Haz
|
| |
Пост N: 907
Зарегистрирован: 20.02.11
|
|
Отправлено: 24.04.16 21:36. Заголовок: Andrey пишет: Нашёл..
Andrey пишет: зачем они вообще нужны если их скрыли, их лучше удалить . Потребуется - добавить Удаляются ведь только колонки , поля в алиасе остаются
|
|
|
Haz
|
| |
Пост N: 909
Зарегистрирован: 20.02.11
|
|
Отправлено: 28.04.16 18:33. Заголовок: Режим вставки по умолчанию в ::Edit()
Григорий . можно в метод ::Edit() первыми строками добавить IF !IsInsertActive() iif( _HMG_IsXPorLater, KeyToggleNT( VK_INSERT ), KeyToggle( VK_INSERT ) ) END Не все владеют слепой печатью, пользователи плачут что печатают уткнувшись в клаву, а когда глаза поднимают, то видят что был режим замены и стерто половина того что было в длинном текстовом поле Как универсальный вариант, можно добавить флаг oBrw:lInsert и если его выставили в .Т. как oBrw:lInsert := .T. при инициализации бровса , то так IF ValType(::lInsert) == "L" IF IsInsertActive() <> ::lInsert iif( _HMG_IsXPorLater, KeyToggleNT( VK_INSERT ), KeyToggle( VK_INSERT ) ) END END тогда можно не только назначать по умолчанию, но и отключать обработку как oBrw:lInsert := NIL
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 934
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.04.16 10:08. Заголовок: Haz пишет: IF Va..
Haz пишет: цитата: | IF ValType(::lInsert) == "L" IF IsInsertActive() <> ::lInsert iif( _HMG_IsXPorLater, KeyToggleNT( VK_INSERT ), KeyToggle( VK_INSERT ) ) END END |
| Дельное предложение! Принимается
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4886
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.04.16 11:46. Заголовок: Привет всем ! Работ..
Привет всем ! Работаю с SetArrayTo(). В процессе удаляю все записи с таблицы. Одна всегда остаётся. И не редактируется. Наверно это мираж-запись, чтобы SetArrayTo() не сломался. Как определить что юзер удалил все записи из таблицы и закрыть таблицу ? oBrw:nAt возвращает всегда 1.
|
|
|
Haz
|
| |
Пост N: 916
Зарегистрирован: 20.02.11
|
|
Отправлено: 30.04.16 12:19. Заголовок: Andrey пишет: Навер..
Andrey пишет: цитата: | Наверно это мираж-запись, чтобы SetArrayTo() не сломался. |
| Сейчас придет SergKis и расскажет зачем он туда миражей напихал ... я воздержусь, скажу только по следующему вопросу Andrey пишет: цитата: | oBrw:nAt возвращает всегда 1. |
| ::nAt используется в исходнике TS как индекс массива , к примеру строка 1252 исходника ::aArray[ ::nAt, 1 ] ) Вывод думаю очевиден Andrey пишет: цитата: | Как определить что юзер удалил все записи из таблицы и закрыть таблицу ? |
| или переходить на ARRAYRDD какой нить и смотреть на RecCount() или в самом массиве держать признак и анализировать его
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 965
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.04.16 13:33. Заголовок: Andrey пишет:В проце..
Andrey пишет: цитата: | В процессе удаляю все записи с таблицы. Одна всегда остаётся. И не редактируется |
| А посмотреть, что прописано в TsBrowse при удалении слабо ? Ты используешь метод DeleteRow(lAll) для удаления, и вряд ли бы ты хотел, что бы всегда сваливалась программа при удалении последней записи. поэтому сделано для массива: METHOD DeleteRow(lAll) CLASS TSBrowse ... If Len( ::aArray ) == 0 ::aArray := { AClone( ::aDefValue ) } ::lPhantArrRow := .T. If ::aArray[ 1, 1 ] == Nil ARRDEL_( ::aArray[ 1 ], 1 ) EndIf EndIf ... Проверять удаление последней записи и др. валидности за тебя никто делать не будет.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 966
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.04.16 13:39. Заголовок: Andrey пишет:Работаю..
Andrey пишет: Ты работаешь\используешь TsBrowse, а не SetArrayTo(), SetArray(), SetFields() - это методы установки начальных данных для работы TsBrowse, чем отличаются можно глянуть текст, для ясности в голове, что и как применять, а то складывается впечатление и примеров много сделал, а суть (откуда ноги растут) пропустил
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4887
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.04.16 15:18. Заголовок: SergKis пишет: а то..
SergKis пишет: цитата: | а то складывается впечатление и примеров много сделал, а суть (откуда ноги растут) пропустил |
| Это точно !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 967
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.04.16 16:22. Заголовок: Andrey пишет:Это точ..
Andrey пишет: Надеюсь ты увидел в приведенном куске текста ::lPhantArrRow := .T. можешь для массива воспользоваться после вызова метода удаления If oBrw:lPhantArrRow // тек.\последняя\первая запись фантомная // тут дейсвия по закрытию TsBrowse EndIf Другой (общий) вариант задать oBrw:bDelete := {| nAt,oBr,lAll | lDeleteRec := .T., .T. } и в функции удаления делаем: Private lDeleteRec := .F. oBrw:DeleteRow() If lDeleteRec .and. Len(oBrw:aArray) == 1 // тут дейсвия по закрытию TsBrowse EndIf
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4888
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.04.16 20:07. Заголовок: SergKis , спасибо за..
SergKis , спасибо за разъяснения ! Понял куда двигаться !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 968
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.04.16 21:06. Заголовок: Andrey пишет:Понял к..
Andrey пишет: Тогда не забудь, что есть и oBrw:bPostDel := {|oBr| ... } и если в oBrw:bDelete обрабатывается логический возврат ( при .F. отменяется удаление), то bPostDel выполняется всегда после удаления. Устанавливать режим удаления желательно oBrw:SetDeleteMode( lOnOff, lConfirm, bDelete, bPostDel )
|
|
|
Haz
|
| |
Пост N: 917
Зарегистрирован: 20.02.11
|
|
Отправлено: 30.04.16 21:27. Заголовок: SergKis пишет: Тогд..
SergKis пишет: Ну все разжевал Тогда и я спрошу, вдруг мне так же повезет Как отловить событие изменения ширины колонки мышкой? Хочу автосохранение для пользователя сделать. Вчера озадачился не успел закончить. Отложил на послепраздники. Пока лезу через событие мыши - отпускание левой кнопки. Прямого признака колонки типа bHeightChange нет. Есть просто прорисовка вертикали vertline() Блок напрашивается туда, но пока хочу подобраться стандартными путями
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 969
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.04.16 22:26. Заголовок: Haz пишет: вдруг мне..
Haz пишет: повезло или нет, сам решай - протокол сообщений (вывод вставлен в TSBROWSE:HANDLEEVENT и TCONTROL:HANDLEEVENT): ... TSBROWSE:HANDLEEVENT 135 WM_GETDLGCOD TSBROWSE:HANDLEEVENT 513 WM_LBUTTONDO TCONTROL:HANDLEEVENT 513 WM_LBUTTONDO TSBROWSE:HANDLEEVENT 512 WM_MOUSEMOVE TCONTROL:HANDLEEVENT 512 WM_MOUSEMOVE ... TCONTROL:HANDLEEVENT 512 WM_MOUSEMOVE TSBROWSE:HANDLEEVENT 512 WM_MOUSEMOVE TCONTROL:HANDLEEVENT 512 WM_MOUSEMOVE TSBROWSE:HANDLEEVENT 514 WM_LBUTTONUP TCONTROL:HANDLEEVENT 514 WM_LBUTTONUP TSBROWSE:HANDLEEVENT 533 WM_CAPTURECHANGED // думаю это TCONTROL:HANDLEEVENT 533 WM_CAPTURECHANGED TSBROWSE:HANDLEEVENT 132 WM_NCHITTEST TCONTROL:HANDLEEVENT 132 WM_NCHITTEST
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 970
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.04.16 22:39. Заголовок: Haz На мой вхгляд м..
Haz На мой вхгляд мудришь, воспользуйся уже готовым METHOD Destroy() CLASS TSBrowse LOCAL i Default ::lDestroy := .F. If ::bDestroy != Nil Eval(::bDestroy, Self) EndIf т.е. при завершении работы с Tsb сохраняй размеры колонок (с кол-вом их), а перед созданием tsb, считывай, а в процессе работы пусть двигают колонки сколько хотят
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|