On-line: i3t4j6, PSP, гостей 0. Всего: 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: 4862
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.04.16 19:22. Заголовок: Haz пишет: а oBrw:n..


Haz пишет:

 цитата:
а oBrw:nAt не подходит ?


А если добавляется/удаляется запись ?
Он автоматом пересчитывается ?

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




Пост N: 903
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.04.16 19:40. Заголовок: Andrey пишет: Он ав..


Andrey пишет:

 цитата:
Он автоматом пересчитывается ?



ХЗ попробуй

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


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




Пост N: 4865
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.04.16 20:50. Заголовок: Заметил такую особен..


Заметил такую особенность. Если есть первые скрытые столбцы, то при движение маркера/курсора на первые столбцы, он пропадает.
Юзер не видит курсор, у него паника....
Как исправить пропадание курсора из таблицы ?

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




Пост N: 906
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 23.04.16 23:11. Заголовок: Andrey пишет: Как и..


Andrey пишет:

 цитата:
Как исправить пропадание курсора из таблицы ?


Не использовать скрытые столбцы или менять исходники TS
я отказался от скрытых...

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




Пост N: 4867
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.04.16 18:12. Заголовок: Нашёл один вариант. ..


Нашёл один вариант. Если колонки скрытые стоят первыми, то можно делать так:
oBrwA:nFreeze := 3 // Заморозить первых ХХ столбца

И ещё тогда наверно можно скрытые колонки переместить в первые ряды и заморозить их.

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




Пост N: 907
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 24.04.16 21:36. Заголовок: Andrey пишет: Нашёл..


Andrey пишет:

 цитата:
Нашёл один вариант


зачем они вообще нужны если их скрыли, их лучше удалить . Потребуется - добавить
Удаляются ведь только колонки , поля в алиасе остаются

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



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


Дельное предложение! Принимается

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




Пост N: 4886
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.04.16 11:46. Заголовок: Привет всем ! Работ..


Привет всем !

Работаю с SetArrayTo(). В процессе удаляю все записи с таблицы. Одна всегда остаётся. И не редактируется.
Наверно это мираж-запись, чтобы SetArrayTo() не сломался.
Как определить что юзер удалил все записи из таблицы и закрыть таблицу ?
oBrw:nAt возвращает всегда 1.


Спасибо: 0 
Профиль
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()
или в самом массиве держать признак и анализировать его

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

Проверять удаление последней записи и др. валидности за тебя никто делать не будет.


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




Пост N: 966
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.04.16 13:39. Заголовок: Andrey пишет:Работаю..


Andrey пишет:
 цитата:
Работаю с SetArrayTo()


Ты работаешь\используешь TsBrowse, а не SetArrayTo(), SetArray(), SetFields() - это методы установки начальных данных для работы TsBrowse, чем отличаются можно глянуть текст, для ясности в голове, что и как применять, а то складывается впечатление и примеров много сделал, а суть (откуда ноги растут) пропустил

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




Пост N: 4887
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.04.16 15:18. Заголовок: SergKis пишет: а то..


SergKis пишет:

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


Это точно !

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



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




Пост N: 4888
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.04.16 20:07. Заголовок: SergKis , спасибо за..


SergKis , спасибо за разъяснения !
Понял куда двигаться !

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



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




Пост N: 917
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.04.16 21:27. Заголовок: SergKis пишет: Тогд..


SergKis пишет:

 цитата:
Тогда не забудь


Ну все разжевал
Тогда и я спрошу, вдруг мне так же повезет
Как отловить событие изменения ширины колонки мышкой?
Хочу автосохранение для пользователя сделать.
Вчера озадачился не успел закончить. Отложил на послепраздники.
Пока лезу через событие мыши - отпускание левой кнопки.
Прямого признака колонки типа bHeightChange нет. Есть просто прорисовка вертикали vertline()
Блок напрашивается туда, но пока хочу подобраться стандартными путями


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


Спасибо: 0 
Профиль
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, считывай, а в процессе работы пусть двигают колонки сколько хотят

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