Форум » GUI » Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение) » Ответить

Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)

gfilatov: Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №48, которая выйдет в конце недели. Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне Кратко, что нового: - исправление обнаруженных ошибок и неточностей кода; - новый класс HEADERIMAGE для Grid и Browse; - свойство Address в Hyperlink может теперь открывать папку или файл на диске; - добавлен NOTABSTOP класс для Browse; - поддержка пользовательских компонентов (заимствована из оффициального релиза); - расширения и исправления в библиотеках TsBrowse и PropGrid; - обновлены сборки Харбор и HMGS-IDE; - новые и обновленные старые примеры (как обычно ).

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

SergKis: Haz пишет У меня все нормально У меня аналогично. Возможно имеется ввиду при Up на последней строке и последнем :nRowPos, строка swap сделала, но осталась последней, а др. ушла за экран, так именно это я имел ввиду под шероховатостью. Надо усиливать алгоритм, если надо, конечно. Оставляю это на тех, кому надо.

TimTim: Я пересобирал прогу. Может в этом дело?

Haz: TimTim пишет: Я пересобирал прогу. Может в этом дело? Может и в этом т.к. метод GoToRec() не обновлен в tsBrowse.lib При желании пересобрать обновить метод можно самостоятельно и пересобрать библиотеку


SergKis: gfilatov2002 пишет * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - added the new method FilterData( cFilter, lFocus ) in the TSBrowse немного надо изменить[pre2] METHOD FilterRow( cFilter, lBottom, lFocus ) CLASS TSBrowse ... ::Reset(lBottom) ... или METHOD FilterRow( cFilter, lFocus, lBottom ) CLASS TSBrowse ... ::Reset(lBottom) ... [/pre2] второй вариант по частоте исп. lBottom (default .F.) первый по логике что лучше ? не знаю.

gfilatov2002: SergKis пишет: METHOD FilterRow( cFilter, lBottom, lFocus ) Принят первый вариант

SergKis: gfilatov2002 Похожая правка[pre2] METHOD FilterFTS( cFind, lUpper, lBottom, lFocus ) CLASS TSBrowse ... ::Reset(lBottom) ... [/pre2]

gfilatov2002: SergKis пишет: Похожая правка OK

Haz: gfilatov2002 Григорий в ::GotoRec() можно это добавить [pre2] If ::lIsDbf if hb_isBlock( nRec ) nRec := eval( nRec ) end if hb_isBlock( nRowPos ) nRowPos := eval( nRowPos ) end [/pre2] это позволит реализовать вычисляемые от условий координаты ( к примеру на последней странице nRowPos ровнять на nRowCount(), или nRec вычислять в dbLocate() )

SergKis: Haz пишет в ::GotoRec() можно это добавить только Eval с параметром nRec := eval( nRec, Self ) nRowPos := eval( nRowPos, Self )

gfilatov2002: Haz пишет: в ::GotoRec() можно это добавить OK SergKis пишет: только Eval с параметром OK

SergKis: gfilatov2002 У нас с Игорем еще предложение по методам [pre2] METHOD SeekRec( xVal, lSoftSeek , lFindLast, nRowPos ) CLASS TSBrowse LOCAL cAlias, nRecOld, lRet := .F. DEFAULT lSoftSeek := .T., lFindLast := .T., nRowPos := ::nRowPos cAlias := ::cAlias nRecOld := (cAlias)->( Recno() ) IF (cAlias)->( dbSeek( xVal, lSoftSeek, lFindLast ) ) ::GoToRec((cAlias)->( RecNo() ), nRowPos ) lRet := .T. ELSE (cAlias)->( dbGoto(nRecOld) ) ENDIF RETURN lRet METHOD FindRec( Block, lNext, nRowPos ) CLASS TSBrowse LOCAL i, n := 0 LOCAL cAlias, nRecOld LOCAL lArr := HB_ISARRAY(Block) LOCAL lRet := .F. DEFAULT lNext := .F., nRowPos := ::nRowPos cAlias := ::cAlias nRecOld := (cAlias)->( Recno() ) IF lNext (cAlias)->( dbSkip(1) ) ELSE (cAlias)->( dbGotop() ) ENDIF DO WHILE (cAlias)->( !EOF() ) n ++ IF lArr FOR i := 1 TO Len(Block) lRet := !Empty(EVal( Block[ i ], Self, i )) IF lRet EXIT ENDIF NEXT ELSE lRet := !Empty(EVal( Block, Self, 0 )) ENDIF IF lRet EXIT ENDIF DO EVENTS (cAlias)->( dbSkip(1) ) ENDDO IF lRet ::GoToRec(( cAlias)->( RecNo() ), nRowPos ) ELSE (cAlias)->( dbGoto(nRecOld) ) ENDIF RETURN lRet METHOD ScopeRec( xScopeTop, xScopeBottom, lBottom ) CLASS TSBrowse LOCAL cAlias := ::cAlias (cAlias)->( ORDSCOPE(0, xScopeTop ) ) (cAlias)->( ORDSCOPE(1, xScopeBottom) ) ::Reset(lBottom) RETURN Nil [/pre2] Проверочный пример https://my-files.ru/hb9tz8

Andrey: SergKis пишет: Проверочный пример [pre2] DEFINE STATUSBAR STATUSITEM "" //STATUSITEM "Network opening of the database!" WIDTH 290 FONTCOLOR BLUE STATUSITEM "Methods: Seek, Find, Scope !" WIDTH 290 FONTCOLOR BLUE[/pre2] Вот так наверное нужно !

SergKis: Andrey пишет Вот так наверное нужно ! Скорее тут менять (а там все равно shared открытие) [pre2]FUNCTION UseOpenBase() LOCAL aStr := {} LOCAL cDbf := GetStartUpFolder() + "\TEST5" [/pre2]

gfilatov2002: SergKis пишет: еще предложение по методам Принято с благодарностью

Andrey: SergKis пишет: У нас с Игорем еще предложение по методам Ещё бы один метод нужен. Типа ColumnRec(nColumn) - показ нужной колонки в бровсе, для большого количества колонок в таблице. А то юзеру нужную ему колонку невозможно показать сразу, после разных манипуляций. Или он уже есть и я пропустил такой метод ?

Haz: Andrey пишет: я пропустил такой метод ::GoPos()

Andrey: Haz пишет: ::GoPos() Что-то это не работает... Я раньше у себя это пробовал: [pre2] oBrw1:nCell := 6 + nStaticNumField // передвинуть МАРКЕР на колонку выбранного фильтра или oBrw1:GoPos( 1,6 + nStaticNumField ) // передвинуть МАРКЕР на XX строку и XX колонку [/pre2] Всё равно таблица остаётся на первых видимых колонках. А те колонки, что за экраном, не показывает !

Haz: Andrey пишет: Что-то это не работает... Я раньше у себя это пробовал: oBrw1:nCell := 6 + nStaticNumField // передвинуть МАРКЕР на колонку выбранного фильтра или oBrw1:GoPos( 1,6 + nStaticNumField ) // передвинуть МАРКЕР на XX строку и XX колонку Всё равно таблица остаётся на первых видимых колонках. А те колонки, что за экраном, не показывает ! Работает ! GoPos() уходит на нужную колонку, хоть за экраном, хоть перед ним. Только что специально проверял

Andrey: Haz пишет: GoPos() уходит на нужную колонку, хоть за экраном, хоть перед ним. Только что специально проверял Блин, а у меня нет... Что нужно вызывать после этого метода ? Делаю так: [pre2] IF nStaticNumField <= 0 oBrw1:GoPos( 1,7 ) // передвинуть МАРКЕР на XX строку и XX колонку ELSE oBrw1:GoPos( 1,6 + nStaticNumField ) // передвинуть МАРКЕР на XX строку и XX колонку ENDIF[/pre2] Первое условие работает - oBrw1:GoPos( 1,7 ), другое нет. Т.е. если курсор на первой части таблицы, то отображается. Если уходит за видимую ПЕРВУЮ часть, то курсора не видно и таблица со столбцами не перемещается.

Dima: Andrey Пробни так Obrw:Refresh(.F.) // или Display Затем Gopos



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