Работа с выдленными ячейками таблицы

Автор Sprinter500, 28.04.10, 19:06:07

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Sprinter500

Цитата: Максимилиан от 13.05.10, 05:28:02
Пункт 1 можно сделать через винапи
После нажатия на кнопку расчета делаем окно компаса активным
serforegroundwindow
и используем функцию
keybd_event

вот процедура для нажатия клавиш в неактивном окне
procedure EmulateKey(Wnd: HWND; VKey: Integer);
asm
   push 0
   push edx
   push 0101H //WM_KEYUP
   push eax
   push 0
   push edx
   push 0100H //WM_KEYDOWN
   push eax
   call PostMessage
   call PostMessage
end;

// Пример использования:
EmulateKey(kompas.ksgetHWindow, VK_control);

Что то я не понял - это о чем?  :) Стандартное копирование в буфер омена Windows при нажатии клавиши? Компас использует свой буфер обмена, а не виндоузовский. Спасибо за пример, но кажется он требует пояснений.

Maxagg

Компас использует свой буфер, но скопировать в этот буфер можно нажатием ctrl+c
serforegroundwindow  делаем окно компаса активным
и
keybd_event эмулируем нажатие клавиш, данные занесутся в буфер компаса

Sprinter500

Цитата: Максимилиан от 14.05.10, 05:45:40
Компас использует свой буфер, но скопировать в этот буфер можно нажатием ctrl+c
serforegroundwindow  делаем окно компаса активным
и
keybd_event эмулируем нажатие клавиш, данные занесутся в буфер компаса

Но ведь таким образом скопируется вся таблица, а не конкретные ячейки, столбцы или строки.

Maxagg

ничего подобного, скопируются только выделенные ячейки

Sprinter500

А как прочитать данные скопированные в буфер Компаса?

Maxagg

вставить в таблицу близнец (одинаковое количество строк и столбцов) с пустыми полями
вставится начиная с левой верхней ячейки.
после этого можно провести анализ
узнать количество строк выделенной области
количество столбцов
сделать расчеты
скопировать в буфер и т.д.

чуть позже скину ссылку на пример

Sprinter500

 :)  Жду. Заранее Большое Спасибо! Надеюсь разберусь

Maxagg

А вот и обещанная ссылка :)
в архиве екзешник и проект
проверялось под компас 11
действовать по инструкции

http://delphivs.ucoz.ru/load/summa_vydelennykh_jacheek/1-1-0-11

Sprinter500

Спасибо! Я наверное не понял как правильно работать. В 9-й версии - просто сразу все вылетело, а в 11-й перед вылетом успела появиться таблица 10х10, со скопированными диапазоном ячеек, но без суммы.

Maxagg

попробуйте увеличить sleep до 5000 и попробовать (у стареньких машин медленнее обработка идет)
А так код рабочий, можно поэксперементировать и найти причину вылета