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

Haz: SergKis пишет: ломает фокус на др. контролах, при работе в событии CHANGE ... У себяубрал, т.к. сломались подводы на getbox-ах, с них фокус улетал на тсб Да, сразу не обратил внимания. В остальном без фокуса есть замечания ?

SergKis: Haz пишет В остальном без фокуса есть замечания ? Собрал реальный проект сегодня, отдал в работу. Будем посмотреть Фокус вылез на однотипных подводах, поправил, у меня ok!, остальное подождем ...

SergKis: gfilatov2002 Что то сломалось в применении This для Domethod(...)[pre2] // ошибка везде лезет (пример C:\MiniGui\SAMPLES\BASIC\BUTTON_1>call ..\..\..\batch\compile.bat demo) This.Button_4.SetFocus() demo.prg(154) Error E0030 Syntax error "syntax error at '.'" ставлю сюда (но не важно в др. событиях так же) This.Button_4.SetFocus() END WINDOW ... This.Button_4.Height This.Button_4.Index работают [/pre2]


gfilatov2002: SergKis пишет: Может тут слегка поправить ? Принято Благодарю за помощь

gfilatov2002: SergKis пишет: В методе GotoRec(...) надо убрать строку Пока вернулся к старой редакции этого метода, которая работает медленнее, но стабильнее

gfilatov2002: SergKis пишет: сломалось в применении This для Domethod(...) Уже поправил - это был мой "косяк" Благодарю за подсказку

SergKis: gfilatov2002 пишет Пока вернулся к старой редакции этого метода Может новый метод назвать :GoRec( nRecNo, nRowPos), потом можно совместить, если что. По мне он и сейчас хорош и требует небольшой доводки. Как метод, наверно, только у меня крутится. Если будет у большего числа пользователей, быстрее отладится

SergKis: gfilatov2002 Игорь поправил :GotoRec(...). Пример для проверки (функ. myGotoRow(...) с галочками работает функция) https://my-files.ru/gwnw6t Текст метода [pre2] METHOD GotoRec( nRec, nRowPos ) CLASS TSBrowse LOCAL cAlias LOCAL nSkip := 0 LOCAL n := 0 LOCAL nRecSave := 0 LOCAL lMore := .T. LOCAL lSkip := .F. LOCAL lRet := .F. LOCAL lReCount := .F. If ::lIsDbf lRet := .T. cAlias := ::cAlias ::nLastPos := (cAlias)->( RecNo() ) hb_default( @nRowPos, ::nRowPos ) (cAlias)->( dbGoto(nRec) ) n := 0 DO WHILE (cAlias)->( !BOF() ) .and. n < nRowPos - 1 (cAlias)->( dbSkip(-1) ) If !(cAlias)->( BOF() ) n ++ EndIf ENDDO nSkip := n (cAlias)->( dbGoto(nRec) ) (cAlias)->( dbSkip( -nSkip ) ) nRecSave := (cAlias)->( Recno() ) nRowPos := Min( nSkip + 1, nRowPos ) (cAlias)->( dbGoto(nRec) ) n := 0 DO WHILE (cAlias)->( !EOF() ) .and. n < ( ::nRowCount() - nRowPos ) (cAlias)->( dbSkip(1) ) If !(cAlias)->( EOF() ) n ++ EndIf ENDDO If n < ( ::nRowCount() - nRowPos ) lReCount := .T. EndIf (cAlias)->( dbGoto(nRecSave) ) ::nRowPos := nRowPos ::Refresh( lReCount, lReCount ) ::Skip( nSkip ) ::ResetVscroll() If ::bChange != Nil Eval( ::bChange, Self, 0 ) EndIf ::lHitTop := ::lHitBottom := .F. DO EVENTS EndIf RETURN lRet [/pre2] Пример для проверки работы метода https://my-files.ru/e0jvqq

Andrey: SergKis пишет: Пример для проверки работы метода Что-то на Down давишь и запись никуда не двигается... Или это только у меня так ?

SergKis: Andrey подробнее, на какой строке жмешь, если на последней, то куда ниже двигать ? так же на первой Up ?

gfilatov2002: SergKis пишет: Игорь поправил :GotoRec(...) Супер! Метод работает отлично Благодарю за реальную помощь в развитии этой библиотеки

Haz: SergKis пишет: Пример для проверки работы метода Подумалось, может в методе в качестве nRec реализовать возможность принимать не только номер записи, но и блок кода? Этот блок должен вернуть номер записи, тогда туда можно закинуть и dbLocate() и dbSeek () и тд! И устанавливать запись на результат выполнения блока.

Andrey: SergKis пишет: подробнее, на какой строке жмешь, если на последней, то куда ниже двигать ? так же на первой Up ? Маркер стоит посередине таблицы. Нажимаем Down - менюшка, а потом маркер на месте, а запись поменялась с нижней. Если нажимаем Up, менюшка и маркер двигает запись вверх на одну. Т.е. я предполагал, что при движении вниз и маркер должен скакать сам вниз вместе с записью.

SergKis: Andrey пишет Т.е. я предполагал, что при движении вниз и маркер должен скакать сам вниз вместе с записью. :GotoRec(nRec, nRowPos) теперь имеет 2а параметра. если второй пар-р не задан - удерживается текущий :nRowPos тот алгоритм, что предполагал, проделывай сам. см. работу Insert -> там 2ой параметр используется

SergKis: PS сам маркер никому ничего должен скорее ты ему ... алгоритмом

TimTim: Отличная идея, классный алгоритм. Буду изучать. Andrey пишет: Т.е. я предполагал, что при движении вниз и маркер должен скакать сам вниз вместе с записью. Кстати, при движении вверх происходит как раз так, как Андрей и хотел, а вниз - нет. Маркер не "слушается", ведет себя как хочет?

SergKis: TimTim пишет Маркер не "слушается", ведет себя как хочет? В этом вы правы - лечится так (цель была проверить работу new :GotoRec):[pre2] EndIf // nRec := nRec1 Else (cAls)->( dbSkip(-1) ) nRec2 := (cAls)->( RecNo() ) // nRec := nRec2 EndIf [/pre2] Алгоритм с перемещением маркера такой, на вскидку (могут быть шероховатости)[pre2] STATIC FUNCTION RecMove(oBrw, nSkip) LOCAL nRec1, oRec1, nKey1, nRec2, oRec2, nKey2 LOCAL cAls := oBrw:cAlias, lRet := .F. LOCAL nRow := oBrw:nRowPos, nPos LOCAL nMax := oBrw:nRowCount() LOCAL nRec := (cAls)->( RecNo() ) IF ! MsgYesNo( "You want to "+iif( nSkip > 0, "Down", "Up" )+; " record in the table ?", "Сonfirmation", .f. ) oBrw:SetFocus() RETURN lRet ENDIF nRec1 := nRec nRec2 := nRec1 oRec1 := (cAls)->( RecGet() ) nKey1 := oRec1:Get('F0') nPos := 0 If (cAls)->( FLock() ) If nSkip > 0 (cAls)->( dbSkip(1) ) If (cAls)->( !EOF() ) nRec2 := (cAls)->( RecNo() ) EndIf nRec := nRec2 nPos := 1 Else (cAls)->( dbSkip(-1) ) nRec2 := (cAls)->( RecNo() ) nRec := nRec2 EndIf If nRec1 != nRec2 oRec2 := (cAls)->( RecGet() ) nKey2 := oRec2:Get('F0') oRec2:Set('F0', nKey1) oRec1:Set('F0', nKey2) (cAls)->( RecPut(oRec1) ) (cAls)->( dbGoto(nRec1) ) (cAls)->( RecPut(oRec2) ) lRet := .T. EndIf (cAls)->( dbUnLock() ) Endif // MsgDebug( nRec, nRow ) (cAls)->( dbGoto(nRec) ) If lRet nPos := iif( nRow < nMax, nPos, 0 ) oBrw:GotoRec(nRec, nRow + nPos) DO EVENTS EndIf oBrw:SetFocus() RETURN lRet [/pre2]

SergKis: pS Забыл, что либы еще нет. Пример https://my-files.ru/y720va

TimTim: , но ... SergKis пишет: могут быть шероховатости Их есть. Делаем так. В программе изначально ставим создать БД не с 15 записями, а скажем с 20 (можно просто вставить в конец 3 или больше строк). Главное вся БД не помещается в окошко. Передвигаемся в конец базы. Поднимаем последнюю строку на 1 вверх, затем опускаем вниз, типа ошиблись. У меня 20-я запись идет после 16. А у вас?

Haz: TimTim пишет: У меня 20-я запись идет после 16. А у вас? У меня все нормально



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