On-line: Andrey, 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 [только новые]


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




Пост N: 1097
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.04.17 14:43. Заголовок: Поправлюсь не закоме..


Поправлюсь
не закоментить KillFoсus а нооборот показать добавив ниже
case nNotifyCode == EN_SETFOCUS
::SetFocus()

Пока все что выяснил - При нажатии какой-либо стрелки спина он посылает родительскому окну сообщение WM_VSCROLL. а родительским заявлено окно бровса и это заставляет бровс бегать по записям. Можно попробовать использовать флаг ::lDontChange , который учитывать при обработке событий в TSBrowse:HandleEvent() , можно попробовать в событиях просто фильтрануть lParam в котором будет передан дескриптор спина ( он определяется как ::hWndChild в METHOD TBtnBox:New() но в нем и хоронится и никуда не передается )
На скорую руку попробовал , частично помогает , но при выходе из режима редактирования чтото уперто сдвигает указатель на ::GoTop()



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




Пост N: 1098
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 25.04.17 15:04. Заголовок: Григорий По поводу..


Григорий
По поводу спиннера и дергания записей
это частично решает проблему ( просто фильтруем в бровсе сообщения от спеннера)
 
* ============================================================================
* METHOD TSBrowse:HandleEvent() Version 9.0 Nov/30/2009
* ============================================================================

METHOD HandleEvent( nMsg, nWParam, nLParam ) CLASS TSBrowse

#ifdef __HARBOUR__
ElseIf nMsg == WM_KEYUP
Return ::KeyUp( nWParam, nLParam )
ElseIf nMsg == WM_VSCROLL
If ::lDontchange
Return Nil
EndIf
if nLParam == 0
Return ::VScroll( Loword( nWParam ), HiWord( nWParam ) )
endif
#EndIf


т.е. исключаем из обработки бровсом сооющения от спенера, но пока частично решает
при первом клике в колонке со спином и выходе из редактирования запись улетает на GoTop() потом сколько не редактируй и не кликай по спину - все ОК
скорее всего после первого редактирования выставляется какой нить внутренний флаг и потом его обрабатывает правильно
что переводит запись в GoTop - так и не нашел, тк не смог поймать пока это единственное первое событие


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




Пост N: 1091
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.04.17 15:29. Заголовок: Haz Благодарю за ре..


Haz
Благодарю за реальную помощь в этом вопросе!

Haz пишет:

 цитата:
исключаем из обработки бровсом сообщения от спайнера


Принимается

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




Пост N: 1425
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.04.17 12:14. Заголовок: gfilatov2002 METHO..


gfilatov2002
 
METHOD LDblClick( nRowPix, nColPix, nKeyFlags ) CLASS TSBrowse
...
If ( nClickRow == ::nRowPos .and. nClickRow > 0 ) .or. ( nClickRow == ::nRowPos .and. ! ::lDrawHeaders )

If ::lCellBrw .and. ::IsEditable( nCol )

::nColSpecHd := 0
If ValType( Eval( ::aColumns[ nCol ]:bData ) ) == "L" .and. ;
::aColumns[ nCol ]:lCheckBox // virtual checkbox
::PostMsg( WM_CHAR, VK_SPACE, 0 )
ElseIf ::aColumns[ nCol ]:oEdit != Nil
::PostMsg( WM_KEYDOWN, VK_RETURN, 0 )
ElseIf ::bLDblClick != Nil
Eval( ::bLDblClick, uPar1, uPar2, nKeyFlags, Self )

Else
::PostMsg( WM_KEYDOWN, VK_RETURN, 0 )
EndIf
...

по мне, так правильнее будет.
bLDblClick задан, но не срабатывает в этой ситуации (так было)

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




Пост N: 1094
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.04.17 13:02. Заголовок: SergKis пишет: bLDb..


SergKis пишет:

 цитата:
bLDblClick задан, но не срабатывает в этой ситуации


Понимаю Вашу логику, но у автора библиотеки этот кодовый блок используется только для НЕ редактируемых TSBrowse
Это явно следует из кода метода LDblClick


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




Пост N: 1427
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.04.17 13:40. Заголовок: gfilatov2002 пишет ..


gfilatov2002 пишет
 цитата:
но у автора библиотеки этот кодовый блок используется только для НЕ редактируемых


Мне кажется, у автора не до конца продумано.
При наличии :nFireKey посылать надо oBr:PostMsg( WM_KEYDOWN, VK_F4, 0 ) а не VK_RETURN
К примеру edit включаем VK_F4 ( :nFireKey := VK_F4 ), а VK_RTUEN назначить надо выбор строки.
При работе со справочниками это сплошь и рядом - на окне где ТОЛЬКО справочник VK_RETURN может включать edit,
а в вызове справочника (GrtBox) для выбора из списка (все операции по ведению спр. присутствуют) - VK_ENTER\bDblClick - это выбор строки для занесения данных в документ. В сегодняшней версии это затруднительно сделать простым способом

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




Пост N: 1428
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.04.17 13:41. Заголовок: PS правильно посылат..


PS
правильно посылать надо oBr:PostMsg( WM_KEYDOWN, oBr:nFireKey, 0 )

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




Пост N: 1095
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 28.04.17 14:18. Заголовок: SergKis пишет: При ..


SergKis пишет:

 цитата:
При работе со справочниками это сплошь и рядом


Тогда принимается - Вам виднее
Благодарю за дополнительное разъяснение

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




Пост N: 5374
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.05.17 18:00. Заголовок: Что то перестал отоб..


Что то перестал отображаться чекбокс в Tsbrowse.
Версия MiniGUI Extended Edition 16.11 - работает отлично !
Версия MiniGUI Extended Edition 17.04 - не отображает....

Вот скрин экрана:


