powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ээмуляция табличной формы
25 сообщений из 33, страница 1 из 2
Ээмуляция табличной формы
    #39540791
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для решения конкретных задач (которые с большими ограничениями решались табличной формой) сделал ленточную форму которая имеет нужный функционал из табличной + имеет необходимые мне новые свойства.
1. Выглядит как табличная.
2. Может иметь закреплённые столбцы (как слева так и справа).
3. Свобода форматирования заголовка и примечания (для вывода итогов) и их перемещение при горизонтальной прокрутке формы.

Так вот, все поставленные задачи решены успешно за исключения одного нюанса. Горизонтальную прокрутку (с целью реализации закреплённых столбцов) смог осуществить только с помощью FlatScrollBar и поэтому визуально горизонтальная и вертикальная полосы прокрутки отличаются.

Нельзя ли сделать горизонтальную полосу такого же вида как и вертикальная? На примере прикреплена снизу (от ленточной формы), но конечно же не функционирует как FlatScrollBar.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39540802
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVНельзя ли сделать горизонтальную полосу такого же вида как и вертикальная?
Можно, через API, где-то я уже делал такое, нужно поискать.
Как-то сделал гибрид табличной формы (данные) и ленточной (для заголовков), но синхронизировать горизонтадьную прокрутку удалось только через таймер, а таймер влиял на пересчет вычисляемых полей и условное форматирование - пришлось отказаться от идеи. А так неплохо выглядело, кроме фиксации колонок можно было менять их размер, переставлять, скрывать, пользоваться встроенными фильтрами.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39540803
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, вот, похоже, нашел свой эксперимент, он в accdb, сюда не лезет, но идея там такая:
По таймеру считывается позиция встроенного скроллбара подформы через API функцию GetScrollPos, предварительно получив хандлер этого скроллбара через EnumChildWindows, при изменении положения пересчитывается красивый заголовок от ленточной формы.

Посему поддержу вопрос: можно ли "прицепиться" к штатному скроллбару и "слушать" от него события вместо опроса по таймеру позиции этого скроллбара? У меня в свое время не хватиле времени/желания это добить. Завязываться на ActiveX-ы совершенно не хочется, т.к. они попросту почти все не работают в 64-х разрядной версии офиса и вообще капризная вещь.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39540818
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinДа, вот, похоже, нашел свой эксперимент, он в accdb, сюда не лезет, но идея там такая:
По таймеру считывается позиция встроенного скроллбара подформы через API функцию GetScrollPos, предварительно получив хандлер этого скроллбара через EnumChildWindows, при изменении положения пересчитывается красивый заголовок от ленточной формы.

Посему поддержу вопрос: можно ли "прицепиться" к штатному скроллбару и "слушать" от него события вместо опроса по таймеру позиции этого скроллбара? У меня в свое время не хватиле времени/желания это добить. Завязываться на ActiveX-ы совершенно не хочется, т.к. они попросту почти все не работают в 64-х разрядной версии офиса и вообще капризная вещь.

Дык генерируйте события и обробатывайте их.
Чё вы превезались к Access 64(полный ушерб выгод ни каких читайте наши топики)
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39540821
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIгенерируйте события и обробатывайте их
Мой вопрос именно в том, как сгенерировать событие хотя бы от перемещения полосы прокрутки, в идеале еще от изменения размеров/положения колонок табличной формы.

ROIЧё вы превезались к Access 64
IT службы компаний далеко не всегда руководствуются нуждами акцесс программистов, поэтому ставятся 64-х разрядные версии для работающих в Экселе (а там есть преимущества). Поэтому приходится работать с тем, что есть у клиентов.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39540902
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin
Как-то сделал гибрид табличной формы (данные) и ленточной (для заголовков), но синхронизировать горизонтадьную прокрутку удалось только через таймер.

Тут немного не то. Тут нет гибрида. Тут классическая табличная форма.
Заморачиваться с синхронизацией не хотелось бы так как теряется надёжность работы. Хочется просто найти компонент аналогичный FlatScrollBar только имеющий вид встроенной полосы прокрутки.
ActiveX не проблема, всегда программу можно запустить в 2003 рантайме.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39540906
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShinМой вопрос именно в том, как сгенерировать событие хотя бы от перемещения полосы прокрутки, в идеале еще от изменения размеров/положения колонок табличной формы.

Я это упростил сделав прокрутку целыми полями. В зависимости от находжения фокуса в таблице отрисовывается видимость полей В фиксированных позициях) и соответствующая позиция FlatScrollBar. Получилось достаточно надёжно и удобно, как мне кажется.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39540936
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVХочется просто найти компонент аналогичный FlatScrollBar только имеющий вид встроенной полосы прокрутки.Ну компонент - не компонент, но всё ж
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39540964
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПанургGVOVХочется просто найти компонент аналогичный FlatScrollBar только имеющий вид встроенной полосы прокрутки.Ну компонент - не компонент, но всё ж

Контрол интересный, но вид у него всё таки не такой как у стандартной полосы прокрутки субформы
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39540997
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOVКонтрол интересный, но вид у него всё таки не такой как у стандартной полосы прокрутки субформыДа? Как знаешь...
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541034
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургНу компонент - не компонент, но всё ж
О!, Похоже, в нем и на мой вопрос ответ есть. Не простой, правда.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541040
GVOV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Панург,

А у меня так не получается.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541354
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет,

MrShinПосему поддержу вопрос: можно ли "прицепиться" к штатному скроллбару и "слушать" от него события вместо опроса по таймеру позиции этого скроллбара? У меня в свое время не хватиле времени/желания это добить. Завязываться на ActiveX-ы совершенно не хочется, т.к. они попросту почти все не работают в 64-х разрядной версии офиса и вообще капризная вещь.
Вот тут 20797575 я выкладывал пример. Там же описал все плюсы и минусы. Код можно адаптировать под 64bit.

MrShinМой вопрос именно в том, как сгенерировать событие хотя бы от перемещения полосы прокрутки
Прослушиваются не только клики по полосе прокрутки, но и другие события: прокрутка формы колесиком мыши, прокрутка формы при использовании middle button(нажатие на колесико и удержание), прокрутка формы в результате смены фокуса, как при использовании клавиатуры(tab, стрелки и т.п.), так и мыши. Тот случай, когда прокручивание происходит в результате получения фокуса контролом, который частично или полностью не виден, выходя за границы формы.

MrShinкак сгенерировать событие ... в идеале еще от изменения размеров/положения колонок табличной формы
Основа примера - функция API SetWindowsHookEx. Пример можно доработать/переделать под вашу задачу. Как я понял, по сути что вам нужно, это возможность подписки на событие, происходящее в ответ на изменение ширины столбцов или порядка их следования. Такое событие можно организовать, основа кода заложена. Если действительно нужно - могу поучаствовать, допилим.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541359
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GVOV,

заметил три шероховатости:
1. Если сделать двойной клик по стрелке гор.полосы прокрутки, то вместо ожидаемых смещений на ширину двух столбцов, происходит смещение только на один столбец.
2. Станьте в поле(значение 6129). Нажмите TAB. Что произошло со значением в поле, куда перешел фокус? Нажмите TAB снова. Опять фокусы.
3. Станьте в итоговое поле(значение 97). Кликните по стрелке гор.полосы прокрутки вправо. Посмотрите, что произошло с итогом по столбцу "Сумма". Сделайте еще пару кликов по стрелке. Итог по "Сумма" отображается некорректно.

Я правильно понял, что ваша цель - создание горизонтальных и вертикальных(несмещаемых) итогов?
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541399
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinROIгенерируйте события и обробатывайте их
Мой вопрос именно в том, как сгенерировать событие хотя бы от перемещения полосы прокрутки, в идеале еще от изменения размеров/положения колонок табличной формы.

ROIЧё вы превезались к Access 64
IT службы компаний далеко не всегда руководствуются нуждами акцесс программистов, поэтому ставятся 64-х разрядные версии для работающих в Экселе (а там есть преимущества). Поэтому приходится работать с тем, что есть у клиентов.
Нука- нука по подробнее преимущество Эксель 64 (конкретные преимущество)
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541402
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вакшуль СергейОснова примера - функция API SetWindowsHookEx
Да, похоже, то что нужно! Спасибо! Как найдется время, допилю свой эксперимент.

Кстати, пока не разбирался с кодом досконально, но успел заметить, что активно используются таймеры. Для чего они нужны в двух словах?
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541405
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIНука- нука по подробнее преимущество Эксель 64 (конкретные преимущество)
Основное преимущество - нет ограничения в 2ГБ по памяти. Одного этого пункта бывает достаточно для ИТ отдела при выборе разрядности, особенно если уже были жалобы о нехватке памяти. В некоторых организациях на Экселе чуть ли не ERP умудряются сделать и мучаются потом с этим. При работе с запросами из базы данных памяти много нужно.

Project также начал поддерживать файлы более 2 Гб, некоторым уже не хватет 2 гиг на проект.

В общем, реальность такова, что, по моим ощущениям, примерно четверть организаций на западе ставит 64-х разрядные версии, с этим приходится жить.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541526
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinROIНука- нука по подробнее преимущество Эксель 64 (конкретные преимущество)
Основное преимущество - нет ограничения в 2ГБ по памяти. Одного этого пункта бывает достаточно для ИТ отдела при выборе разрядности, особенно если уже были жалобы о нехватке памяти. В некоторых организациях на Экселе чуть ли не ERP умудряются сделать и мучаются потом с этим. При работе с запросами из базы данных памяти много нужно.

Project также начал поддерживать файлы более 2 Гб, некоторым уже не хватет 2 гиг на проект.

