Автор | Сообщение |
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
[только новые]
|
|
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()
|
|
|
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 - так и не нашел, тк не смог поймать пока это единственное первое событие
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1091
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.04.17 15:29. Заголовок: Haz Благодарю за ре..
Haz Благодарю за реальную помощь в этом вопросе! Haz пишет: цитата: | исключаем из обработки бровсом сообщения от спайнера |
| Принимается
|
|
|
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 задан, но не срабатывает в этой ситуации (так было)
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1094
Зарегистрирован: 11.02.10
|
|
Отправлено: 28.04.17 13:02. Заголовок: SergKis пишет: bLDb..
SergKis пишет: цитата: | bLDblClick задан, но не срабатывает в этой ситуации |
| Понимаю Вашу логику, но у автора библиотеки этот кодовый блок используется только для НЕ редактируемых TSBrowse Это явно следует из кода метода LDblClick
|
|
|
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 - это выбор строки для занесения данных в документ. В сегодняшней версии это затруднительно сделать простым способом
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 1428
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.04.17 13:41. Заголовок: PS правильно посылат..
PS правильно посылать надо oBr:PostMsg( WM_KEYDOWN, oBr:nFireKey, 0 )
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1095
Зарегистрирован: 11.02.10
|
|
Отправлено: 28.04.17 14:18. Заголовок: SergKis пишет: При ..
SergKis пишет: цитата: | При работе со справочниками это сплошь и рядом |
| Тогда принимается - Вам виднее Благодарю за дополнительное разъяснение
|
|
|
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 Больше никаких функций не использую...
|
|
|
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\ Все кажет норм !
|
|
|
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 } // проверка после ввода НЕ ПОМОГАЕТ !!!
|
|
|
|
Dima
|
| |
Пост N: 6414
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.05.17 18:45. Заголовок: Andrey пишет: По пр..
Andrey пишет: цитата: | По пробелу или по клику мышке ПЕРЕСТАЛ работать чекбокс после версии 16.11 ! |
| Долго же ты ждал пока понял что не пашет :)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5376
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.05.17 18:56. Заголовок: Dima пишет: Долго ж..
Dima пишет: цитата: | Долго же ты ждал пока понял что не пашет :) |
| Да это не главное меню в программе. Редко кто пользуется. Вот и обнаружил с таким промежутком времени. Попробую проверить другие версии...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5377
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.05.17 19:14. Заголовок: Проверил. В версии 1..
Проверил. В версии 17.02 работает, а в 17.03 - уже не отображает чекбокс. Т.е. - по пробелу или по клику мышке ПЕРЕСТАЛ работать чекбокс после версии 17.02 ! Что нужно мне добавить в свой код чтобы по клику мышки стал отображаться чекбокс ? Использую сразу ДВА бровса на одном окне.
|
|
|
Dima
|
| |
Пост N: 6415
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.05.17 19:46. Заголовок: Andrey пишет: Т.е. ..
Andrey пишет: цитата: | Т.е. - по пробелу или по клику мышке ПЕРЕСТАЛ работать чекбокс после версии 17.02 |
| Так это не чекбокс по ходу а просто BMP как и на другом бровсе в твоем скрине
|
|
|
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 } |
|
|
|
|
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 }
|
|
|
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 Что-то в коде нужно добавить ?
|
|
|
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 - работает, а в других уже НЕТ !!! Что там докрутить/исправить нужно, чтобы заработало ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 5383
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.05.17 21:39. Заголовок: Разобрался сам... Ок..
Разобрался сам... Оказывается если нет такого пути к файлу, то Ексель и не создаёт и не открывает его ! Григорий, там можно в исходниках поставить проверку на создания по пути файла ?
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|