Мышкой по чекбоксу кликаешь - нет отображения...

Что там нужно доп. сделать у себя в коде чтобы отображалась ?

В коде создаю колонку так:
 // создать 3-ю колонку  
ADD COLUMN TO oBrw2 HEADER "Печать"+CRLF+"в таблице" ;
DATA FieldWBlock( "VIEW", Select() ) ;
......
oBrw2:aColumns[3]:bPrevEdit := {|| HeadCheckField(), FALSE } // проверка до ввода

В функции HeadCheckField() в конце обработки ставлю:
   oBrw1:Reset()  
oBrw1:Refresh(.T.)
oBrw2:Refresh(.T.)
RETURN NIL

Больше никаких функций не использую...


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




Пост N: 6413
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.05.17 18:05. Заголовок: Andrey пишет: Верси..


Andrey пишет:

 цитата:
Версия MiniGUI Extended Edition 17.04 - не отображает....


Чеканул пример C:\MiniGUI\SAMPLES\Advanced\Tsb_array_2\
Все кажет норм !

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




Пост N: 5375
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.05.17 18:19. Заголовок: Dima пишет: Чеканул..


Dima пишет:

 цитата:
Чеканул пример C:\MiniGUI\SAMPLES\Advanced\Tsb_array_2\
Все кажет норм !


Там по другому создаётся бровс.
У меня конкретно в версии 16.11 работает, а в 17.04 - не отображает чекбокс.
Что там сделали в исходниках я не знаю, но правка была же, если перестало работать !
По пробелу или по клику мышке ПЕРЕСТАЛ работать чекбокс после версии 16.11 !
Может быть из-за того что использую сразу ДВА бровса ?

Как можно перерисовать конкретно 3 колонку после ввода ?
Поможет ли это ?
Попробовал поставить -
oBrw2:aColumns[3]:bPostEdit := {|| oBrw2:DrawSelect(), FALSE } // проверка после ввода
НЕ ПОМОГАЕТ !!!

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




Пост N: 6414
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.05.17 18:45. Заголовок: Andrey пишет: По пр..


Andrey пишет:

 цитата:
По пробелу или по клику мышке ПЕРЕСТАЛ работать чекбокс после версии 16.11 !


Долго же ты ждал пока понял что не пашет :)

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




Пост N: 5376
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.05.17 18:56. Заголовок: Dima пишет: Долго ж..


Dima пишет:

 цитата:
Долго же ты ждал пока понял что не пашет :)


Да это не главное меню в программе. Редко кто пользуется. Вот и обнаружил с таким промежутком времени.
Попробую проверить другие версии...


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




Пост N: 5377
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.05.17 19:14. Заголовок: Проверил. В версии 1..


Проверил. В версии 17.02 работает, а в 17.03 - уже не отображает чекбокс.
Т.е. - по пробелу или по клику мышке ПЕРЕСТАЛ работать чекбокс после версии 17.02 !
Что нужно мне добавить в свой код чтобы по клику мышки стал отображаться чекбокс ?
Использую сразу ДВА бровса на одном окне.

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




Пост N: 6415
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 07.05.17 19:46. Заголовок: Andrey пишет: Т.е. ..


Andrey пишет:

 цитата:
Т.е. - по пробелу или по клику мышке ПЕРЕСТАЛ работать чекбокс после версии 17.02


Так это не чекбокс по ходу а просто BMP как и на другом бровсе в твоем скрине

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




Пост N: 1096
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 07.05.17 20:02. Заголовок: Andrey пишет: oBrw2..


Andrey пишет:

 цитата:
oBrw2:aColumns[3]:bPrevEdit := {|| HeadCheckField(), FALSE } // проверка до ввода


Попробуй изменить это кодовый блок таким образом

 цитата:
oBrw2:aColumns[3]:bPrevEdit := {|| HeadCheckField(), TRUE }



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




Пост N: 5378
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.05.17 21:13. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:

Попробуй изменить это кодовый блок таким образом



Так заработало ! Спасибо большое !

Хотя если только ОДИН бровс, то работает и со старым синтаксисом.
Смотри пример Tsb_composite_(1.2).7z который я высылал...
Там в 3х местах используется:
         oBrw1:aColumns[3]:bPrevEdit := {|| FieldCheckBoxEdit(), FALSE }   
oBrw1:aColumns[4]:bPrevEdit := {|| FieldCheckBoxEdit(), FALSE }
oBrw1:aColumns[5]:bPrevEdit := {|| FieldCheckBoxEdit(), FALSE }



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




Пост N: 5379
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 07.05.17 21:45. Заголовок: Ха, в версии 17.04 п..


Ха, в версии 17.03 и выше перестал работать пример Tsb_composite_(1.2).7z - там где выбор флагов производиться...
Один раз выбрать можно, на втором - программа НАГЛУХО ВИСНЕТ !!!
Вот сам проект - https://cloud.mail.ru/public/2SXc/UtNfso4gf
Что-то в коде нужно добавить ?

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




Пост N: 5380
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.05.17 19:56. Заголовок: Опять непонятка в ра..


Опять непонятка в работе функций....
Григорий, проект у тебя есть - Send2Mail.hbp
Там вызов функции в модуле Tsb_send.prg строка:
    oBrw:Excel2(cFile, lActivate, NIL, "_"+Space(70)+Form_0.Title, lSave )

Версия 17.02 - работает, а в других уже НЕТ !!!
Что там докрутить/исправить нужно, чтобы заработало ?

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




Пост N: 5383
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.05.17 21:39. Заголовок: Разобрался сам... Ок..


Разобрался сам... Оказывается если нет такого пути к файлу, то Ексель и не создаёт и не открывает его !

Григорий, там можно в исходниках поставить проверку на создания по пути файла ?

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