Форум » 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:....

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

Andrey: Для Харборовского TBrowseDB() я использовал подготовленный список полей, типа: {"NN", "DOGOVOR", "City->City", "Street->Street", и т.д.} // т.е. использовал SET RELATION TO xxxxxx {"№", "Договор", "Город", "Улица", и т.д.} А как подготовить(заполнить) функцию LoadFields( cBrw, ParentForm, lEdit, aPoleField) ?

Haz: Andrey пишет: City->City ИМХО это не прокатит если это подчиненная рабочая область ( не проверял но судя по коду не должно работать правильно )

Andrey: Haz пишет: ИМХО это не прокатит если это подчиненная рабочая область А как тогда сделать ?


Haz: Andrey пишет: А как тогда сделать добавить столбец которому назначить блок выборки записи из/в City->City. :bData := {|| IF(Pcount() = 0, City->City, City->City := x )}

Andrey: А по исходнику есть: METHOD LoadRelated( cAlias, lEditable, aNames, aHeaders ) CLASS TSBrowse Только как прикрутить не знаю ?

Haz: Судя по исходнику должно вызываться явно oBrw:LoadRelated(.... ) Добавляет в бровс колонки с блоком выборки из указанной рабочей области Andrey пишет: Только как прикрутить не знаю что именно не понятно в вызове LoadRelated( cAlias, lEditable, aNames, aHeaders ) ?

Andrey: Haz пишет: что именно не понятно в вызове LoadRelated( cAlias, lEditable, aNames, aHeaders ) ? Синтаксис. Методом проб и ошибок получилось: &cBrw:LoadRelated( "Sity", lEdit, {"Sity"}, {"Город"} ) А как это поле вставить в определённую колонку ? Можно ли уже в сформировавшемся TBROWSE функцией LoadFields( cBrw, ParentForm, lEdit, aPoleField) заменить на мою колону LoadRelated() ?

