|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
JavaStudentПодчиненная ленточная форма. 31 квадратик (2 см на 2 см) в строке. 44 строки. 1 колонка, например, наименование стран. Двигаю бегунок. Наименование стран пропадает. Определяю положение бегунка - двигаю первый столбик. Но таймер очень плохое решение... Другого, пока нет... Мелкнула идея, но пример было лень делать, решил поискать по форумам (может такое уже было ?) ... Нашел на соседнем форуме по Access решение уважаемого mobile (правда, чтобы скачать его, надо там зарегистрироваться, но это уж вам решать). Посмотрите, возможно вам это поможет как-то в решении вашей задачи. http://www.cyberforum.ru/ms-access/thread1347510.html#post7075934 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 19:55 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
guest_rusimport, там тоже таймер ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 20:25 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
А почему бы не сделать свой "бегунок"? Точнее, взять готовый scrollbar из Microsoft Forms 2.0, и описать экшн его событий? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 21:38 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
PredeclaredА почему бы не сделать свой "бегунок"? Точнее, взять готовый scrollbar из Microsoft Forms 2.0, и описать экшн его событий? Уже пару раз, после очередных обновлений винды, получал сообщение "Приложение ... не поддерживает этот элемент ActiveX". Проблема освещалась на форуме. Не критично, в конце концов лечится, но неудобство остается. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 21:56 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Predeclared, бОльшие сложности составят синхронизация в обратном направлении, т.е. изменилось положение формы вследствие какого-то события(смена фокуса, верт.прокрутка мыши, гориз.прокрутка мыши, прокрутка через middle button, ввод в поле, которое частично невидно, смена источника данных), это нужно зафиксировать, обработать и новые значения передать на полосы прокрутки. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 22:03 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Вакшуль Сергейверт.прокрутка мыши, гориз.прокрутка мыши, прокрутка через middle button я имею ввиду не клики, левой кнопкой, а работу колесика и средней кнопки. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 22:11 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Вакшуль Сергейguest_rusimport, там тоже таймер К сожалению - да, если бы не необходимость синхронизации вертикальных полос прокрутки двух подчиненных форм... у ТС 44 строки - на один экран, боюсь, не поместится... Может сделать кнопки листания экранами, отказавшись от вертикальных полос прокрутки этих двух подчиненных форм? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 22:11 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Что-то вы все усложняете. Проблема задачи ТС в том, что в ленточной форме нет "закрепления столбцов", как в табличной. Он идет по пути перемещения нужного для видимости поля вслед за скролом. Я предлагаю другой путь: Не трогать нужные для видимости поля, а елозить остальными 30 полями, пользуя не штатный скрол, а свой "бегунок" (можно даже полностью самому "слепить"). Типа такого (очень сыренько, только показать идею): ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 22:35 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Predeclared, симпатично :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 22:44 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Predeclared, ну, вот, опять... скачал пример ... получаю сообщение "Отсутствует объект в данном элементе управления" ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 22:46 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
guest_rusimport, Небось какой новомодный Access? У мну в 2003 и 2007 все гуд. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 23:01 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Predeclaredguest_rusimport, Небось какой новомодный Access? У мну в 2003 и 2007 все гуд. Да всё как обычно, я с 2003 -го и не слезал (забыл ты, наверное) ... Win7 64бит, Акс 2003 32 бит ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 23:28 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Была мысль рисовать свой ползунок. Зная ширину подчиненной формы, зная ширину квадратиков... И выводить квадратики по мере движения своего ползунка. Но я испугался реализации. Учитывая таймер и Hook, возможно это меньшее зло. Есть большие сомнения, что большое кол-во элементов будут двигаться приемлемо для глаз. Еще плюс этого решения, что можно брать не месяц (31 день), а год или три. А на самом бегунке менять надпись при движении январь 2017, февраль 2017, март 2019. При остановке расчет и вывод видимых квадратиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 23:29 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
>>Win7 64бит "Вот оно как, МихалычЪ" (c) :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 23:33 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
JavaStudent... Есть большие сомнения, что большое кол-во элементов будут двигаться приемлемо для глаз. ... На самом деле, ничего двигать и не нужно. Если в видимой области формы помещается, например, 16 полей, то их и должно быть ровно 16. Менять надо только значения ControlSource Property этих 16 полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 23:41 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Ну и заголовки столбцов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 23:42 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Predeclared>>Win7 64бит "Вот оно как, МихалычЪ" (c) :) Да хрен с ним... Всё это в итоге чинится... Идея твоя и так, без примера, понятна... Я то имел ввиду закрепить нужный столбец в одной подчиненной форме , а в другой подчиненной форме, расположенной притык к первой, выводить остальные столбцы, а вертикально листать эти формы с помощью сделанных кнопок поэкранно, убрав из форм вертикальные линейки прокрутки. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2017, 23:45 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
guest_rusimport, Помню, была битва за синхронизацию. Это не мой паттерн, потому даже не вникал в сложности. Я сложности стараюсь обходить стороной. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 00:04 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Predeclaredguest_rusimport, ... Я сложности стараюсь обходить стороной. :) Аналогично :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 03:12 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
JavaStudentВопрос как инициировать событие Scroll?есть еще одно направление, если есть желание. См.вложение. Это не готовое решение. Просто демонстрация, как можно поймать событие скрола без хуков. Покликайте, покрутите подформу справа(слева не трогайте). Результат прокрутки(просто смена чисел) будет выведен в поля заголовков подформ. А вот как же синхронизировать две формы, оставляю вам. Главное, что событие можно сказать, организовано. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 03:40 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Красным выделил куда нужно смотреть. Цифра изменилась - прокрутка, можно сказать зафиксирована. В основе - замаскированное вычисляемое поле в форме f1_1. Поле растянуто по всей длине формы на заднем плане. Любой чих вызывает его перевычисление. Собственно, вот оно и событие. Но тут нужно еще копать и копать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 03:49 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
JavaStudent, да что же ты примеры то не смотришь? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 03:59 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Панург, поздно, наверно :) Сколько раз вис Access, пока шла работа? :) Панург, а что скажете насчет переключения Tab-ом. Во вложении ваш файл. Я только добавил несколько контролов и вертикальную полосу прокрутки, чтобы можно было оценить, где находится целевой контрол. Прокрутка окна, вызванная сменой активного контрола обрабатывается или нет? В код не смотрел, только на результат. Если клацать Tab, то целевой контролл смещается по горизонтали как хочет. Эти сдвиги код ловит? а accLocation это что? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 05:23 |
|
Как в форме поймать событие Scroll?
|
|||
---|---|---|---|
#18+
Вакшуль СергейСколько раз вис Access, пока шла работа? :)Практически нисколько... Я вкурсе, поэтому не делаю резких движений. Технология отработана и применяется для создания разных элементов управления "на лету" (treeview, listview и прочего). Вакшуль Сергейчто скажете насчет переключения Tab-ом.Сделал два варианта - ловим через события формы или каждого скрола (см. примеры). Вакшуль Сергейа accLocation это что?недокументированный метод accLocation - позволяет узнать в пикселях расстояние от края экрана сверху и слева, высоту и ширину контрола, в данном случае текстбокса. Получаю ширину текстбокса в пикселях и в твипах. Таким образом я узнаю сколько твипов на пиксель без API. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2017, 11:15 |
|
|
start [/forum/topic.php?fid=45&msg=39552041&tid=1611913]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 252ms |
total: | 391ms |
0 / 0 |