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

Ответов - 148, стр: 1 2 3 4 5 6 7 8 All

gfilatov2002: SergKis пишет: Работает: Все хорошо, но я инвертировал в двух местах логику обработки READONLY, поскольку по определению readonly := ! eval(uWhen) Добавил такое описание в текущий changelog: [pre2] * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - Fixed: EDITABLE clause at a simple TBROWSE definition is respected now. - Updated: Added implementation of READONLY and VALID clauses similar to a standard BROWSE control. Contributed by SergKis. (see proc Brw_5() at demo.prg in folder \samples\Advanced\TSBrowse) [/pre2]

Andrey: Сделал простой тестовый пример на TBROWSE из нескольких столбцов. Делаю так: oBrw9:lCellBrw := .F. // маркер на всю таблицу Как назначить ОДНУ функцию по нажатию Enter и мышки ? Маркер же большой, не известно на каком столбце стоишь.. Все остальные клавиши нужно игнорировать. Я знаю что нужно вешать обработчик, типа: oBrw9:bKeyDown := { | nKey | MyKeyAction(nKey,oBrw9, ThisWindow.Name, 0), lOk := nKey != VK_ESCAPE } oBrw9:bLDblClick:= { || MyAction(oBrw9, ThisWindow.Name, 0) } // Двойной клик мышки на МАРКЕРЕ А по другому, попроще нельзя ?

Haz: Andrey пишет: Маркер же большой, не известно на каком столбце стоишь.. есть же oBrw9:nCell в нем и стоишь .....


Andrey: Haz пишет: есть же oBrw9:nCell в нем и стоишь ..... Где прописать обработку ENTER ? Если на каждом столбце делаешь ADD COLUMN .... ...... EDITABLE то НЕТ никакой реакции на весь маркер при нажатии ENTER или мышки ! Получается только просмотр таблицы. Что нужно написать для редактирования по всему маркеру ?

SergKis: Andrey пишет: Что нужно написать для редактирования по всему маркеру ? Т.е. по нескольким колонкам, входящих в маркер ? Не пробовал, но думаю надо включить режим Cell и с нужной колонки нажать мышу для редактирования и ... после последнего редактирования Cell выклюить

Haz: SergKis пишет: то НЕТ никакой реакции на весь маркер при нажатии ENTER или мышки ! по даблклике мышки работает если обьявить при инициализации бровса DEFINE TBROWSE ... ... ON DBLCLICK DblClickProcedurе() ... END TBROWS по ENTER если изменить обработку :KeyDown() я просто добавляю в исходник метода :KeyDown() строки перед Otherwise Case !::lCellbrw .And. (nKey == 13 .Or. nKey == 32 ) If ::bLDblClick != Nil Eval( ::bLDblClick ) EndIf и получаю вызов процедуры даблклика и по ENTER и по SPACE

SergKis: Haz пишет:SergKis пишет: цитата: то НЕТ никакой реакции на весь маркер при нажатии ENTER или мышки ! это не я пишу, а Andrey. Как я понял, он имеет TsBrowse c lCell := .F. (маркер на всю строку) и при нажатии Enter или Click хочет включать корректировку как lCell := .T. с какой то определенной колонки, после всех коректировок опять lCell := .F. (маркер на всю строку) и конечно с обработкой Dn,Up,... и кликом мыши за пределами окна коректировки.

Haz: SergKis пишет: это не я пишу, а Andrey. Опять цитату не проверил , извиняюсь - конечно это к Андрею SergKis пишет: хочет включать корректировку как lCell := .T. с какой то определенной колонки возможно и так , я подумал он хочет просто подвесить вызов функции на даблклик при длинном маркере. По любому при желании и то и то выполнимо. Подсвечивать текущую колонку можно меняя цвет фона в колонке :nCell по bOnDraw

Andrey: Haz пишет: возможно и так , я подумал он хочет просто подвесить вызов функции на даблклик при длинном маркере. Да, я это имел ввиду. Haz пишет: ON DBLCLICK DblClickProcedurе() Понял, СПАСИБО ! SergKis пишет: Как я понял, он имеет TsBrowse c lCell := .F. (маркер на всю строку) и при нажатии Enter или Click хочет включать корректировку как lCell := .T. Нет ! Просто корректировку ТОЛЬКО ОДНОЙ функции ! Допустим MyEditEnter() и всё. Haz пишет: по ENTER если изменить обработку :KeyDown() Кроме как изменения :KeyDown() (это я делал, я помню) можно как то назначить обработку по ENTER или нельзя. Это как то в ON CHANGE нужно прописывать ?