Haz: LoadRelated - не заменяет, а добавляет через ::AddColumn( TSColumn():New() т.е. вместо - никак нужно использовать :DelColumn() и :InsColumn() руками или просто в нужной колонке отредактировать блок выборки записи на нужный

Andrey: Можно таблицу формировать и так: {"NN", "DOGOVOR", "City->City", "Street->Street", "FIO", и т.д.} // т.е. использовал SET RELATION TO xxxxxx {"№", "Договор", "Город", "Улица", "ФИО абонента",и т.д.} // -------------- запишим значения в объект TsBrowse ------------- For nI := 1 to Len(aPoleField) IF AT("->",aPoleField[nI]) > 0 cStr := ALLTRIM(aPoleField[nI]) cAlias:= SUBSTR(cStr,1, AT("->",cStr)-1) cPole := SUBSTR(cStr, AT("->",cStr)+2) &cBrw:LoadRelated( cAlias, lEdit, { cPole }, { aPoleName[nI] } ) ELSE &cBrw:LoadRelated( ALIAS(), lEdit, { aPoleField[nI]}, { aPoleName[nI] } ) ENDIF &cBrw:aColumns[nI]:cHeading := aPoleName[nI] &cBrw:aColumns[nI]:cPicture := aPolePict[nI] &cBrw:aColumns[nI]:nAlign := aPoleAlign[nI] &cBrw:SetColSize(nI,aPoleSize[nI]) Next Работает !!!

Andrey: Как изменить шрифт редактирования поля ? У себя в программе так: &cBrw:ChangeFont( aFont[ 1 ], , 1 ) &cBrw:ChangeFont( aFont[ 2 ], , 2 ) &cBrw:ChangeFont( aFont[ 3 ], , 3 ) &cBrw:ChangeFont( aFont[ 4 ], , 4 ) &cBrw:ChangeFont( aFont[ 5 ], , 5 ) // ? 5 шрифт завел для редактирования

Haz: попробуй так obrw:aColumns[n]:hFontEdit := aFont[5]

Andrey: Haz пишет: попробуй так Получилось !!! Спасибо !!! А курсор как огрызок. Такой должен быть ?

Haz: Andrey пишет: А курсор как огрызок. не знаю, надо :oEdit ковырять

Andrey: А как редактировать ПОЛЕ при многопользовательском режиме ???? Там же сначала нужно блокировать запись, а потом редактировать, а потом снимать блокировку ! Или TBROWSE сам это делает ?

Haz: Andrey пишет: Или TBROWSE сам это делает делает в методе :PostEdit по умолчанию, PS. вообще блокировка записи это для ленивых еще в clipper делал обработку ошибки "требуется блокировка" - как блокировку и повтор операции , если блокировать не удавалось - сообщение что нужно подождать и опять повтор или отказ. После этого забыл что такое Rlock() Сейчас не пользую т.к. работаю с ADS через SQL запросы и блокировка теперь это проблема ADS сервера

Andrey: Всем доброй ночи ! Подскажите пожалуйста про такую вещь... У меня в TBROWSE сделано так: // обработка нажатий клавиш, включая ENTER &cBrw2:bKeyDown := { | nKey , nFalgs| nRetCode := MyKeyAction(nKey,cBrw2, cParent, 0, nFalgs) } // Двойной клик мышки на МАРКЕРЕ &cBrw2:bLDblClick:= { || nRetCode := MyAction(cBrw2, cParent) } А функция обработки мышки и ENTER такая: ////////////////////////////////////////////////////////////////////////////// STATIC FUNCTION MyAction(oBrw, cParent ) LOCAL cText, nRet := 0 /*cText := "Здесь будет карточка !" + CRLF + CRLF cText += "Line: " + STR(oBrw_5:nLastPos) + CRLF + CRLF cText += "Cell: " + STR(oBrw_5:nCell) + CRLF + CRLF cText += "RECNO(): " + STR(RECNO())+ CRLF + CRLF cText += "1(): " + STR(FIELDGET(FIELDNUM("KSTREET")))+ CRLF + CRLF cText += "2(): " + FIELDGET(FIELDNUM("STREET"))+ CRLF + CRLF MsgInfo(cText) */ nRet := FIELDGET(FIELDNUM("KSTREET")) // Как мне здесь закончить выбор из TBROWSE ???? // чтобы вернулось значение nRet Return nRet Достаточно ли поставить ThisWindow.Release ? или еще что-то нужно ставить ? И возврат значения возможен только через STATIC/PUBLIC переменную ? Хотелось бы через LOCAL переменную, я к ним привык....

Haz: Andrey пишет: Подскажите пожалуйста про такую вещь... Не совсем понял о чем речь

Andrey: Haz пишет: Не совсем понял о чем речь Andrey пишет: // Как мне здесь закончить выбор из TBROWSE ???? // чтобы вернулось значение nRet Т.е. нужно закрыть сам TBROWSE и окно на котором TBROWSE открывался. И вернуть значение nRet которое было выбрано в TBROWSE. Это обычный выбор из справочника (у меня в терминалке).

Haz: Andrey пишет: Т.е. нужно закрыть сам TBROWSE и окно понятно. Все правильно ... Выбор из Tbrowse запоминаем в переменной и ее возвращаем функцией которая создает окно и сам бровс. перед вызовом ThisWindow.Release эту переменную и назначаем ( эту переменную можно передавать в обработчик по ссылке - через @ )

Andrey: Haz пишет: ( эту переменную можно передавать в обработчик по ссылке - через @ ) Вот мой код: STATIC FUNCTION MyActionDim(oBrw, cParent ) LOCAL nRet := 0 nRet := FIELDGET(FIELDNUM("KCITY")) DoMethod( 'Form_Dim',"oBrw_5", "Release" ) Domethod("Form_Dim", "Release") Return nRet У меня всегда возврат 0 !! Я так понял что формы обе закрываются, а в этой функции - Return nRet - не возвращается ! Т.е. тогда нужно делать наверно так: nRetCode := 0 MyActionDim(oBrw, cParent, @nRetCode) MsgDebug( nRetCode ) STATIC FUNCTION MyActionDim(oBrw, cParent, nRet) nRet := FIELDGET(FIELDNUM("KCITY")) DoMethod( 'Form_Dim',"oBrw_5", "Release" ) Domethod("Form_Dim", "Release") Return NIL И везьде делать про ссылке передачу @nRetCode - правильно ?



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