|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
Для решения конкретных задач (которые с большими ограничениями решались табличной формой) сделал ленточную форму которая имеет нужный функционал из табличной + имеет необходимые мне новые свойства. 1. Выглядит как табличная. 2. Может иметь закреплённые столбцы (как слева так и справа). 3. Свобода форматирования заголовка и примечания (для вывода итогов) и их перемещение при горизонтальной прокрутке формы. Так вот, все поставленные задачи решены успешно за исключения одного нюанса. Горизонтальную прокрутку (с целью реализации закреплённых столбцов) смог осуществить только с помощью FlatScrollBar и поэтому визуально горизонтальная и вертикальная полосы прокрутки отличаются. Нельзя ли сделать горизонтальную полосу такого же вида как и вертикальная? На примере прикреплена снизу (от ленточной формы), но конечно же не функционирует как FlatScrollBar. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 02:22 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
GVOVНельзя ли сделать горизонтальную полосу такого же вида как и вертикальная? Можно, через API, где-то я уже делал такое, нужно поискать. Как-то сделал гибрид табличной формы (данные) и ленточной (для заголовков), но синхронизировать горизонтадьную прокрутку удалось только через таймер, а таймер влиял на пересчет вычисляемых полей и условное форматирование - пришлось отказаться от идеи. А так неплохо выглядело, кроме фиксации колонок можно было менять их размер, переставлять, скрывать, пользоваться встроенными фильтрами. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 07:08 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
Да, вот, похоже, нашел свой эксперимент, он в accdb, сюда не лезет, но идея там такая: По таймеру считывается позиция встроенного скроллбара подформы через API функцию GetScrollPos, предварительно получив хандлер этого скроллбара через EnumChildWindows, при изменении положения пересчитывается красивый заголовок от ленточной формы. Посему поддержу вопрос: можно ли "прицепиться" к штатному скроллбару и "слушать" от него события вместо опроса по таймеру позиции этого скроллбара? У меня в свое время не хватиле времени/желания это добить. Завязываться на ActiveX-ы совершенно не хочется, т.к. они попросту почти все не работают в 64-х разрядной версии офиса и вообще капризная вещь. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 07:27 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
MrShinДа, вот, похоже, нашел свой эксперимент, он в accdb, сюда не лезет, но идея там такая: По таймеру считывается позиция встроенного скроллбара подформы через API функцию GetScrollPos, предварительно получив хандлер этого скроллбара через EnumChildWindows, при изменении положения пересчитывается красивый заголовок от ленточной формы. Посему поддержу вопрос: можно ли "прицепиться" к штатному скроллбару и "слушать" от него события вместо опроса по таймеру позиции этого скроллбара? У меня в свое время не хватиле времени/желания это добить. Завязываться на ActiveX-ы совершенно не хочется, т.к. они попросту почти все не работают в 64-х разрядной версии офиса и вообще капризная вещь. Дык генерируйте события и обробатывайте их. Чё вы превезались к Access 64(полный ушерб выгод ни каких читайте наши топики) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 08:18 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
ROIгенерируйте события и обробатывайте их Мой вопрос именно в том, как сгенерировать событие хотя бы от перемещения полосы прокрутки, в идеале еще от изменения размеров/положения колонок табличной формы. ROIЧё вы превезались к Access 64 IT службы компаний далеко не всегда руководствуются нуждами акцесс программистов, поэтому ставятся 64-х разрядные версии для работающих в Экселе (а там есть преимущества). Поэтому приходится работать с тем, что есть у клиентов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 08:34 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
MrShin Как-то сделал гибрид табличной формы (данные) и ленточной (для заголовков), но синхронизировать горизонтадьную прокрутку удалось только через таймер. Тут немного не то. Тут нет гибрида. Тут классическая табличная форма. Заморачиваться с синхронизацией не хотелось бы так как теряется надёжность работы. Хочется просто найти компонент аналогичный FlatScrollBar только имеющий вид встроенной полосы прокрутки. ActiveX не проблема, всегда программу можно запустить в 2003 рантайме. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 10:54 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
MrShinМой вопрос именно в том, как сгенерировать событие хотя бы от перемещения полосы прокрутки, в идеале еще от изменения размеров/положения колонок табличной формы. Я это упростил сделав прокрутку целыми полями. В зависимости от находжения фокуса в таблице отрисовывается видимость полей В фиксированных позициях) и соответствующая позиция FlatScrollBar. Получилось достаточно надёжно и удобно, как мне кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 10:58 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
GVOVХочется просто найти компонент аналогичный FlatScrollBar только имеющий вид встроенной полосы прокрутки.Ну компонент - не компонент, но всё ж ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 11:33 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
ПанургGVOVХочется просто найти компонент аналогичный FlatScrollBar только имеющий вид встроенной полосы прокрутки.Ну компонент - не компонент, но всё ж Контрол интересный, но вид у него всё таки не такой как у стандартной полосы прокрутки субформы ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 12:11 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
GVOVКонтрол интересный, но вид у него всё таки не такой как у стандартной полосы прокрутки субформыДа? Как знаешь... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 12:52 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
ПанургНу компонент - не компонент, но всё ж О!, Похоже, в нем и на мой вопрос ответ есть. Не простой, правда. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 13:34 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
Панург, А у меня так не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 13:39 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
Всем привет, MrShinПосему поддержу вопрос: можно ли "прицепиться" к штатному скроллбару и "слушать" от него события вместо опроса по таймеру позиции этого скроллбара? У меня в свое время не хватиле времени/желания это добить. Завязываться на ActiveX-ы совершенно не хочется, т.к. они попросту почти все не работают в 64-х разрядной версии офиса и вообще капризная вещь. Вот тут 20797575 я выкладывал пример. Там же описал все плюсы и минусы. Код можно адаптировать под 64bit. MrShinМой вопрос именно в том, как сгенерировать событие хотя бы от перемещения полосы прокрутки Прослушиваются не только клики по полосе прокрутки, но и другие события: прокрутка формы колесиком мыши, прокрутка формы при использовании middle button(нажатие на колесико и удержание), прокрутка формы в результате смены фокуса, как при использовании клавиатуры(tab, стрелки и т.п.), так и мыши. Тот случай, когда прокручивание происходит в результате получения фокуса контролом, который частично или полностью не виден, выходя за границы формы. MrShinкак сгенерировать событие ... в идеале еще от изменения размеров/положения колонок табличной формы Основа примера - функция API SetWindowsHookEx. Пример можно доработать/переделать под вашу задачу. Как я понял, по сути что вам нужно, это возможность подписки на событие, происходящее в ответ на изменение ширины столбцов или порядка их следования. Такое событие можно организовать, основа кода заложена. Если действительно нужно - могу поучаствовать, допилим. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 23:03 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
GVOV, заметил три шероховатости: 1. Если сделать двойной клик по стрелке гор.полосы прокрутки, то вместо ожидаемых смещений на ширину двух столбцов, происходит смещение только на один столбец. 2. Станьте в поле(значение 6129). Нажмите TAB. Что произошло со значением в поле, куда перешел фокус? Нажмите TAB снова. Опять фокусы. 3. Станьте в итоговое поле(значение 97). Кликните по стрелке гор.полосы прокрутки вправо. Посмотрите, что произошло с итогом по столбцу "Сумма". Сделайте еще пару кликов по стрелке. Итог по "Сумма" отображается некорректно. Я правильно понял, что ваша цель - создание горизонтальных и вертикальных(несмещаемых) итогов? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2017, 23:37 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
MrShinROIгенерируйте события и обробатывайте их Мой вопрос именно в том, как сгенерировать событие хотя бы от перемещения полосы прокрутки, в идеале еще от изменения размеров/положения колонок табличной формы. ROIЧё вы превезались к Access 64 IT службы компаний далеко не всегда руководствуются нуждами акцесс программистов, поэтому ставятся 64-х разрядные версии для работающих в Экселе (а там есть преимущества). Поэтому приходится работать с тем, что есть у клиентов. Нука- нука по подробнее преимущество Эксель 64 (конкретные преимущество) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 06:08 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
Вакшуль СергейОснова примера - функция API SetWindowsHookEx Да, похоже, то что нужно! Спасибо! Как найдется время, допилю свой эксперимент. Кстати, пока не разбирался с кодом досконально, но успел заметить, что активно используются таймеры. Для чего они нужны в двух словах? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 06:55 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
ROIНука- нука по подробнее преимущество Эксель 64 (конкретные преимущество) Основное преимущество - нет ограничения в 2ГБ по памяти. Одного этого пункта бывает достаточно для ИТ отдела при выборе разрядности, особенно если уже были жалобы о нехватке памяти. В некоторых организациях на Экселе чуть ли не ERP умудряются сделать и мучаются потом с этим. При работе с запросами из базы данных памяти много нужно. Project также начал поддерживать файлы более 2 Гб, некоторым уже не хватет 2 гиг на проект. В общем, реальность такова, что, по моим ощущениям, примерно четверть организаций на западе ставит 64-х разрядные версии, с этим приходится жить. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 07:09 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
MrShinROIНука- нука по подробнее преимущество Эксель 64 (конкретные преимущество) Основное преимущество - нет ограничения в 2ГБ по памяти. Одного этого пункта бывает достаточно для ИТ отдела при выборе разрядности, особенно если уже были жалобы о нехватке памяти. В некоторых организациях на Экселе чуть ли не ERP умудряются сделать и мучаются потом с этим. При работе с запросами из базы данных памяти много нужно. Project также начал поддерживать файлы более 2 Гб, некоторым уже не хватет 2 гиг на проект. В общем, реальность такова, что, по моим ощущениям, примерно четверть организаций на западе ставит 64-х разрядные версии, с этим приходится жить. Обалдеть. Оказывается человек создал базу 2 гб. И гордится этим (базу заведомо гавно) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 11:03 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
ROIОбалдеть. Оказывается человек создал базу 2 гб. И гордится этим (базу заведомо гавно) Не понял, что за наезды? Я что ли файлы с потребностью памяти больше 2 гиг создаю или ратую за установку 64-х битной версии? Я констатирую факт. Если вам не приходится работать с клиентами, у которых стоит 64-х битный офис, то вам просто везет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 12:16 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
MrShinROIОбалдеть. Оказывается человек создал базу 2 гб. И гордится этим (базу заведомо гавно) Не понял, что за наезды? Я что ли файлы с потребностью памяти больше 2 гиг создаю или ратую за установку 64-х битной версии? Я констатирую факт. Если вам не приходится работать с клиентами, у которых стоит 64-х битный офис, то вам просто везет. 1 Выигрышь в 2 гб не о чем 2 Много чего нуно допиливать (смотрите наши топики) 3 а так как вы и с 32бит работать не можете то о 64 бит забудьте. 4 сначала научитесь с 32бит работать, а уж потом (64) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 12:29 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
MrShinROIОбалдеть. Оказывается человек создал базу 2 гб. И гордится этим (базу заведомо гавно) Не понял, что за наезды? Я что ли файлы с потребностью памяти больше 2 гиг создаю или ратую за установку 64-х битной версии? Я констатирую факт. Если вам не приходится работать с клиентами, у которых стоит 64-х битный офис, то вам просто везет. Я же спросил про ЭКСЕЛЬ ну в чем преимущество 64 только не надо про размер файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 12:31 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
ROI, Еще раз. Мне не нужны советы по выбору битности, я сам таких советов могу надавать сколько хочешь, начиная с Access 2.0. Никогда по доброй воле 64-х битный геморрой не поставлю. Перечитай еще раз, разве я говорил, что эксель 64 умеет работать с ФАЙЛАМИ больше 2 Гб? Я говорил про ПАМЯТЬ, в любом сравнении версий об этом есть. Дальнейшую дискуссию вести не вижу смысла, оффтопик к тому же. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 13:00 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
MrShinROI, Еще раз. Мне не нужны советы по выбору битности, я сам таких советов могу надавать сколько хочешь, начиная с Access 2.0. Никогда по доброй воле 64-х битный геморрой не поставлю. Перечитай еще раз, разве я говорил, что эксель 64 умеет работать с ФАЙЛАМИ больше 2 Гб? Я говорил про ПАМЯТЬ, в любом сравнении версий об этом есть. Дальнейшую дискуссию вести не вижу смысла, оффтопик к тому же. Я знаю про ограничения в размере файла. Делаю периодическое подгрызания базы. проблем нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 13:14 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
MrShin...но успел заметить, что активно используются таймеры. Для чего они нужны в двух словах? в той же ветке "13-ый квартал" обратил мое внимание 20782737 на работу Бенедикта 10808021 , предложив доработать. Но чтобы провести такую доработку, нужно глубоко погрузится в тему. Одно дело использовать инструменты для работы с данными, другое дело создавать их. Копать в том направлении возможности/необходимости нет. Я пробовал с сублассингом формы, обрабатывая системые сообщение, но натолкнулся на определенные ограничения, описал тут: 20774213 , 20780341 Поэтому и остановился на SetWindowsHookEx. Эта функция среди прочего позволяется мониторить "low-level mouse input events". Т.е., допустим, сделали клик и смотрим: куда собственно? Если клик пришелся по полосе прокрутки, значит, ее значение в результате клика скорее всего изменится. Но изменится оно чуть позже, ведь мы же перехватили системное сообщение(можем даже его отменить) и до полосы прокрутки оно еще не дошло. Т.е. когда сообщение дойдет и будет обработано нам нужно будет вернутся и сгенерировать то самое событие ради чего все и затеялось: RaiseEvent Scrolled(blnVScroll, blnHScroll) Но как вернутся? Завести таймер и ждать обратный вызов: SetTimer(0, 0, 1500, AddressOf TimerProcForMOUSE) А в процедуре обратного вызова(TimerProcForMOUSE) уже смотреть что изменилось и делать выводы. Да таймер используется, но только когда действительно нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 14:28 |
|
Ээмуляция табличной формы
|
|||
---|---|---|---|
#18+
Вакшуль Сергей, Спасибо за пояснения. Вакшуль Сергейнужно глубоко погрузится в тему Да, это я заметил. По субклассингу, я смотрю, на Стэке тоже на смогли помочь. Вакшуль СергейДа таймер используется, но только когда действительно нужно Я почему полез в таймеры, заметил, что заголовок окна VBA редактора иногда помаргивает, как при работающем таймере. Не мог там остаться какой-то из таймеров работать даже когда фокуса нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2017, 14:45 |
|
|
start [/forum/topic.php?fid=45&fpage=62&tid=1611897]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 252ms |
total: | 399ms |
0 / 0 |