Выделить ячейки в листе мышью а-ля Excel
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 5080
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Выделить ячейки в листе мышью а-ля Excel
Собственно сабж. Хочется выделять ячейки нажав левую клавишу мыши. Пока нужно только в одном столбце. Есть какая-нибудь совсем правильная реализация? Дикий вариант у меня вроде получается. Ну уж очень дикий, на мой взгляд.
We are hard at work… for you.
- Губин Игорь
- Шубуршун
- Сообщения: 2435
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 2 раза
- Поблагодарили: 23 раза
Выделить ячейки в листе мышью а-ля Excel
В голову приходит лишь отлавливание ячейки и смена стиля.
Это я только кажусь дураком! На самом деле я полный идиот!
- Игорь Столяров
- Ветеран движения
- Сообщения: 7680
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 68 раз
Выделить ячейки в листе мышью а-ля Excel
Действительно, закрасить можно с использованием стилей или просто фоном.
Но здесь совсем негожая идея выделения ячеек левой кнопкой мышки в LIST.
Совсем. Проблема в LIST.
Мы делали давно через Ctrl+LeftMouse (или F8) - аналогично Excel.
Т.е. первый щелчок мышки (или кнопка F8) подсвечивает закраской начальную ячейку,
а второй щелчок мышки (или кнопка F8) уже закрашивает всю выбранную область ячеек.
Так - работает.
Но здесь совсем негожая идея выделения ячеек левой кнопкой мышки в LIST.
Совсем. Проблема в LIST.
Мы делали давно через Ctrl+LeftMouse (или F8) - аналогично Excel.
Т.е. первый щелчок мышки (или кнопка F8) подсвечивает закраской начальную ячейку,
а второй щелчок мышки (или кнопка F8) уже закрашивает всю выбранную область ячеек.
Так - работает.
Make Clarion Great Again !
-
- ✯ Ветеран ✯
- Сообщения: 5080
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Выделить ячейки в листе мышью а-ля Excel
Игорь, почему негожая? Во-первых, так в Экселе. Во-вторых, proplist:MouseMoveRow и proplist:MouseMoveField чётко определяют положение мыши. Правда для этого пришлось воспользоваться таймером, событий на листе нет, во всяком случае документированных (я, в общем-то, думал, что есть недокументированные, и может, кто знает). К слову - много просят Экселевских штучек. В основном нам слабо. В общем, сделал по-простому, для начала не заморачиваясь. При таком режиме появилась ещё хотелка. В режиме "drag-n-drop" лист сам прокручивается при нахождении мыши в заголовке и снизу. Тоже надо сделать также.
We are hard at work… for you.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7680
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 68 раз
Выделить ячейки в листе мышью а-ля Excel
Потому, что LIST вообще негожий контрол для интерактивных операций.
С другой стороны - он для них и не создавался. У нас тоже есть места,
где долбим по таймеру, что бы получить данные о текущем состоянии LIST.
С другой стороны - он для них и не создавался. У нас тоже есть места,
где долбим по таймеру, что бы получить данные о текущем состоянии LIST.
Make Clarion Great Again !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Выделить ячейки в листе мышью а-ля Excel
Что-то я не понял, каких событий нет. В швс есть стандартный функционал по отметке строк, я его даже скриншотил когда-то. Щелкаешь левой кнопкой мыши в колонке с маркером, пиктограмма меняется на другую. Здесь вроде ситуация аналогичная, только надо изменить стиль вместо пиктограммы. Никаких таймеров там точно нет. По моему, просто вешается alert на mouseleft и анализируется в какой колонке щелкнули.
А по поводу сделать как в эксель это загон. Эксель для совершенно других задач предназначен и по другому организован. В экселе не сделаешь как в кларионе, и это никого не парит.
А если хочется именно как в экселе, то самое простое делать все в экселе. Помнится, какой-то товарищ из Прибалтики пробовал продвигать учетную систему, которая вся в экселе, а база данных на каше. Есть такая старая key value база данных, у которой очень лаконичный синтаксис манипуляции данными и типа все помещается в виде формул в ячейки экселя.
А по поводу сделать как в эксель это загон. Эксель для совершенно других задач предназначен и по другому организован. В экселе не сделаешь как в кларионе, и это никого не парит.
А если хочется именно как в экселе, то самое простое делать все в экселе. Помнится, какой-то товарищ из Прибалтики пробовал продвигать учетную систему, которая вся в экселе, а база данных на каше. Есть такая старая key value база данных, у которой очень лаконичный синтаксис манипуляции данными и типа все помещается в виде формул в ячейки экселя.
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Выделить ячейки в листе мышью а-ля Excel
Можно поинтпресоваться, что такое в Вашей терминологии "интерактивные операции" и зачем и кого "долбите таймером"? Вдруг мне тоже надо.Игорь Столяров писал(а): ↑22 Ноябрь 2021, 23:47 Потому, что LIST вообще негожий контрол для интерактивных операций.
С другой стороны - он для них и не создавался. У нас тоже есть места,
где долбим по таймеру, что бы получить данные о текущем состоянии LIST.
C6/C11, ШВС, tps/btrieve.
- Дед Пахом
- Старичок
- Сообщения: 3236
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 13 раз
- Поблагодарили: 45 раз
- Контактная информация:
Выделить ячейки в листе мышью а-ля Excel
"Щёлкнули" поймать легко, а вот "Щёлкнули и, не отпуская кнопку, двигаем мышь от ячейки к ячейке" не очень легко (на самом деле очень).
С уважением, ДП
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Выделить ячейки в листе мышью а-ля Excel
А, наверно это и имелось ввиду. Тогда сабклассить окно?
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7680
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 68 раз
Выделить ячейки в листе мышью а-ля Excel
В контексте данной темы обсуждения - это когда нам нужно получить событие о том,
что засветка LIST изменила положение. Что бы по событию запросить колонку и строку.
Использование ? Например, мы хотим построить некую табличку для редактирования показателей
"аля-эксел", где в первой колонке у нас контрагент, в 2,3,4 план доставки ему по декадам месяца,
а в 5-ой итог доставки за месяц ( = 2 + 3 + 4 ). Задача: удержите засветку в LIST на 2,3 и 4 колонках ...
Make Clarion Great Again !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Выделить ячейки в листе мышью а-ля Excel
Не очень понял. Засветка это переменные перед полями в кьюшке, по которой работает лист.
А штатный путь для обхода ограничений accept это сабклассинг. Таймер совсем про другое.
Кларин accept работает таким образом, что пропускает нужные события, приходящие от ос, и отсекает все остальные. Если нужно изменить это и обработать события, которые accept отсекает, применяется сабклассинг. То есть назначается процедура, которая автоматически вызывается внутри рантайма перед тем, как accept начнет свою стандартную работу. В этой процедуре можно поймать и обработать, например, движение мыши над лист контролом, как, видимо, хотел критор. В справке был раздел, посвященный сабклассингу.
А штатный путь для обхода ограничений accept это сабклассинг. Таймер совсем про другое.
Кларин accept работает таким образом, что пропускает нужные события, приходящие от ос, и отсекает все остальные. Если нужно изменить это и обработать события, которые accept отсекает, применяется сабклассинг. То есть назначается процедура, которая автоматически вызывается внутри рантайма перед тем, как accept начнет свою стандартную работу. В этой процедуре можно поймать и обработать, например, движение мыши над лист контролом, как, видимо, хотел критор. В справке был раздел, посвященный сабклассингу.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7680
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 68 раз
Выделить ячейки в листе мышью а-ля Excel
Хотелось бы увидеть реализацию. Причём работающий и под C63 и под C11.1 ...
Make Clarion Great Again !
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4873
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 10 раз
- Поблагодарили: 43 раза
Выделить ячейки в листе мышью а-ля Excel
Я им практически не пользуюсь, так как предпочитаю работать штатными методами. По моему, в шаблоне пускача было. Ну и в справке почитать. Там, в общем, все просто. Главное найти коды событий, которые приходят от винды и которые надо поймать в процедуре сабклассинга.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7680
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 26 раз
- Поблагодарили: 68 раз
Выделить ячейки в листе мышью а-ля Excel
Возможно. Но т.к. я этого делать не умею - то просто долблю по таймеру и раз в секунду получаю текущую колонку ячейки.
И если она вывалилась из допустимого диапазона - возвращаю засветку в рабочую зону. В принципе, работает всё ...
Make Clarion Great Again !
-
- ✯ Ветеран ✯
- Сообщения: 5080
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 23 раза
Выделить ячейки в листе мышью а-ля Excel
Я бы тоже хотел увидеть реализацию. Для моей конкретики. Поэтому и спросил. Таймер не есть хорошо, согласен.
We are hard at work… for you.