|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TOleContainer и Ms Excel 97
Итак приложение написанное на Delphi 7
рабоатает под Windows Xp Sp2 и создает отчеты, через OLE в Ms Excel 97 все рабоатет нормально, пока11 проблема возникет в том случае, если в Excel - выделенна и активна какая либо ячейка (т.е в ней соит курсор) в этом случае возникает ошибка, вот кусок кода где она генериться try sleep(50); ReportContainer.CreateObjectFromFile(ReportFileNam e,False); sleep(50); ReportContainer.Repaint; successful:=True; except successful:=False; end; т.е в TOleContainer - ничего не появляется. Я пытаюлся послать в Excel нажатие клавиши ESC дабы деактивировать ячейку выделенную следующим куском кода: if not(successful) then try h:=Form1.Find('Microsoft Excel'); SetForeGroundWindow(h); Sleep(100); keybd_event(VK_ESCAPE ,0,0,0); Sleep(50); keybd_event(VK_ESCAPE ,0,KEYEVENTF_KEYUP,0); Sleep(50); ReportContainer.Close; ReportContainer.CreateObjectFromFile(ReportFileNam e,False); ReportContainer.Repaint; ShowWindow(h,SW_MINIMIZE ); Form1.Show; except ShowMessage('Cannot create report, because Excel is busy'+#13+#10+'Exit from edit cell and try again'); end; но ничего не получается. вопрос как деактивировать ячейки Excel перед открытием репорта в оле контейнере ? (Под Excel XP - ошибки не возникает, но сменить Excel - не предлагать, так как заказчик однозначно не пойдет на это ) |
#2
|
|||
|
|||
сорри что форматирование кода побилось
|