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

Haz: Andrey пишет: Как мне сделать редактирование ТОЛЬКО первой колонки ("Код") ТОЛЬКО по клавише F10 ? F10 завязана на Sysmenu окна и по умолчанию бровсом не перехватывается. Разбираться как отучить не стал а на F9 - нет ничего проще oBrw:nFireKey := VK_F9 oBrw:bUserKeys := { |a,b,c| KeyPressed(a,b,c) } FUNC KeyPressed( nKey, nFlag, oBrw ) LOCAL xRet := nKey IF nKey == VK_RETURN .OR. nKey == oBrw:nFireKey .AND. oBrw:nCell > (IF(oBrw:lSelector, 2, 1)) xRet := .F. END RETURN xRet

Andrey: Haz пишет: нет ничего проще Не совсем получается. При обработке первой колонки по F9 попадаю в обработку 1-ой колонки. А остальные колонки - становятся закрытыми !!! Что-то не так делаю ? Исправленный пример там же.

Haz: Andrey пишет: Не совсем получается. При обработке первой колонки по F9 попадаю в обработку 1-ой колонки. А остальные колонки - становятся закрытыми !!! Сам же хотел ТОЛЬКО первую и ТОЛЬКО по F Или остальные как обычно должны ? Тогда подправь условие KeyPressed() - там всего 3 строки кода PS. IF nKey == VK_RETURN .AND. oBrw:nCell == (IF(oBrw:lSelector, 2, 1)) .OR. nKey == oBrw:nFireKey .AND. oBrw:nCell > (IF(oBrw:lSelector, 2, 1))


Andrey: Haz пишет: там всего 3 строки кода Понял, разобрался. А как все-таки получить в функции MyEditPole() координаты курсора/маркера ? MsgDebug( "Right=", oBrw:aColumns[oBrw:nCell]:oEdit:nRight, "Left=", oBrw:aColumns[oBrw:nCell]:oEdit:nLeft ) Выдает ошибку : Error BASE/1004 Метод не экспортирован: NRIGHT

Haz: Andrey пишет: А как все-таки получить в функции MyEditPole() координаты курсора/маркера ? Получить можно , но при выводе твоей подсказки "Нажмите ввод для сохранения" Get объект потеряет фокус и скорее всего редактирование завершится до Get можно добраться через блок oColumns:bEditing - этот блок выполняется ( если определен) когда GET создан.В него передается 2 параметра : If oCol:bEditing != Nil Eval( oCol:bEditing, uVar, Self ) EndIf т.е. значение ячейки и объект aColumn, координаты можно дернуть через oColumn:oEdit:nTop, oColumn:oEdit:nLeft. Но вот что с ними делать будешь ?

SergKis: Andrey пишет:А как все-таки получить в функции MyEditPole() координаты курсора/маркера ? попробуй отработать по GetBox (bWhen, bGotFocus, bValid): [pre2] // h := GetFocus() - на GotFocus и Valid можно, на When не помню, на Action // нельзя в фокусе будет Button Action, тут только через: h := GetControlHandle(_HMG_ThisControlName, _HMG_ThisFormName) i := aScan(_HMG_aControlHandles, h) IF i > 0 .and. _HMG_aControlType[ i ] == "GETBOX" nRow := GetWindowRow(h) // _HMG_aControlRow [ i ] nCol := GetWindowCol(h) // _HMG_aControlCol [ i ] nWidth := GetWindowWidth(h) // _HMG_aControlWidth [ i ] nHeight := GetWindowHeight(h) // _HMG_aControlHeight[ i ] oGet := _HMG_aControlHeadClick[ i ] uValue := oGetVarGet() // значение получить ... oGet:VarPut(uValue) // значение записать ENDIF[/pre2] т.е. Label создать в bWhen, убрать в bLoctFocus или bValid

Andrey: Имею вот такую таблицу. Хочу раскрасить её по строкам, коме 3 и 4 колонки. Цвета текста содержатся в 3-ей колонке, а цвет фона в 4-ой колонке. Массив aStColorUsl равен: { 1, 'Цвет текста/фона удаленных записей' , CLR_HGRAY , CLR_BLACK , 0 } { 2, 'Цвет текста/фона столбца "Код" = 0' , 255 , MyRGB({235,117,123}) , 0 } { 3, 'Цвет столбца "Наименование события" пустое' , 128 , MyRGB({235,117,123}) , 0 } { 4, 'Цвет текста/фона столбца "Код" = 1' , CLR_WHITE , CLR_GRAY , 1 } { 5, 'Цвет текста/фона столбца "Код" = 2' , CLR_YELLOW , CLR_GRAY , 1 } { 6, 'Цвет текста/фона столбца "Код" = 3' , CLR_RED , CLR_GRAY , 1 } { 7, 'Цвет текста/фона столбца "Код" = 4' , CLR_HGRAY , CLR_GRAY , 1 } { 8, 'Цвет текста/фона столбца "Код" = 5' , CLR_BLUE , CLR_GRAY , 1 } { 9, 'Остальные цвета ' , CLR_BLACK , CLR_GRAY , 1 } Как мне рас красить таблицу по строкам ? FOR nJ := 1 TO LEN(aStColorUsl) // массив цвета по условию nTextColor := aStColorUsl[nJ,3] // цвет текста nBackColor := aStColorUsl[nJ,4] // цвет фона oBrw_2:Setcolor( { 1 }, { nTextColor }, 1 ) // 1 колонка - цвет текста oBrw_2:Setcolor( { 2 }, { nBackColor }, 1 ) // 1 колонка - цвет фона oBrw_2:Setcolor( { 1 }, { nTextColor }, 2 ) // 2 колонка - цвет текста oBrw_2:Setcolor( { 2 }, { nBackColor }, 2 ) // 2 колонка - цвет фона NEXT Не могу сообразить как выставить условие показа....

