Форум » 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: ZAlex пишет: А если скомпилировать с ключом -p

Andrey: ZAlex пишет: А если скомпилировать с ключом -p и затем посмотреть, как препроцессор это делает? Не поможет? Блин, забыл ! Спасибо !

Vlad04: При наличии индексов управлять выбором их можно "кликнув" мышкой по заголовку колонки Brw_1:SetIndexCols( 2,1 ) Brw_1:aColumns[ 1 ]:cOrder := "CODE" Brw_1:aColumns[ 2 ]:cOrder := "Name" А как с помощью клавиатуры то же сделать ?


Andrey: Vlad04 пишет: А как с помощью клавиатуры то же сделать ? Вот еще пример использования TBROWSE. В нем есть функция обработки всех клавиш MyKeyAction(). Вот можете туда и вставить обработку своих клавиш. http://files.mail.ru/50BF541945984119BE7B20C8CBFB588A Может еще можно это сделать с помощью команд: ON KEY F? ACTION MyFunction() Это то что я знаю пока. Может и не прав... Нужно ждать ответ от нашего ГУРУ...

Vlad04: ок В примере есть ответ на поставленный вопрос oBrw_1:aColumns[2]:bHLClicked:={||ChoiHeader(3)} //переключение индекса по шапке / switching index on the table header

Andrey: Vlad04 пишет: В примере есть ответ на поставленный вопрос Как сам пример ? Вам понравился ? Может чего не хватает ? Делал специально в качестве обучающего примера.

Vlad04: Andrey Как сам пример ? Вам понравился ? Может чего не хватает ? Пример понравился (цветовой оформление, работа с директориями), но имеет свою специфику. Вопросы по TBROWS остались. 1) Как удалить запись ( не нашел в примерах или плохо искал) 2) Такая рабочая ситуация : - Перед открытием в таблице ищу нужную запись (таблица может быть индексирована или нет. Естественно поиск по индексу или Locate) - после открытия курсор должен быть на найденной записи.

Haz: Vlad04 пишет: 1) Как удалить запись (oBrw:cAlias)->(DbDelete()) oBrw:Refresh(.T.) Vlad04 пишет: поиск по индексу или Locate Seek: oBrw:SetFocus() (oBrw:cAlias)->(oBrw:ExpSeek( cExp, FALSE )) Locate: oBrw:SetFocus() oBrw:ExpLocate( cExp ) Vlad04 пишет: курсор должен добавить что то типа oBrw:Upstable() oBrw:ResetVScroll(.T.) oBrw:Refresh(.T., .T.)

Vlad04: ок С удалением все нормально. С поиском Seek: oBrw:SetFocus() (oBrw:cAlias)->(oBrw:ExpSeek( cExp, FALSE )) А найти нужную запись до открытия TBROWS , а потом спозиционировать TBROWS никак ?

Dima: Vlad04 пишет: А найти нужную запись до открытия TBROWS , а потом спозиционировать TBROWS никак ? А что при таком подходе курсор становится не туда ? Нашел , открыл бровс..........

Haz: Vlad04 пишет: найти нужную запись до открытия TBROWS , а потом можно так попробовать (oBrw:cAlias)->(DbGoto(nRec)) oBrw:Upstable() oBrw:Refresh(.T., .T.)

Vlad04: А что при таком подходе курсор становится не туда ? Не становится куда надо !. Есть у TBROWS переменная VALUE , если ей присваивать полученное Recno() после поиска , куда-то курсор перемещается при открытии , но не нату запись, которая найдена. Если VALUE не использовать , то на первую запись.

Vlad04: Haz ОК И поиск получился

a_sidorov: B Tsbrowse есть эффект нижней строки, которая прорисовывается при создании Tsbrowse, но не участвует в скроллинге вправо-влево и вверх-вниз, то есть просто висит на экране замороженная. Это видно на примерах из дистрибутива: SAMPLES\Advanced\TsBrowse Меню TSBrowse\More To One и TSBrowse\Excel Connectivity Для фиксированного размера Tsbrowse наверно можно подобрать размеры, чтобы эффекта не было. Но если делать настраиваемые размеры, то неприятный эффект появляется во всей красе. В последнем примере (TSBrowse\Excel Connectivity) , если изменить мышкой вертикальный размер так, чтобы последняя строка была прорисована не полностью, то при движении курсора вверх она зависает и не перерисовывается. Видимо, при создании таблицы и перерисовке в этом случае считается разное количество строк. При создании таблицы строка, не умещающаяся полностью на экране, не должна была прорисовываться.

