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

Vlad04: gfilatov2002 Григорий Если вернуться к первому пункту поста.Посмотрите, может есть возможность переопределить Tbrowse так , чтобы он в программнике писался как Browse ( параметры не РАЗДЕЛЯЛЬСЬ символом ; ) DEFINE BROWSE Browse_1 COL 10 ROW 10 WIDTH 610 HEIGHT 390 .... В Tbrowse DEFINE TBROWSE Brw_1 AT 0, 0 ALIAS "Employee" ; COLORS {CLR_BLACK, CLR_NBLUE} ; WIDTH nBrwWidth ; HEIGHT nBrwHeight ;

gfilatov2002: Vlad04 пишет: может есть возможность переопределить Tbrowse так , чтобы он в программнике писался как Browse В терминах библиотеки минигуи это называется альтернативный синтаксис. При этом становится удобнее написание текста программы, но неоптимальным - генерируемый код. Если для Вас это необходимо, то Вы можете добавить требуемое описание в заголовочный файл include\i_altsyntax.ch (сейчас там этого нет ).

Andrey: Haz пишет: (иначе нужно переопределять колонки) Как можно определить свой показ колонок для TBROWSE, а то я совсем запутался... Делаю так: oBrw_1:aColumns[1]:cHeading := "Дата" + CRLF + "события" oBrw_1:SetColSize(1, 50) oBrw_1:aColumns[1]:nAlign := DT_CENTER А поле базы как здесь определить ?


Haz: Andrey пишет: А поле базы как здесь определить через oBrw_1:aColumns[1]:bData

Dima: Andrey пишет: А поле базы как здесь определить ? Как то так oBrw_1:aColumns[1]:bdata:=твой блок кода для выборки данных Если чего не знаешь смотри Tsbrowse.ch #xcommand MODIFY [ CONTROL ] [ TBROWSE ] <oBrw> COLUMN <nColumn> [ PROPERTY ] DATA TO <bData>; => <oBrw>:aColumns\[ <nColumn> \]:bData := <bData> PS Haz Опередил ;)

Haz: Dima пишет: Если чего не знаешь смотри Tsbrowse.ch согласен и еще можно посмотреть в TsColumn.prg и h_browse.prg там оч много интересного, к примеру DATA bData // Mandatory code block to return column data Dima пишет: Опередил ;) я не специально ))

Andrey: Haz пишет: Haz Опередил ;) Спасибо вам ОГРОМНОЕ ! Хорошо что есть кто отвечает на вопросы !

Andrey: Dima пишет: Как то так oBrw_1:aColumns[1]:bdata:=твой блок кода для выборки данных А если нужно выводить поле по шаблону, то как делать ? FIELD->NTIME PICTURE - "99:99"

Dima: Andrey Наверное так oBrw_1:aColumns[1]:Cpicture:="99:99" Haz пишет: согласен и еще можно посмотреть в TsColumn.prg и h_browse.prg там оч много интересного +1

Andrey: Чем больше делаешь, тем больше вопросов возникает... ( чем дальше в лес, тем больше дров ! ) Подскажите пожалуйста: 1) Почему дата не выходит полностью в первом столбце ? 2) Как убрать выделение серым цветом заголовка первого столбца ? 3) Как установить горизонтальный скролинг ? 4) Я перечислил ВЫВОД 7 полей, а выводиться больше (да еще на английском), почему ? Ну и еще до кучи, индексы показываются неправильно.... Вот сам проект http://files.mail.ru/FB59CE79DA39455098065F18BE9FB27A