В общем, реальность такова, что, по моим ощущениям, примерно четверть организаций на западе ставит 64-х разрядные версии, с этим приходится жить.
Обалдеть.
Оказывается человек создал базу 2 гб.
И гордится этим (базу заведомо гавно)
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541594
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIОбалдеть.
Оказывается человек создал базу 2 гб.
И гордится этим (базу заведомо гавно)
Не понял, что за наезды? Я что ли файлы с потребностью памяти больше 2 гиг создаю или ратую за установку 64-х битной версии? Я констатирую факт. Если вам не приходится работать с клиентами, у которых стоит 64-х битный офис, то вам просто везет.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541601
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinROIОбалдеть.
Оказывается человек создал базу 2 гб.
И гордится этим (базу заведомо гавно)
Не понял, что за наезды? Я что ли файлы с потребностью памяти больше 2 гиг создаю или ратую за установку 64-х битной версии? Я констатирую факт. Если вам не приходится работать с клиентами, у которых стоит 64-х битный офис, то вам просто везет.
1 Выигрышь в 2 гб не о чем
2 Много чего нуно допиливать (смотрите наши топики)
3 а так как вы и с 32бит работать не можете то о 64 бит забудьте.
4 сначала научитесь с 32бит работать, а уж потом (64)
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541607
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinROIОбалдеть.
Оказывается человек создал базу 2 гб.
И гордится этим (базу заведомо гавно)
Не понял, что за наезды? Я что ли файлы с потребностью памяти больше 2 гиг создаю или ратую за установку 64-х битной версии? Я констатирую факт. Если вам не приходится работать с клиентами, у которых стоит 64-х битный офис, то вам просто везет.
Я же спросил про ЭКСЕЛЬ ну в чем преимущество 64 только не надо про размер файла.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541654
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI,

Еще раз. Мне не нужны советы по выбору битности, я сам таких советов могу надавать сколько хочешь, начиная с Access 2.0. Никогда по доброй воле 64-х битный геморрой не поставлю. Перечитай еще раз, разве я говорил, что эксель 64 умеет работать с ФАЙЛАМИ больше 2 Гб? Я говорил про ПАМЯТЬ, в любом сравнении версий об этом есть. Дальнейшую дискуссию вести не вижу смысла, оффтопик к тому же.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541672
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinROI,

Еще раз. Мне не нужны советы по выбору битности, я сам таких советов могу надавать сколько хочешь, начиная с Access 2.0. Никогда по доброй воле 64-х битный геморрой не поставлю. Перечитай еще раз, разве я говорил, что эксель 64 умеет работать с ФАЙЛАМИ больше 2 Гб? Я говорил про ПАМЯТЬ, в любом сравнении версий об этом есть. Дальнейшую дискуссию вести не вижу смысла, оффтопик к тому же.
Я знаю про ограничения в размере файла.
Делаю периодическое подгрызания базы.
проблем нет.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541784
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin...но успел заметить, что активно используются таймеры. Для чего они нужны в двух словах?

в той же ветке "13-ый квартал" обратил мое внимание 20782737 на работу Бенедикта 10808021 , предложив доработать.
Но чтобы провести такую доработку, нужно глубоко погрузится в тему. Одно дело использовать инструменты для работы с данными, другое дело создавать их. Копать в том направлении возможности/необходимости нет.
Я пробовал с сублассингом формы, обрабатывая системые сообщение, но натолкнулся на определенные ограничения, описал тут: 20774213 , 20780341
Поэтому и остановился на SetWindowsHookEx. Эта функция среди прочего позволяется мониторить "low-level mouse input events". Т.е., допустим, сделали клик и смотрим: куда собственно? Если клик пришелся по полосе прокрутки, значит, ее значение в результате клика скорее всего изменится. Но изменится оно чуть позже, ведь мы же перехватили системное сообщение(можем даже его отменить) и до полосы прокрутки оно еще не дошло. Т.е. когда сообщение дойдет и будет обработано нам нужно будет вернутся и сгенерировать то самое событие ради чего все и затеялось: RaiseEvent Scrolled(blnVScroll, blnHScroll)
Но как вернутся? Завести таймер и ждать обратный вызов: SetTimer(0, 0, 1500, AddressOf TimerProcForMOUSE)
А в процедуре обратного вызова(TimerProcForMOUSE) уже смотреть что изменилось и делать выводы.

Да таймер используется, но только когда действительно нужно.
...
Рейтинг: 0 / 0
Ээмуляция табличной формы
    #39541800
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вакшуль Сергей,
Спасибо за пояснения.

Вакшуль Сергейнужно глубоко погрузится в тему
Да, это я заметил. По субклассингу, я смотрю, на Стэке тоже на смогли помочь.

Вакшуль СергейДа таймер используется, но только когда действительно нужно
Я почему полез в таймеры, заметил, что заголовок окна VBA редактора иногда помаргивает, как при работающем таймере. Не мог там остаться какой-то из таймеров работать даже когда фокуса нет?
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ээмуляция табличной формы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]