Форум » GUI » TsBrowse в Минигуи (продолжение) » Ответить

TsBrowse в Минигуи (продолжение)

Vlad04: TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру [quote] 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 [/quote] Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Andrey: Григорий написал мне что: [pre2]Вы используете команду SET RELATION TO ПО ПЕРВОМУ ИНДЕКСУ базы справочника, а когда вызываете окно выбора из справочника, то переключаете индекс этой базы на 2 для сортировки по имени. Естественно, что связанное поле в основном бровсе сразу отображает первую строку из базы справочника, ведь индекс теперь сбит. [/pre2] Теперь стало понятно такое поведение. На терминалке такого не было ! Попробовал очищать SET RELATION TO на Основной базе ПЕРЕД вызовом справочника - не помогает... Сделал вызов справочника по 1-ому индексу - та же беда ! 1-я запись справочника перепрыгивает в текущую запись основной таблицы !!! Как исправить этот глюк ?

Andrey: Ещё заметил. Если есть 1-ый столбец по индексу и запись в основной таблице стоит на 2-ой записи - №№=2 [pre2] ADD COLUMN TO oBrwV HEADER "№№" ; DATA {|| OrdKeyNo() } ;[/pre2] то после показа справочника 2-ка превращается в 1, т.е. №№=1 и в таблице 2 значения с 1 ! Вот экран: Наверное каким то волшебным образом перерисовывается Основная таблица ?

Dima: Andrey пишет: Теперь стало понятно такое поведение. На терминалке такого не было ! Да не было на терминалке. Открывай нужные базы несколько раз. Например справочник у тебя завязан на Relation , и есть момент когда ты его вызываешь в бровсе , так вот в этом месте юзай другой алиас этого же справочника.


Andrey: Dima пишет: Открывай нужные базы несколько раз. У меня при старте задачи открываются ВСЕ базы. Повторное открытие не использую. Наверное буду убирать SET RELATION. Из-за него наверное ошибка. Хотя может и не в нём... Благо в Tsbrowse можно легко подсунуть функцию в столбец. Это будет проще. Спасибо всем за помощь !

Dima: Andrey пишет: Повторное открытие не использую. А придется. Я тоже не использовал но пришлось. Дело не в SET RELATION , уверен , ты налезешь на те же грабли и без него. Допустим у тебя есть справочник GROUP , данные из него и показывай в основном бровсе а вот если хочешь показать сам справочник , поверх основной таблицы , то открой его повторно , скажем с алиас TMP_GROUP и ходи по нему в справочнике да и основная таблица не пострадает Решать тебе , просто я нарывался на такие же косяки и мне подсказали как надо сделать. А подход у меня был такой же как у тебя в терминалке.

Andrey: Понял ! Спасибо ! Чтобы добиться работы без открытия дубля базы, переделал свой тестовый пример, сделал без SET RELATION. Теперь уже работает, но тоже как то НЕПОНЯТНО !!! Становиться всё интересней.... Запись из Основной таблицы перескакивает в Справочник, т.е. справочник открывается не с 1-ой записи базы по индексу, а по условию записи из Основной базы. Вот скрин до выбора справочника: Вот скрин при показе справочника: Если посмотреть, то с другой стороны - классно получилось, юзеру даётся список с той улицы на которой стоит Основная база. Так и оставлю ! Это лучший вариант ! Тем более навигация по справочнику работает, буквы и цифры ставят фильтр. Больше юзеру и не надо !

Dima: Andrey пишет: буквы и цифры ставят фильтр Тут тоже можешь поймать сам знаешь что. Попробуй с дублем базы и "косяки" уйдут Andrey пишет: Больше юзеру и не надо ! Бедные юзера....

Andrey: Dima пишет: Попробуй с дублем базы и "косяки" уйдут Это не путь Рыцаря-джедая ... Убрал свой косяк, открывается справочник теперь нормально ! Потестил, всё отлично !

Dima: Andrey пишет: Убрал свой косяк, открывается справочник теперь нормально ! Ждем новый

Andrey: SergKis пишет: Ты хочешь управлять METHOD KeyChar(...) на самом деле и тогда, вероятно, надо делать, добавив переменную в класс DATA bKeyChar METHOD KeyChar( nKey, nFlags ) CLASS TSBrowse ... Default ::nUserKey := nKey IF ::bKeyChar != Nil .and. !Empty( EVal( ::bKeyChar, Key, Self, nFlag ) RETURN 0 ENDIF If ::nUserKey == 255 .or. ::lNoKeyChar // from KeyDown() method Return 0 EndIf Да, так будет удобней. Блокировать столбцы на цифры/буквы обязательно надо ! Желательно отдельно - вот так: [pre2] oBrw:aColumns[nI]:lNoKeyChar := .F.[/pre2] Тогда всем будет понятно. А то вот при нажатии цифр на колонке флагов - вот что получается:

SergKis: Andrey пишет oBrw:aColumns[nI]:lNoKeyChar := .F. задавать надо будет так oBrw:bKeyChar := {|ky,ob| ky := ob, ! hb_ntos(ob:nCell) $ '5,7,9' } т.е. для колонок 5,7,9 делаем edit от букв\цифр, для других нет. .T. - не делаем edit .F. - вкл. edit для колонки или oBrw:bKeyChar := {|ky,ob| ky := ob:aColumns[ ob:nCell ]:cName, ky $ 'NAME1,NAME2,NAME3' } для этих колонок вкл. edit, для др. нет

Andrey: Скачал со страницы сайта только что новую версию. Для своего примера установил: [pre2] oBrw1:bKeyChar := {|ky,ob| ky := ob, ! hb_ntos(ob:nCell) $ '6,7,8' } [/pre2] Осталось без изменений. Редактирование есть. Вдобавок появилась ошибка на 2,3,4 колонке вылет из программы: Error BASE/1004 Метод не экспортирован: NCELL Called from NCELL(0) Called from (b)MYCREATETABLE(428) Called from TCONTROL:KEYCHAR(576) Called from TSBROWSE:KEYCHAR(6420) Called from TSBROWSE:HANDLEEVENT(7436) Called from EVENTS(81)

SergKis: Andrey пишет Вдобавок появилась ошибка на 2,3,4 колонке вылет из программы: С чего решил, что это есть ? Мы скорее фантазировали. Потому как, кто мешает написать oBrw1:bUserKeys := {|ky,flg,ob| ky := flg := ob, ! hb_ntos(ob:nCell) $ '6,7,8' } :bKeyChar, если ты решил заменить родной method KeyChar своим, что вряд ли надо. надо все решать в :bUserKeys

Andrey: SergKis пишет: Мы скорее фантазировали. Потому как, кто мешает написать oBrw1:bUserKeys := {|ky,flg,ob| ky := flg := ob, ! hb_ntos(ob:nCell) $ '6,7,8' } Да я не понял, что мы фантазировали... Поставил, вообще непонятки. Смотри результат у себя...

Andrey: Всем привет ! Как сменить редактирование колонки типа ДАТА на обычную цифровую ? А то юзерам не нравиться. [pre2] ADD COLUMN TO oBrw1 HEADER "Date" ; .............. DATA FIELDWBLOCK("FDATE", Select(cAlias)) ; PICTURE "99.99.9999" ; NAME FDATE ; EDITABLE[/pre2] Я понимаю, что можно самому написать функцию ввода в окошке. А стандартное - ввод цифр есть или нет ?

Haz: Andrey пишет: А стандартное - ввод цифр есть или нет ? [pre2] oBrw1:GetColumn("FDATE"):lPickerMode := FALSE [/pre2] а можно и Я понимаю, что можно самому написать функцию ввода в окошке.

Andrey: Haz пишет: oBrw1:GetColumn("FDATE"):lPickerMode := FALSE Ошибка при выполнении: Error BASE/1005 Message not found: TSCOLUMN:_LPICKERMODE Called from __ERRRT_SBASE(0) Called from TSCOLUMN:ERROR(0) Called from (b)HBOBJECT(0) Called from TSCOLUMN:MSGNOTFOUND(0) Called from TSCOLUMN:_LPICKERMODE(0) Called from MYCREATETABLE(331) Called from FORMTABLE(106)

Haz: Andrey пишет: Ошибка при выполнении: Да не углядел. Эта переменная не колонки а самого бровса oBrw:lPickermode Через пару минут дойду до компа гляну подробнее

Andrey: Haz пишет: Да не углядел. Эта переменная не колонки а самого бровса oBrw:lPickermode Через пару минут дойду до компа гляну подробнее Вот так работает - oBrw1:lPickerMode := .F. Спасибо !

Andrey: Рабочий пример работы c Tsbrowse выложен Григорием - http://hmgextended.com/files/MISC/Tsb_composite.zip Работает без ошибок с версии МиниГуи 17.07 и исправленной библиотеки tsbrowse.lib (в модуле h_tbrowse.prg)



полная версия страницы