Автор | Сообщение |
gfilatov
|
| модератор
|
Пост N: 699
Зарегистрирован: 25.05.05
|
|
Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть VI ) (продолжение)
Начало темы находится здесь, а теперь АНОНС * АНОНС * АНОНС * АНОНС * АНОНС Готовится к опубликованию новая сборка №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
|
| постоянный участник
|
Пост N: 2060
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.09.18 20:04. Заголовок: Игорь, перенес метод..
Игорь, перенес метод в тек. версию и собрал твой пример - получилось не как в твоем примере. Двигаемся вниз курсором, не выходя за 1ый экран идем назад к 1ой записи slave передергивает записи. Глянул и у себя это место, поведение похоже. На родном примере такого нет. Что я потерял ? Пример с методом https://my-files.ru/21e5ya
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2061
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.09.18 20:08. Заголовок: PS Отбой, потерял DO..
PS Отбой, потерял DO EVENTS, пока думал как записать в метод командой или функцией.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2062
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.09.18 20:16. Заголовок: PPS ::lHitTop..
PPS ::lHitTop := ::lHitBottom := .F. DO EVENTS EndIf RETURN lRet все исправило во всех версиях и примерах
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1356
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.09.18 21:39. Заголовок: SergKis пишет: все ..
SergKis пишет: цитата: | все исправило во всех версиях и примерах |
| Это означает, что Вы рекомендуете использовать новую редакцию этого метода в следующей сборке Я правильно понял Кстати, уже добавил новый метод FilterFTS() в текущую сборку. Благодарю за помощь
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2063
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.09.18 22:02. Заголовок: gfilatov2002 пишет Э..
gfilatov2002 пишет цитата: | Это означает, что Вы рекомендуете использовать новую редакцию этого метода в следующей сборке |
| В своей версии метод заменил, собрал только один проект. В нем все поиски\подводы по запросам работают как надо, т.е. одинаково с предыдущим вариантом. При случае передам новую версию в работу клиенту и понаблюдаю. Если Игорь применит у себя метод в проекте, будет больше информации. Впечатление у меня положительное.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1357
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.09.18 22:21. Заголовок: SergKis пишет: буд..
SergKis пишет: Тогда откладываем эти изменения для будущих сборок. Я тестировал новую редакцию этого метода на примере Tsb_seek_2 и при перемещении на начало таблицы, а затем добавлении записи по клавише F2 на экране появляется "мусор" после последней строки в базе. У текущего метода этой проблемы нет, хотя он и не сохраняет точное значение :nRowPos, как указывал Игорь.
|
|
|
Haz
|
| |
Пост N: 1345
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.09.18 22:26. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Это означает, что Вы рекомендуете использовать новую редакцию этого метода в следующей сборке |
| По коду эта редакция должна быть пошустрее предыдущей плюс управляемая позиция RowPos. У себя заменил в проекте но не методом а функцией. Пока никто не жалился.
|
|
|
Haz
|
| |
Пост N: 1348
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.09.18 22:44. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | при перемещении на начало таблицы, а затем добавлении записи по клавише F2 на экране появляется "мусор" |
| Дома только с телефона читаю. Скорее связано с тем что после добавления бровс разбалансирован. т. е. ::nLen не пересчитан. Хотя могу и ошибаться. Завтра на работе посмотрю.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2064
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.09.18 23:37. Заголовок: Haz пишет т. е. ::nL..
Haz пишет цитата: | т. е. ::nLen не пересчитан. |
| Это тоже присутствует, но не главное: :nRowPos -> 1 :nRow факт -> от 1 до 14 и 14 + 1 -> EOF() :nRowCount() -> 25 вот мусор и остался 25 - 14 = 11 строк
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2065
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.09.18 23:44. Заголовок: PS :nLen -> 502..
PS :nLen -> 502
|
|
|
Haz
|
| |
Пост N: 1349
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.09.18 23:46. Заголовок: SergKis пишет: вот ..
SergKis пишет: цитата: | вот мусор и остался 25 - 14 = 11 строк |
| Значит вопрос в двух параметрах Refresh( p1, p2) Возможно следует добавить проверку сколько сколько строк после RowPos и сколько записей после nRec. Или просто заменить на Refresh(.T.,.T.) но это даст моргание.
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2066
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.09.18 00:01. Заголовок: Haz пишет но это дас..
Haz пишет В данной ситуации 14 стр. должна стать 25 и :nRowPos -> 12, т.е перепрыг курсора неизбежен Пост. моргания не хотелось бы
|
|
|
Haz
|
| |
Пост N: 1350
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.09.18 09:04. Заголовок: SergKis пишет: Пост..
SergKis пишет: цитата: | Пост. моргания не хотелось бы |
| Сегодня добавлю проверку и пререрисовку только когда последняя запись не на RowCount()
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2067
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.09.18 10:08. Заголовок: gfilatov2002 пишет К..
gfilatov2002 пишет цитата: | Кстати, уже добавил новый метод FilterFTS() в текущую сборку |
| По мне, в сборку надо вкл. и упрощенный фильтр :FilterRow(), т.к. это др. алгоритм, нежели в :SetFilter(...) с автоматическими scope внутри. У себя я включил такой вариант (scope вполне ставится до такого фильтра) METHOD FilterRow( cFilter, lFocus ) CLASS TSBrowse LOCAL nLen := 0, cAlias := ::cAlias IF ! Empty(cFilter) ( cAlias )->( DbSetFilter( &("{||" + cFilter + "}"), cFilter ) ) ELSE ( cAlias )->( DbClearFilter() ) END ( cAlias )->( DbGotop() ) DO WHILE ( cAlias )->( !EOF() ) DO EVENTS nLen++ ( cAlias )->( DbSkip(1) ) ENDDO ( cAlias )->( DbGotop() ) DO EVENTS ::bLogicLen := {|| nLen } ::Reset() If ! empty(lFocus) ::SetFocus() EndIf RETURN Nil
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 1358
Зарегистрирован: 11.02.10
|
|
Отправлено: 26.09.18 10:35. Заголовок: SergKis пишет: в сб..
SergKis пишет: цитата: | в сборку надо вкл. и упрощенный фильтр |
| Буду рассматривать Ваше предложение для будущих сборок, поскольку подготовка новой сборки уже завершена. Возник вопрос: почему Вы не используете для подсчета количества строк в фильтре функцию DbEval() с условием For вместо устаревшего перебора по всем строкам цитата: | ... ( cAlias )->( DbGotop() ) DO WHILE ( cAlias )->( !EOF() ) DO EVENTS nLen++ ( cAlias )->( DbSkip(1) ) ENDDO ( cAlias )->( DbGotop() ) DO EVENTS |
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2068
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.09.18 10:43. Заголовок: gfilatov2002 пишет п..
gfilatov2002 пишет цитата: | почему Вы не используете для подсчета количества строк в фильтре функцию DbEval() с условием For вместо устаревшего перебора по всем строкам |
| 1. Для небольших баз "по быстрому" иногда использую, но в блок кода принудительно вставляю DoEvents(). 2. В localhost база (реальная) ~70 000 записей DbEval работает на 2-5 сек дольше, зависит еще от ширины базы
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2069
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.09.18 10:48. Заголовок: PS Перебор можно опт..
PS Перебор можно оптимизировать, к примеру имея массив блоков кода, вместо длинного, сложного выражения фильтра: DO WHILE ... FOR EACH b IN aBlock If Eval(b) EXIT EndIf NEXT SKIP ENDDO
|
|
|
Haz
|
| |
Пост N: 1351
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.09.18 11:10. Заголовок: Haz пишет: Сегодня ..
Haz пишет: цитата: | Сегодня добавлю проверку и перерерисовку только когда последняя запись не на RowCount() |
| Добавил проверку на полную перерисовку METHOD GotoRec( nRec, nRowPos ) CLASS TSBrowse LOCAL cAlias LOCAL nSkip := 0 LOCAL lMore := .T. LOCAL lSkip := .F. LOCAL lRet := .F. LOCAL lReCount := .F. If ::lIsDbf lRet := .T. cAlias := ::cAlias ::SetFocus() ::nLastPos := (cAlias)->( RecNo() ) hb_default( @nRowPos, ::nRowPos ) (cAlias)->( dbGoto(nRec) ) while !(cAlias)->(eof()) .and. nSkip < ( ::nRowCount() - nRowPos ) (cAlias)->( dbSkip(1) ) nSkip ++ end if (cAlias)->(Eof()) lReCount := .T. end (cAlias)->( dbGoto(nRec) ) nSkip := 0 ::nRowPos := 1 DO WHILE lMore (cAlias)->( dbSkip(-1) ) nSkip ++ lMore := !(cAlias)->(BOF()) .and. nSkip < nRowPos lSkip := !(cAlias)->(BOF()) ENDDO ::Refresh(lReCount, lReCount ) If lSkip ::Skip(nSkip) EndIf ::nRowPos := nSkip ::nAt := ::nLogicPos() ::ResetVScroll() If ::bChange != Nil Eval( ::bChange, Self, 0 ) EndIf ::lHitTop := ::lHitBottom := .F. do events EndIf RETURN lRet
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 2070
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.09.18 12:14. Заголовок: Игорь, в целом работ..
Игорь, в целом работает, но есть отличия, в твоем варианте удерживается :nRowPos и нижняя часть тсб остается пустой. Это видно если в примере tsb_seek__2 сделать (oBrw:cAlias)->( FieldPut( 1, 'Y_'+ProcName()+": "+strzero(nRec, 7) ) ) :nRowPos -> 1 + F2 ==> :nRowPos -> 1 и чисто после введенной строки. У меня в проекте подвод на последнем экране (там найдена позиция) происх. тоже самое. Это будет смущать и в первую очередь не меня. С последним экраном, режим передергивания должен был бы быть разрешенным, т.е. полное заполнение тсб
|
|
|
Haz
|
| |
Пост N: 1352
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.09.18 12:20. Заголовок: SergKis пишет: Это ..
SergKis пишет: цитата: | Это будет смущать и в первую очередь не меня. С последним экраном, режим передергивания должен был бы быть разрешенным, т.е. полное заполнение тсб |
| Давай какой нить флажок добавим для этого ?
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|