Haz: Andrey пишет: Чем больше делаешь, тем больше вопросов возникает... 1 - не достаточна заявленная ширина колонок установлено 50 и в описании колонки 2 !!!! . центрировать дату лучше по DT_CENTER . :cPicture := "99.99.9999" лишнее т.к. есть SET DATE FORMAT "DD.MM.YYYY" 2. присвоить &cBrw:SetColor( { 14 } .... то же что и в &cBrw:SetColor( { 4 }, подробнее см. h_browse.prg как рисуются заголовки в METHOD DrawHeaders( lFooters ) CLASS TSBrowse 3. убить в своем коде его отключение &cBrw:lNoHScroll := .T. и &cBrw:ResetVScroll() 4. Не перечислил а переопределил , остальные загружены дефолтом &cBrw:LoadFields( .F. )

Andrey: Haz пишет: 1 - не достаточна заявленная ширина колонок установлено 50 и в описании колонки 2 !!!! . Понял, что из-за маленького размера второй колонки, не получалась первая. Буду знать теперь. 2) Сделал как порекомендовали: &cBrw:SetColor( { 14 }, { { || { Rgb( 43, 149, 168 ), Rgb( 0, 54, 94 )}}}) // Шапка выделения индекса Результат все равно не тот. Хотелосб бы ВООБЩЕ отказаться от сортировки. Если это нельзя, то тогда понятно. 3) Получилось. 4) А как тогда задать поля из базы ТОЛЬКО те которые нужны ? &cBrw:LoadFields( .T. ) - тоже не работает....

Haz: Andrey пишет: Понял, что из-за маленького размера второй колонки, не получалась первая. Буду знать теперь. Вижу что не понял в твоем исходнике в коде описания параметров ВТОРОЙ колонки есть ОПЕЧАТКА - снова устанавливаешь ширину ПЕРВОЙ oBrw_1:SetColSize(1, 50) Andrey пишет: Хотелосб бы ВООБЩЕ отказаться от сортировки нет ничего проще oBrw_1:lNoChangeOrd := .T. PS. цитата из h_tbrowse.prg "DATA lNoChangeOrd AS LOGICAL // avoids changing active order by double clicking on headers" предвижу вопрос о цвете шрифта в первой колонке - ответ :SetColor( 13 .......) и на последний вопрос LoadFilds( .T. ) - просто разрешает редактированиме Можно спрятать лишние HideColumns( nColumn , lHide ) - описание есть в справке по TSBrowse которая идет с поставкой MiniGui или в том же исходнике библиотеки Если много колонок бровс начинает немного тупить и если они не нужны в бровсе их лучше удалить через METHOD DelColumn( nPos ) или добавлять только нужные изначально AddColumn( oColumn) - в справке этих методов нет , а в исходнике есть это как " ... видишь суслика ? .... а он там есть " Андрей - найди время , посмотри исходники . Да они не маленькие , но там очень много интересного

Andrey: Haz пишет: Можно спрятать лишние HideColumns( nColumn , lHide ) - описание есть в справке по TSBrowse которая идет с поставкой MiniGui Да я это видел, но считать поля по каждой базе не совсем правильное решение. У меня есть базы имеющие 150 полей. Для показа нужно всего 15. Ладно, можно один раз перечислить. А когда новые поля в базу добавишь, нужно будет тогда ОПЯТЬ лезть в исходник и править его. ОЧЕНЬ НЕУДОБЕН этот метод. Хочется как на Клипере создавать бровс. Haz пишет: или добавлять только нужные изначально AddColumn( oColumn) - в справке этих методов нет , а в исходнике есть это как " ... видишь суслика ? .... а он там есть " Вот это уже лучше метод построения ! Буду смотреть. Haz пишет: - найди время , посмотри исходники . Да они не маленькие , но там очень много интересного Буду смотреть, но многое не очевидно для меня. И изучение идет наскоками, основную работу никто не отменяет... Haz Спасибо огромное за помощь !

Andrey: Haz пишет: нет ничего проще oBrw_1:lNoChangeOrd := .T. Не работает. Остается графический значок сортировки. 1) Как его убрать. Я конечно могу его закрасить фоном шапки таблицы и отдельной иконкой добавить в проект. Но это же не выход. Если нельзя убрать, то как тогда "передвинуть" всю эту красоту на 4 шапку таблицы: "Наименование события" ? 2) Как уменьшить высоту ячейки таблицы ? Далал уже и &cBrw:nHeightCell += 8 // высота ячейки TBROWSE Все равно размер не меняется. Измененный проект тут - http://files.mail.ru/3784AE8B8AA3438C8CC0C8597D328584

