
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.82] |
![]() |
|
Страницы: (3) 1 [2] 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Скорее всего требуется:
WordApplication1->Visible[0] |
![]() |
Сообщ.
#17
,
|
|
Цитата Budda, 7.10.04, 19:11 WordApplication1->Visible WordApplication1->Visible=true; Да у меня было чтото похоже когда переустановил систему и установил BCB - день мучался (ведь знал что работало). Но вспомнил что Update'ы не установил. После установки все пошло как надо. Автоматизация приложений Microsoft Office в примерах |
Сообщ.
#18
,
|
|
|
Цитата Но вспомнил что Update'ы не установил. После установки все пошло как надо По тому линку, что ты привёл - нет ни одного слова об Апдэйтах или обновлениях. Где их взять? И ещё: Как можно работать с Вордом без компонент, а используя ОЛЕ технологии? Добавлено Seva, нет ![]() ![]() WordApplication1->Visible[0]=true; При компиляции выдает ошибку: Цитата [C++ Error] untMain.cpp(35): E2015 Ambiguity between 'TOLEBOOL::operator bool() const' and 'TOLEBOOL::operator short() const' |
Сообщ.
#19
,
|
|
|
Цитата Budda, 8.10.04, 12:44 Так же, как и с другими приложениями. Как можно работать с Вордом без компонент, а используя ОЛЕ технологии? ![]() ![]() ![]() Variant vApp; try { vApp = Variant::GetActiveObject("Word.Application"); } catch(EOleSysError &ex) { try{ vApp = Variant::CreateObject("Word.Application"); } catch(EOleSysError &ex) { // не удалось запустить сервер } catch(...) { // неизвестная ошибка } } catch(...) { // не удалось подключиться к серверу } ![]() ![]() Variant vDoc = vApp.OlePropertyGet("Documents").OleFunction("Open",имя_файла); ![]() Добавлено P.S. Хотя компоненты работают с соответствующим сервером тоже через OLE ![]() |
![]() |
Сообщ.
#20
,
|
|
Выписка
![]() ![]() Аббревиатура OLE обозначает Objects Linked and Embedded (Присоединенные И Встроенные Объекты - ПИВО ;) ). Данные, разделяемые между приложениями называются OLE объектом. Приложение, которое может содержать OLE объекты, называют OLE контейнером (OLE Container). Приложение, данные из которого можно включить в OLE контейнер в виде OLE объекта, называют OLE сервером. Например, MicroSoft Word может включать в документ графические объекты, аудио- и видеоклипы и множество других объектов (такой документ иногда называют составным документом - compound document). Как следует из названия, OLE объекты можно либо присоединить к OLE контейнеру, либо включить в него. В первом случае данные будут храниться в файле на диске, любое приложение будет иметь доступ к этим данным и сможет вносить изменения. Во втором случае данные включаются в OLE контейнер и только он сможет просматривать и модифицировать эти данные. OLE является дальнейшим развитием идеи разделяемых между приложениями данных. Если с помощью DDE можно было работать с текстом, то OLE позволяет легко встроить в приложение обработку любых типов данных. Как и в случае с DDE, для правильной работы приложения-клиента (OLE контейнера) требуется наличие приложения OLE сервера. Каждый раз, когда в программе-клиенте пользователь обращается к OLE объекту с целью просмотра или редактирования данных (обычно двойной щелчок мышкой на объекте), запускается приложение- сервер, в котором и происходит работа с данными. В природе существует несколько видов OLE, отличающихся по способу активации OLE сервера. OLE версии 1 запускает сервер в отдельном окне. OLE 2 реализует то, что называется in-place activation and editing. Развитие идеи OLE привело к появлению OLE automation - приложение-клиент может выполнить часть кода сервера. Тип OLE объекта, помещенного в программу-клиент, определяется тем, какую версию OLE поддерживает сервер. |
Сообщ.
#21
,
|
|
|
trainer, Спасибо!
Bas, Это ты к чему? |
![]() |
Сообщ.
#22
,
|
|
Цитата Budda, 8.10.04, 16:43 Bas, Это ты к чему? Для общего развития. |
Сообщ.
#23
,
|
|
|
Bas, та мне бы чего-то попрактичнее, тот код, который Тренер дал - тоже сбоит... Ну просто 3.14здец какой-то.
Может чего-то где-то в настройках.... Может кинешь маленький конкретный пример? seredaom@ukrpost.net. |
Сообщ.
#24
,
|
|
|
Цитата Budda, 8.10.04, 18:03 В чем это проявляется и покажи свой исходник. который Тренер дал - тоже сбоит |
![]() |
Сообщ.
#25
,
|
|
Исходник в студию или в приват.
|
Сообщ.
#26
,
|
|
|
Цитата Budda,8.10.04, 11:44 Seva, нет ![]() ![]() WordApplication1->Visible[0]=true; При компиляции выдает ошибку: Цитата [C++ Error] untMain.cpp(35): E2015 Ambiguity between 'TOLEBOOL::operator bool() const' and 'TOLEBOOL::operator short() const' Ну подправь соответствующим образом. Хочет TOLEBOOL? Попробуй так: ![]() ![]() WordApplication1->Visible[0]=TOLEBOOL(true); |
Сообщ.
#27
,
|
|
|
Подскажите, пожалуйста, где скачать компоненты для работы с Office 2007.
|
Сообщ.
#28
,
|
|
|
Цитата dallas0713 @ Подскажите, пожалуйста, где скачать компоненты для работы с Office 2007. Читай эту тему с начала. |
Сообщ.
#29
,
|
|
|
Люди, подскажите пожалуйста, почему происходит следующее: при запуске программы в среде C++ Builder 6, она работает нормально, но когда запускаю экзешник вне среды, работает не совсем так как надо ???
Программа должна выполнять следующие действия: 1. Открыть файл *.doc, в котором есть формулы. 2. Сохранить во временный файл, но уже с расширением *.docx (Open XML Format) 3. Извлечь из временного файла формулы в виде картинок. В среде выполняется всё норм. А "автономно" просит сохранить файл. Вот код: ![]() ![]() //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "Word_2K_SRVR" #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString fname; OpenDialog1->Execute(); fname=OpenDialog1->FileName; if (fname!="") { WordApplication1->Connect(); WordApplication1->set_Visible(false); WordApplication1->GetDefaultInterface()->Visible = false; WordApplication1->set_DisplayAlerts(false); WordApplication1->Documents->Open(TVariant(fname)); WordApplication1->ActiveDocument->Select(); WordApplication1->Selection->Copy(); WordApplication1->Documents->Add(EmptyParam, EmptyParam); WordDocument1->ConnectTo(WordApplication1->ActiveDocument); WordDocument1->Activate(); WordApplication1->Selection->Paste(); WordDocument1->SaveAs(TVariant("c:\\~temp.docx")); WordDocument1->Close(TVariant(false)); WordApplication1->Quit(TVariant(false)); WordApplication1->Disconnect(); ZipForge1->FileName="c:\\~temp.docx"; ZipForge1->OpenArchive(fmOpenRead); ZipForge1->ExtractFiles(L"*.wmf"); ZipForge1->CloseArchive(); DeleteFileA("c:\\~temp.docx"); } } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { ShellExecute(NULL,"open","word\\media", NULL, NULL, SW_SHOWNORMAL); } //--------------------------------------------------------------------------- Заранеее благодарен ! ![]() |
Сообщ.
#30
,
|
|
|
При каком действии просит? Покажи скриншот диалога.
|