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


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




Пост N: 918
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.04.16 22:56. Заголовок: SergKis пишет: Dest..


SergKis пишет:

 цитата:
Destroy()


Надо тестить сработает ли при закрытии парент окна. Мож проще будет на само окно повесить.
За идею спасибо

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




Пост N: 971
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.04.16 23:17. Заголовок: Haz пишет:сработает ..


Haz пишет:
 цитата:
сработает ли


Думаю да, т.к. переменные объекта существуют, метотоды доступны и destroy() - собственный метод

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




Пост N: 919
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 30.04.16 23:34. Заголовок: SergKis пишет: Дума..


SergKis пишет:

 цитата:
Думаю да, т.к. переменные объекта существуют, метотоды доступны и destroy() - собственный метод


у пользователей свои понятия, хлоп крестом на главном окне и и насрать на все методы.
Проверю,отпишусь ))
правильнее все же ловить непосредственно изменение , а не аварийно при закрытии.
в ТS есть все чтоб это поймать. Про Destroy() идея достойная, если не получится ловить процесс - использую ее



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




Пост N: 972
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.04.16 23:52. Заголовок: Haz пишет:у пользова..


Haz пишет:
 цитата:
у пользователей свои понятия, хлоп крестом на главном окне и и насрать на все методы


Используй ON INTERACTIVECLOSE <interactivecloseprocedure> , проверяя, наличие окон в _HMG_aFormNames, кроме майн и при наличии таковых, можно спросить о завершении или просто возвращать .F. - запрещая закрытие маин окна.

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




Пост N: 973
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.04.16 23:59. Заголовок: Haz при нажатии кре..


Haz
при нажатии креста в маин окне срабатывает ф-я ReleaseAllWindows()б а там цепочка WM_CLOSE, WM_DESTROY для контролов каждого окна, т.е. аварийного завершения нет, есть нормальное екстренное завершение всех окон.

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




Пост N: 920
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 01.05.16 00:09. Заголовок: SergKis пишет: ON I..


SergKis пишет:

 цитата:
ON INTERACTIVECLOSE


Сергей , да это все понятно. пока попытаюсь найти подход как узнать в процессе, а не бороться с последствиями.Ведь может быть и так - пользователь надвигал колонок под себя , уснул на ночь ( оставил задачу и сбежал домой ) и в это время запустились регламентные процедуры на серваке. Все висячие задачи срублены и с ними потеряны все настройки. У меня может паранойя , я и так протоколирую ВСЕ действия каждого пользователя по изменению данных, хочу еще и за настройками шпионить . А то иногда приходят умники , типа пол дня неразгибаясь работали и ничего не сохранено, Когда ему весь лог вываливаешь из которог следует что он в носу ковырял пол дня - вопросы сразу исчезают

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




Пост N: 974
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.16 00:20. Заголовок: Haz пищет:хочу еще и..


Haz пищет:
 цитата:
хочу еще и за настройками шпионить


пробни тогда, мне тоже интересно (из протокола выше) что выйдет.
TSBROWSE:HANDLEEVENT 514 WM_LBUTTONUP
TCONTROL:HANDLEEVENT 514 WM_LBUTTONUP
TSBROWSE:HANDLEEVENT 533 WM_CAPTURECHANGED // думаю это
TCONTROL:HANDLEEVENT 533 WM_CAPTURECHANGED

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




Пост N: 921
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 01.05.16 00:20. Заголовок: SergKis пишет: проб..


SergKis пишет:

 цитата:
пробни тогда, мне тоже интересно (из протокола выше) что выйдет.


договорились

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




Пост N: 975
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.16 00:41. Заголовок: Haz пишет:договорили..


Haz пишет:
 цитата:
договорились


Но в реальности это столько мусора будет в логах ... может все таки кнопку (меню) для перевода в режим настройки (отключив др. режимы) и повторное нажатие для возврата в нормальный режим (сохранив настройки). тогда в журнале переход в настройки и завершение (ели было). я бы как то так шел.

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




Пост N: 922
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 01.05.16 11:38. Заголовок: SergKis пишет: На м..


SergKis пишет:

 цитата:
На мой вхгляд мудришь, воспользуйся уже готовым

METHOD Destroy() CLASS TSBrowse
LOCAL i

Default ::lDestroy := .F.

If ::bDestroy != Nil
Eval(::bDestroy, Self)
EndIf




Где ты это нашел
взял последний MG там и в помине нет bDestroy

Или это было предложение поменять исходник ?

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




Пост N: 976
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.16 11:56. Заголовок: Haz пишет:Где ты это..


Haz пишет:
 цитата:
Где ты это нашел


Так в своей версии hmg, но уже так сроднился и забыл, что сам вставлял

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




Пост N: 923
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 01.05.16 11:59. Заголовок: SergKis пишет: Так ..


SergKis пишет:

 цитата:
Так в своей версии hmg, но уже так сроднился и забыл, что сам вставлял


Как ты обновляешь MG этож надо незабыть все с чем сроднился )))

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




Пост N: 977
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 01.05.16 12:09. Заголовок: Haz пишет:надо незаб..