Haz: Andrey пишет: Как мне рас красить таблицу по строкам ? не понял вопрос в oBrw_2:Setcolor( { 1 }, { nTextColor }, 1 ) вместо { nTextColor } укажи блок кода , который вернет массив цвета в зависимости от номера строки

Andrey: Haz пишет: кажи блок кода , который вернет массив цвета в зависимости от номера строки Вот с этим блоком кода у меня и не получается....

Haz: как то так ? oBrw_2:Setcolor( { 1,2 }, { || { aStColorUsl[ oBrw:nAt][3], aStColorUsl[ oBrw:nAt][4] }}, 2 )

Andrey: Haz пишет: как то так Нет, не получается.... Я файл на почту отправил. Посмотри пожалуйста.

Andrey: С таблицами и базой я немного разобрался. А как мне работать с массивом из которого сделан TBROWSE: DEFINE TBROWSE oBrw_2 ; ............... END TBROWSE oBrw_2:SetArray( aVar2 ) ADD COLUMN TO TBROWSE oBrw_2 DATA ARRAY ELEMENT 1; ................ Т.е. как мне записать в ELEMENT 5 свои значения ?

Haz: Andrey пишет: Т.е. как мне записать в ELEMENT 5 свои значения ? 1. oBrw_2:aArray[oBrw_2:nAt][5] := "Свое значение" 2. Eval( oBrw_2:aColumns[5]:bBlock, "Свое значение" ) 3. использовать SQLMIX и работать с массивом как с DBF (индексы фильтры сортировка и пр)

Andrey: Haz пишет: 1. oBrw_2:aArray[oBrw_2:nAt][5] := "Свое значение" Немного ошибся. Нужно 4 элемент изменять. В ней у меня цвета - числа. Как сделать цикл по 4 колонке ? FOR nI := 1 TO ??? ( oBrw_2:nLen - так или ошибаюсь ?) oBrw_2:aArray[oBrw_2:nI][4] := aStColorUsl[nI,4] ... NEXT

Haz: Andrey пишет: Как сделать цикл по 4 колонке FOR nI := 1 TO Len(oBrw_2:aArray) oBrw_2:aArray[nI][4] := aStColorUsl[nI,4] ... NEXT

Andrey: Haz Спасибо ! Еще можно и так: FOR nI := 1 TO oBrw_2:nLen

Haz: Andrey пишет: Еще можно и так: можно, я просто привык к Len( aArray ) можно и так nI := 0 Aeval( oBrw_2:aArray, {|e| e[4] := aStColorUsl[++nI,4] }) PS. Даже короче в одну строку Aeval( oBrw_2:aArray, {|e, n| e[4] := aStColorUsl[n,4] })

Andrey: Haz пишет: Aeval( oBrw_2:aArray, {|e| e[4] := aStColorUsl[++nI,4] }) Не, это трудно читаемое... Не для меня ! Потом свои тексты фиг разберешь !!! А я пример делаю для всех, в коллекцию Григория. Там тоже читаемый текст нужен... Посмотри пожалуйста еще 3 вопроса, письмо отправил.

Andrey: С изменением цвета понял, СПАСИБО ! // редактирование 4-колонки и перерисовка цвета после его изменения oBrwClr:aColumns[4]:bPrevEdit := { || ColorPicker(oBrwClr), oBrwClr:Refresh(FALSE), FALSE } А почему не работает вот эта конструкция ? oBrwClr:aColumns[4]:bPostEdit := { || ViewColorTbrws(oBrwClr,4,aVar) } Т.е. я хотел бы чтобы после изменения цвета выполнялась функция перерисовки цвета по таблице. За что отвечает bPostEdit ?

Haz: Andrey пишет: А почему не работает вот эта конструкция Она не может не работать , bPostEdit автоматически выполняется после редактирования Проверь вызов , oBrwClr:aColumns[4]:bPostEdit := { || MsgDebug('ДО'), ViewColorTbrws(oBrwClr,4,aVar), MsgDebug('ПОСЛЕ') } Скорее в логике проблема.



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