Vlad04: По примеру 1) &cBrw:bKeyDown := { | nKey | MyKeyAction(nKey,cBrw, cParent, 0), lOk := nKey != VK_ESCAPE } Независимо от раскладки клавиатуры всегда возвращает англиЦкие. Так должно быть ? По TSBrows 2) При доступности редактирования ячейки, вход в ячейку по нажатию Enter или двойной клик. А можно клавиши в данном случае переназначить ? К примеру, редактировать по F4. 3) В консоле, когда не надо было менять значения непосредственно в Бровзе я иногда выводил данные так FAM+'|'+iM+'|'+oT+'|' или так if(Sex=1;'Муж';'Жен') Т.е. делал составную запись или подстановку Что-нибудь подобное можно в TSBrows

Haz: Vlad04 пишет: 3) В консоле, когда не надо было менять значения непосредственно в Бровзе я иногда выводил данные так FAM+'|'+iM+'|'+oT+'|' все тоже самое - определяешь блок выборки bData := {|| ...} Vlad04 пишет: всегда возвращает англиЦкие. Так должно быть ? так и должно . В принципе можно добраться до языка клавиатуры и по собственной таблице соответствий - руский/англ и верхний /нижний - вернуть то что надо. Не проверял , не делал сам т.к. не нужно было , но уверен на 10000% все достаточно реализуемо Vlad04 пишет: К примеру, редактировать по F4. сейчас не готов ответить , нужно глянуть исходники скорее всего на F4 тоже можно повесить блок DblClick

Andrey: Vlad04 пишет: Независимо от раскладки клавиатуры всегда возвращает англиЦкие. Так должно быть ? Делай свою обработку в функции MyLatRus() Но может можно и по другому, я пока не знаю (разбираюсь с этим). Надо спросить других. Не уж то нет стандарта обработки клавиш для TBROWSE ? Vlad04 пишет: По TSBrows 2) При доступности редактирования ячейки, вход в ячейку по нажатию Enter или двойной клик. А можно клавиши в данном случае переназначить ? К примеру, редактировать по F4. Я выше уже писал: "В нем есть функция обработки всех клавиш MyKeyAction(). Вот можете туда и вставить обработку своих клавиш. "

Andrey: a_sidorov пишет: B Tsbrowse есть эффект нижней строки, которая прорисовывается при создании Tsbrowse, но не участвует в скроллинге вправо-влево и вверх-вниз, то есть просто висит на экране замороженная. Это видно на примерах из дистрибутива: SAMPLES\Advanced\TsBrowse Меню TSBrowse\More To One и TSBrowse\Excel Connectivity Для фиксированного размера Tsbrowse наверно можно подобрать размеры, чтобы эффекта не было. Но если делать настраиваемые размеры, то неприятный эффект появляется во всей красе. В последнем примере (TSBrowse\Excel Connectivity) , если изменить мышкой вертикальный размер так, чтобы последняя строка была прорисована не полностью, то при движении курсора вверх она зависает и не перерисовывается. Видимо, при создании таблицы и перерисовке в этом случае считается разное количество строк. При создании таблицы строка, не умещающаяся полностью на экране, не должна была прорисовываться. Да, да, есть такая фигня... Как с этим бороться ?

gfilatov2002: Andrey пишет: Как с этим бороться ? Есть вариант добавить функцию CorrectionFirstLast(oBrw) при обработке события ON CHANGE (см. пример в папке samples\Advanced\TSB_lastrow). Но при использовании этого пути возможны побочные эффекты Поэтому надо проверять это решение на Вашем конкретном приложении

a_sidorov: Спасибо! Вроде работает!!! Поставил CorrectionFirstLast("oBrw_1) в ON CHANGE и в функцию перерисовки при изменения размера: FUNCTION ResizeBrowse() oBrw_1:Move( oBrw_1:nLeft ,oBrw_1:nTop , Form_0.Width-19, Form_0.Height-93, .t.) oBrw_1:Paint() CorrectionFirstLast("oBrw_1") RETURN Nil Не очень нравится появившееся мелькание – перерисовка при изменении размера окна. Надеюсь, что со временем найдется решение с меньшим мельканием. Может еще что-то можно придумать? Если убрать Paint(), то иногда появляются глюки, обычно после достижения конца файла.



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