Haz пишет:
 цитата:
надо незабыть все с чем сроднился


Ты прав, надо и в принципе у меня у переменных класса отмечено (в destroy() пропустил повторно)
 
DATA bDestroy // BK 14.02.2015
DATA lKeyChar AS LOGICAL INIT .F. // BK .F. - KeyChar(...) execute отключение
...
METHOD KeyChar( nKey, nFlags ) CLASS TSBrowse
...
If ! ::lKeyChar // BK
Return 0

ElseIf ::nUserKey == 255 // from KeyDown() method
Return 0
EndIf
...


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




Пост N: 4889
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.05.16 16:25. Заголовок: Haz пишет: я и так ..


Haz пишет:

 цитата:
я и так протоколирую ВСЕ действия каждого пользователя по изменению данных, хочу еще и за настройками шпионить


Поправь исходники MiniGUI\SAMPLES\Advanced\Tsb_config, как себе сделаешь.
Там я тоже делаю (Григорий помогал) сохранение колонок, шрифтов и размеров, но это давно было уже...
Всем интересно будет знать - как правильно работать с Tsbrowse !


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




Пост N: 978
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.05.16 13:57. Заголовок: Григорий, предложени..


Григорий, предложение по методу DeleteRow, сейчас он возвращает Self, а сделать надо возврат логический, тогда упроститься использования в простых ситуациях. Скрытый текст

Использование
If oBrw:DeleteRow()
...
EndIf

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




Пост N: 936
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 02.05.16 22:27. Заголовок: SergKis пишет: сдел..


SergKis пишет:

 цитата:
сделать надо возврат логический


Не вопрос, конечно, сделаю, если это полезно для работы с этим методом

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




Пост N: 924
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.05.16 13:03. Заголовок: Haz пишет: Как отло..


Haz пишет:

 цитата:
Как отловить событие изменения ширины колонки мышкой?


Вобщем подобраться стандартными средствами удалось только через событие отпускания левой мыши с анализом позиции курсора ( в заголовке и какая колонка ).
При этом есть погрешность позиции по горизонтали примерно в 10 пикселей, т.к. курсор WS имеет граничные допуски. Потестировал - не понравилось т.к. все же через событие мыши это не правильно. Все остальные попытки так или иначе требуют изменения исходников, поэтому решил если менять то менять правильно и адресно.
в TsBrowse.prg добавил
 

DATA bLineDrag
DATA bColDrag



и их обработку
 
:12077
If nColPixPos == Nil .and. nColInit == Nil // We have finish draging
::aColSizes[ nsCol ] -= ( nsWidth - nsOldPixPos )
::aColumns[ nsCol ]:nWidth -= ( nsWidth - nsOldPixPos )
::Refresh()

if ValType(::bLineDrag) == "B"
Eval( ::bLineDrag, nsCol, ( nsOldPixPos - nsWidth) )
end

EndIf


 
:6986
// we gotta be on header row within listbox and not same colm
If nClickRow == 0 .or. nClickRow == -2
if nColPix > ::nLeft .and. ::nDragCol != nDestCol

If ::lMoveCols
::MoveColumn( ::nDragCol, nDestCol )
Else
::Exchange( ::nDragCol, nDestCol )
EndIf

if ValType(::bColDrag) == "B"
Eval(::bColDrag, nDestCol, ::nDragCol )
end

elseif ::nDragCol = nDestCol
If ::aColumns[ nDestCol ]:bHLClicked != Nil
::DrawHeaders()
Eval( ::aColumns[ nDestCol ]:bHLClicked, nRowPix, nColPix, ::nAt, Self )
::DrawHeaders()
EndIf
Endif
EndIf
EndIf
EndIf



Теперь события изменения ширины колонки и перетаскивания колонки ловятся элементарно и автосохранение позиций и ширин делается тоже элементарно
 
oBrw:bLineDrag := {|a,b| MsgDebug(oBrw:GetColumn(a):cName, b)} // где a - номер колонки в которой изменили ширину, b -на сколько изменили
oBrw:bColDrag := {|a,b| MsgDebug(oBrw:GetColumn(a):cName, b, a)} // где a - новый номер колонки которую перетащили , b - старый номер


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




Пост N: 979
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 03.05.16 15:49. Заголовок: Haz просьба добавит..


Haz
просьба добавить Self в вызов блоков кода
Eval( ::bLineDrag, nsCol, ( nsOldPixPos - nsWidth), Self )
Eval(::bColDrag, nDestCol, ::nDragCol, Self )

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




Пост N: 925
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 03.05.16 18:11. Заголовок: SergKis пишет: прос..


SergKis пишет:

 цитата:
просьба добавить Self в вызов блоков кода


я то добавлю, не вопрос
Ждем что Григорий скажет

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




Пост N: 937
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.05.16 18:33. Заголовок: Haz пишет: что Григ..


Haz пишет:

 цитата:
что Григорий скажет


Благодарю за помощь
Конечно, я добавил обработку этих 2-х кодовых блоков в класс TsBrowse.
Еще бы не помешал небольшой пример их использования...

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