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

SergKis: Andrey ... HORZ ALIGN DT_LEFT // Default DT_CENTER

SergKis: Andrey пишет:И как еще повесить при нажатии на этот "Super Header" есть блоки кода на колонку oCol:bHLClicked := {|nRowPix, nColPix, nAt| MsgDebug(nRowPix, nColPix, nAt) } // Block to be evaluated on header left clicked oCol:bHRClicked := {|nRowPix, nColPix, nAt| MsgDebug(nRowPix, nColPix, nAt) } // Block to be evaluated on header right clicked пикселы в nRow, nCol: nRow := oBrw:GetTxtRow( nRowPix ) nCol := oBrw:nAtCol( nColPix ) выведи их и по ним орентировка где кликали на header или SuperHeader вроде так в тестах делал.

Andrey: Я так понял, что можно заменять картинки для сортировки Tsbrowsa даже на PNG ! Сделал тест - работает ! Спасибо SergKis !!! Замена: // --------- заменяем сортировку на свои картинки индикации --------- oBrw5:aSortBmp := { LoadImage("Arrow_down.png"), LoadImage("Arrow_up.png") } И не обязательно делать картинки квадратными. Для того чтобы круг (см.картинку) не касался шапки заголовка справа я сделал картинки размером 30х34. А высоту шапки заголовка сделал чуть больше - oBrw5:nHeightHead := 32


Andrey: Перешёл на новую версию 16.02 и сразу вопрос: Почему перестало в шапке таблицы сдвигаться влево заголовок шапки при активации сортировки на этой шапке ? Вот картинка:

SergKis: Andrey http://clipper.borda.ru/?1-1-0-00000465-000-20-0-1455697477 пост 848 и далее

Andrey: Как сделать, чтобы в контекстном меню высвечивалась текущая строка колонки на которой стоит маркер ? Т.е. делаю так: // по правой кнопки мышки - контекстное меню TBROWSE DEFINE CONTEXT MENU CONTROL oBrw1 MENUITEM "File open 1: " + InfoFile(1,oBrw1:nAt) ACTION { || RunFile(1,oBrw1:nAt) } MENUITEM "File open 2: " + InfoFile(2,oBrw1:nAt) ACTION { || RunFile(2,oBrw1:nAt) } SEPARATOR .....

Haz: Andrey пишет: высвечивалась текущая строка колонки не проверял , но примерно так Eval( oBrw:aColumns[oBrw:nCell]:bData )

Andrey: Andrey пишет: Так ? Нет. Вот так:

Andrey: Haz пишет: не проверял , но примерно так Eval( oBrw:aColumns[oBrw:nCell]:bData ) Не прокатило.... DEFINE CONTEXT MENU CONTROL oBrw1 MENUITEM "File open 1: " + SUBSTR( Eval( oBrw1:aColumns[4]:bData ) ,1,60) ACTION { || RunFile(1) } MENUITEM "File open 2: " + SUBSTR( Eval( oBrw1:aColumns[4]:bData ) ,61 ) ACTION { || RunFile(2) } SEPARATOR Мне нужно из 4 колонки выбрать первую строчку, а потом вторую строчку. колонка сборная из 2х полей базы собрана: ADD COLUMN TO oBrw1 HEADER "Файлы" ; ......... DATA {|| (cAlias)->DIR1 + (cAlias)->FILE1 + CRLF + ; (cAlias)->DIR2 + (cAlias)->FILE2 }

Haz: Andrey пишет: Не прокатило.... ты по простому скажи , тебе надо чтоб в меню показывалось значение из текущей строки бровса ? ( то что строка составная сути не меняет, ловишь по разделителю )

Andrey: Haz пишет: ты по простому скажи , тебе надо чтоб в меню показывалось значение из текущей строки бровса ? Да !

Haz: чтобы сменить строку меню есть функция _SetMenuItemCaption ( cName , cWin , cCaption ) где cName задается при MENUITEM cCaption ACTION bAction NAME cName IMAGE cImage в твоем случае получается _SetMenuItemCaption() нужно вешать на ::bChange

Andrey: Спасибо БОЛЬШОЕ !

Andrey: Сделал так: MENUITEM "File open 1: " ACTION { || RunFile(1) } NAME MYNAMEOPENFILE1 MENUITEM "File open 2: " ACTION { || RunFile(2) } NAME MYNAMEOPENFILE2 ........ cCaption1 := "File open 1: " + (oBrw1:cAlias)->FILE1 _SetMenuItemCaption ( "MYNAMEOPENFILE1" , cForm , cCaption1 ) // строка 496 cCaption2 := "File open 2: " + (oBrw1:cAlias)->FILE2 _SetMenuItemCaption ( "MYNAMEOPENFILE2" , cForm , cCaption2 ) Выдаёт ошибку: Error BASE/1132 Переполнение массива: Неверное количество аргументов Called from _GETMENUIDS(561) Called from _SETMENUITEMCAPTION(757) Called from CHANGETABLE(496) Called from (b)MYCREATETABLE(432) Called from TSBROWSE:PAINT(8746) Called from TSBROWSE:DISPLAY(2306) Полез в h_menu.prg LOCAL x := GetControlIndex ( ItemName , FormName ) LOCAL h := _HMG_aControlPageMap [ x ] // строка 561 Я пока не знаю что это такое .... Что делать ?

Haz: Andrey пишет: Я пока не знаю что это такое .... это скорее всего значит что нет такого меню еще т.е на момент вызова bChange ничего не известно про меню примерный порядок DEFINE TSBROWSE END BROWSE DEFINE MENU END MENU oBrw:bChange := .......

Andrey: Haz пишет: примерный порядок Да и у меня тоже такой же: DEFINE TBROWSE oBrw1 ; ............... ON CHANGE { || ChangeTable() } ; ON GOTFOCUS ChangeTable() ; BACKCOLOR aBackColorTbr ; CELL END TBROWSE MyCreateTable() MyCreateTableMenu() STATIC FUNCTION ChangeTable() .....

Haz: Andrey пишет: Да и у меня тоже такой же Разный , бровс который обращается к меню в ON СHANGE объявляется когда этого меню еще и нет обрати внимание где у меня oBrw:bChange := .......

Andrey: Тогда нужно так: DEFINE TBROWSE oBrw1 ; END TBROWSE MyCreateTable() MyCreateTableMenu() oBrw1:bChange := { |oBrw| ChangeTable(oBrw) } ....... STATIC FUNCTION ChangeTable()

Haz: Andrey пишет: Тогда нужно так: так скорее всего получиться

Andrey: Нет, не пашет... Валится сразу при входе в программу. А как проверить наличие "MYNAMEOPENFILE1" ? LOCAL cForm := oBrw1:cParentWnd MsgLog( cForm , cCaption1, cCaption2 ) _SetMenuItemCaption ( "MYNAMEOPENFILE1" , cForm , cCaption1 ) _SetMenuItemCaption ( "MYNAMEOPENFILE2" , cForm , cCaption2 )



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