Haz: Andrey пишет: Не работает. Остается графический значок сортировки. После oBrw_1:lNoChangeOrd := .T. добавь строку oBrw_1:nColOrder := 0 . должно сработать Andrey пишет: Все равно размер не меняется. скорее всего в таблице есть мемо поле и ты его пихаешь в бровс . Удали колонку с мемо :DelColumn( 11 ) и высота строк станет управляемой Следующий вопрос скорее всего будет - как показать мемо. Отвечаю - создать на форме EditBox в режиме ReadOnly ( к примеру там где ноги ), а в oBrw_1 на событие ON CHANGE повесить функцию или блок который делает EditBox.Value := (oBrw_1:cAlias)->MEMO PS и исправь наконец у себя опечатку в коде 1 на 2 oBrw_1:aColumns[2]:cHeading := "Время" + CRLF + "события" oBrw_1:SetColSize(1, 70) oBrw_1:aColumns[2]:nAlign := DT_CENTER oBrw_1:aColumns[2]:bData := {||LOG_DBF->TIME } PSS и при попытке поиска будет вылет с ошибкой т.к. пытаешься привести в верхний регистр числовое поле UPPER(LOG_DBF->NEVENT)

Andrey: Уже получается лучше ! http://files.mail.ru/710FE7B921CC4EAEB7BF0FF766551373 Haz пишет: Следующий вопрос скорее всего будет - как показать мемо. Хотелось бы сделать показ мемо в отдельном (дополнительном) окне, через CheckBox ! Как это сделать ? Т.к. мемо может быть большим и при желании можно было бы смотреть по желанию юзера. Примерно так: И еще возник вопрос, при перемещении курсора изменение позиции "Запись 0/0" в STATUSBAR - как сделать ?

Haz: Andrey пишет: Хотелось бы сделать показ мемо в отдельном (дополнительном) окне если примерно как на картинке то добавить в бровс пустую колонку , дать ей болк выборки { || 'MEMO'}. разрешить редактирование :lEdit := .T.и через oBrw_1:aColumns[11]:bPrewEdit := {|| ...} вызывать функцию которая в окне показывает мемо, Эта функция должна вернуть FALSE ( ну или через BtnBox делать чтоб совсем как на картинке) Andrey пишет: при перемещении курсора изменение позиции на ON CHANGE бровса повесить нвзначение элемену статусбара строки вида - NTOC(Recno()) + '/' + NTOC(RecCount()) PS. кстати в твоем примере oBrw_1:aColumns[]:bData не нужен тк и так LoadFilds() назначает дефолтловый блок

Andrey: Haz пишет: PS. кстати в твоем примере oBrw_1:aColumns[]:bData не нужен тк и так LoadFilds() назначает дефолтловый блок Так он у меня за комментирован в программе ! //LoadFields( cBrw, cParent ) И я все таки хочу собирать TBROWS ТОЛЬКО из своих полей. Помоги пожалуйста в описании одной колонки, примеры смотрел, ни фига не понял. Как эту строку: ADD COLUMN TO TBROWSE &ob DATA ARRAY ELEMENT 1 ALIGN DT_CENTER, DT_CENTER SIZE 20 COLORS C_TEK, C_SYS преобразовать до привычной Клиперовской: oBrw_1:aColumns[1]:cHeading := "Дата" + CRLF + "события" oBrw_1:SetColSize(1, 70) oBrw_1:aColumns[1]:bData := {||LOG_DBF->DATE } // oBrw_1:aColumns[1]:cPicture:="99.99.9999" - не обязательно oBrw_1:aColumns[1]:nAlign := DT_CENTER Haz пишет: на ON CHANGE бровса повесить нвзначение элемену статусбара строки вида Спасибо ! Работает. ON CHANGE { || Form_0.StatusBar.Item(1) := " Запись: " + NTOC(Recno()) + '/' + NTOC(RecCount()) } Потом заменю на показ значений по индексам. Только при смещении мышкой строка Form_0.StatusBar.Item(1) - чиститься... вообще. Как мышкой нажмешь, то появляется (клавиши нормально работают) ! Что за фигня, где исправить ? Это у меня где-то в коде или это обычное поведение TBROWSA ?

Haz: Andrey пишет: смотрел, ни фига не понял. не там смотрел, посмотри как это делается в самом методе (не в функции) Loadfield - там как раз используется ::AddColumn Andrey пишет: Что за фигня, где исправить первый элемент статусбара бровс без объявления войны забирает под свои сообщения делай его пустым, а свой вывод гони во второй



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