0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 3
|
||||||
1 | ||||||
Mousemove event Excel worksheet18.02.2011, 18:40. Показов 7838. Ответов 7
Метки нет (Все метки)
Знаю что стандартно событие Mouseleave или mosemove недоступно в событиях Worksheet. Но мне очень нужно написать процедуру, которая бы при движении мышкой над диапазоном ячеек с нажатой левой кнопкой мыши заполняло каждую ячейку каким-нить символом, ("1" например), а при движении с нажатой правой кнопкой заполняло теже ячейки другим сиволом ("0", например, или просто empty)
Как это можно реализовать??? Заранее спасибо всем откликнувшимcя. Добавлено через 33 минуты Вот нашел нечто что может быть полезным. К сожалению я ничего не понимаю в API но по ходу следующий код определяет адрес ячейки над которой установлен указатель
0
|
18.02.2011, 18:40 | |
Ответы с готовыми решениями:
7
Event Spreadsheet.SelectionChangeing для worksheet Excel 97 ругается на Event-ы, Enum-ы и на AddressOf Microsoft.Office.Interop.Excel.Worksheet - переключение между листами Событие Event.COPY Event.PASTE Event.CUT |
0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 3
|
||||||
20.02.2011, 12:48 [ТС] | 2 | |||||
Вот какое решения нашел я. Возможно не самое изящное но никто так за 2 дня и не откликнулся
1. Мне не нужно менять значения и формат ячеек средствами Excel, поэтому на рабочий лист я добавил элемент ActiveX Lable1 2. Добавил следующий код для листа
Есть варианты??
0
|
7 / 7 / 0
Регистрация: 16.03.2011
Сообщений: 26
|
||||||
16.03.2011, 16:52 | 3 | |||||
Добрый вечер!
А вот так не подойдет? Правда ЛКМ кликать прийдется по каждой ячейке:
0
|
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
|
|
16.03.2011, 18:08 | 4 |
По-моему даже изобретение MouseMove для листа excel не избавит нас от дальнейших граблей: как вы собираетесь отключить нормальную обработку действий Excel при зажатых правой или левой кнопок мыши? Все сложней, чем кажется на первый взгляд.
0
|
7 / 7 / 0
Регистрация: 16.03.2011
Сообщений: 26
|
|
16.03.2011, 18:12 | 5 |
Если Вы воспроизведете работу кода, то увидите, что стандартное контекстнозависимое меню в чейке отключилось! Это что - просто что бы спросить? Или я чего то не понял?
0
|
2785 / 717 / 106
Регистрация: 04.02.2011
Сообщений: 1,443
|
|
17.03.2011, 11:28 | 6 |
Просто тот вариант, что могу предложить я, он трудоемкий, и я не знаю - не факт, что он сработает. Смысл: сабклассировать окно Excel или окно запущенной формы, захватить (SetCapture) события мыши нашим окном (WM_MOUSEMOVE или что-то подобное) и далее - следить за перемещением. Вопрос не слишком простой, так как понадобится кое-что понимать в Windows API и шустро набрасывать код. Если будете копать дальше, ключевые слова здесь: SetCapture, subclassing, WM_MOUSEMOVE. hWnd окон Excel находят обычно через FindWindow.
0
|
0 / 0 / 0
Регистрация: 18.02.2011
Сообщений: 3
|
|
18.03.2011, 00:03 [ТС] | 7 |
очень сложно для самоучки
Добавлено через 10 минут попробую объяснить зачем мне это надо. Может тогда у кого-нить появятся альтернативные варианты реализации. Есть табель учета рабочего времени и есть ограничения по часам отдыха и работы накладываемые на каждого работника. Сутки разбиты на 24 часа, каждый час на 0.5 т.е. всего 48 ячеек для каждых суток. В оригинаде каждый работкник в конце рабочего дня ставит крест "x" в ячеку, когда он работал. и оставляет ячеку пустой, если отдыхал. НО ДАЖЕ ЭТА ПРОЦЕДУРА ЗАПОЛНЕИЯ КРЕСТАМИ ПОКАЗАЛАСЬ НЕКОТОРЫМ УНИКУМАМ СЛИШКОМ СЛОЖНОЙ. Поэтому и возникла идея "рисовать" кресты мышкой. Стандартные события Excel по right или leftclick в данном случае мне не нужны. Более того в код будут вставленны строки убирающие любые меню, кроме сохранить, закрыть и...все. Подсчет времени будет вестись стандартными формулами Excel в скрытых ячеках. Все что толжен видеть рабочий, открыв книгу - это таблицу. : Строки - дни месяца; столбцы - сутки разбитые на 48 получасовых интервалов....
0
|
7 / 7 / 0
Регистрация: 16.03.2011
Сообщений: 26
|
||||||
18.03.2011, 07:55 | 8 | |||||
Нашел вот тут про мыша: //http://vsokovikov.narod.ru/New_MSDN_API/Mouse_input/ogl_mouse.htm
Вот может кто объяснит, каким образом код:
0
|
18.03.2011, 07:55 | |
18.03.2011, 07:55 | |
Помогаю со студенческими работами здесь
8
Невозможно привести COM-объект типа "System.__ComObject" к интерфейсному типу "Microsoft.Office.Interop.Excel.Worksheet" WebBrowser не поддерживает Event MouseDown и Event MouseUp event.returnValue is deprecated. Please use the standard event.preventDefault() instead Как узнать координаты мышки из event:Event Worksheet WorkSheet.Index Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |