-
Black_Tomcat (03.08.08 12:21) [0]Здравствуйте.
Возникла следующая проблема, при одновременной работе с excel программы и пользователя. Т.е если пользователь начал редактировать содержимое ячейки я на любые запросы даже на запрос типа
var
Excel: Variant;
app: Variant;
begin
Excel := CreateOleObject("Excel.Application");
//тут какое нибудь ожидание за которое пользователь начал редактирование в ячейке
app := Excel.Application;
end;
Я получаю сообщение об ошибке "Вызов блокирован". Есть одно простое решение не давать пользователю редактировать содержимое ячейки переводя свойство interactive в false, но проблема как раз в том что нужно дать пользователю возможность редактировать ячейку, и отловить момент когда он начал и закончил редактирование. Про это я не нашел ничего вообще событий таких у него нет, да и на запросы он отвечает только вызов блокирован. Есть ли какая - нибудь возможность узнать способен ли Excel отвечать на запросы программы, не хотелось бы это делать через try ... except? -
Сергей М. © (03.08.08 17:42) [1]
> Про это я не нашел ничего вообще событий таких у него нет
Как это нет ?
А это что
TExcelApplication.OnShhetChange
TExcelWorkbook.OnShhetChange
TExcelWorksheet.OnChange
? -
Black_Tomcat (04.08.08 08:04) [2]Эти события возникают после окончания изменения, на начало изменения события нет, а основная проблема возникает именно в этот момент.
А события окончания я чесно говоря просто прозевал. :-) Спасибо. -
Сергей М. © (04.08.08 13:09) [3]
> на начало изменения события нет
А зачем они тебе нужны ? -
Black_Tomcat (04.08.08 13:44) [4]Если пользователь начал редактировать содержимое ячейки, запретить все что бы не нажал ни на что, пока не закончит редактировать. Потому что если он тыкнет например на кнопку сохранить excel скажет что вызов блокирован и ничего не сделает.
-
Сергей М. © (05.08.08 13:39) [5]
> запретить все
"Все" это что ?
И зачем что-то запрещать, если этого можно попросту не делать ?
Зачем, спрашивается, лезть программно в какую-либо ячейку листа, если заведомо известно, что интерьер и/или содержимое ячеек листа не изменилось, поскольку не было ни единого события OnChange ?
Событие OnChange как раз и говорит о том, что юзер закончив редактирование внес какие-то изменения в какие-то ячейки листа, и можно смело искать и разглядывать эти изменения программно.