SergKis: Andrey пишет:Нет ! Просто корректировку ТОЛЬКО ОДНОЙ функции ! Допустим MyEditEnter() и всё. раньше: Сделал простой тестовый пример на TBROWSE из нескольких столбцов. Делаю так: oBrw9:lCellBrw := .F. // маркер на всю таблицу Как назначить ОДНУ функцию по нажатию Enter и мышки ? Маркер же большой, не известно на каком столбце стоишь.. Если на каждом столбце делаешь ADD COLUMN .... ...... EDITABLE то НЕТ никакой реакции на весь маркер при нажатии ENTER или мышки ! Получается только просмотр таблицы. Что нужно написать для редактирования по всему маркеру ? Как написано, так и понято

Andrey: SergKis пишет: Как написано, так и понято Ну извиняюсь, за своё косноязычие...

Haz: Andrey пишет: Кроме как изменения :KeyDown( это самый простой способ. а on change отрабатывает когда меняется текущая строка

Andrey: Haz пишет: это самый простой способ. а on change отрабатывает когда меняется текущая строка Понял. Спасибо !

Andrey: Всем привет ! Как объединить в одном столбце 3 разных поля базы ?

Haz: Andrey пишет: Как объединить в одном столбце 3 разных поля базы ? :bData http://clipper.borda.ru/?1-1-0-00000427-000-10001-0-1432482733 твой пост N 4138

Andrey: Haz пишет: твой пост N 4138 Это через кодовый блок. Я это помню. bBlock := "{ || MEMOLINE("+ALIAS()+"->"+cField+","+HB_NTOS(LEN(cStr))+",1) }" oBrw:aColumns[nJ]:bData := &( bBlock ) А как написать для такой конструкции, которая в примерах (хотя потом там тоже будет кодовый блок): // создать 2-ю колонку ADD COLUMN TO oBrw3 HEADER "Номер" + CRLF + "заказа" ; DATA FieldWBlock( "NNZA", Select() ) ; PICTURE "@Z 9999/99" ; SIZE 100 ; ALIGN DT_CENTER,DT_CENTER,DT_RIGHT ; // cells, header, footer COLORS CLR_BLACK, MyRGB(aBack2) // создать 3-ю колонку ADD COLUMN TO oBrw3 HEADER "Дата" + CRLF + "заказа" ; DATA FieldWBlock( "DATEZA", Select() ) ; PICTURE "99.99.99" ; SIZE 90 ; ALIGN DT_CENTER,DT_CENTER,DT_RIGHT ; // cells, header, footer COLORS CLR_BLACK, MyRGB(aBack2) // создать 4-ю колонку ADD COLUMN TO oBrw3 HEADER "Время" + CRLF + "заказа" ; DATA FieldWBlock( "TIMEZA", Select() ) ; PICTURE "99:99" ; SIZE 80 ; ALIGN DT_CENTER,DT_CENTER,DT_RIGHT ; // cells, header, footer COLORS CLR_BLACK, MyRGB(aBack2)

Haz: Andrey пишет: А как написать для такой конструкции так и писать - через блок кода

Andrey: Сделал так: ADD COLUMN TO oBrw3 HEADER "Номер" + CRLF + "Дата" + CRLF + "Время" ; SIZE 120 ; ALIGN DT_CENTER,DT_CENTER,DT_RIGHT ; // cells, header, footer COLORS CLR_BLACK, MyRGB(aBack2) ; DATA { || TRANSFORM( (Alias())->NNZA, "9999/99" ) + CRLF + ; DTOC( (Alias())->DATEZA ) + CRLF + ; TRANSFORM( (Alias())->TIMEZA, "99:99" ) + CRLF } // multi-line feature on cells Почему то третью строчку не показывает ? Может еще что-то включить нужно ? PS. TIMEZA - это числовое поле, 4 знака чч:мм

Dima: Andrey пишет: Почему то третью строчку не показывает ? не влезла видимо , поширше сделай высоту строки.

Andrey: Dima пишет: не влезла видимо , поширше сделай высоту строки. Не знаю как ? Там только ширину можно делать: SIZE 120 Где в TBROWSE задается высота строк ?



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