Форум: "Corba";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
ВнизСоздание нескольких OLEContainer ов в MDIChild форме Найти похожие ветки
← →
apollo © (2005-09-09 15:38) [0]Задача:
Надо создать приложение, которое в главной форме может отображать дочерние окна - "проекты", которые в свою очередь содержат несколько (нефиксированное количество) страниц-вкладок, на каждой из которых необходимо выводить OLE-объекты (например документы MS Office, но не только) - "документы, относящиеся кк проекту". Причем необходимо не просто просматривать их, а нормально реализовать всю функциональность соответствующего OLE-сервера.
Попытка реализации:
Создал основную форму, дочернюю форму, на основной форме - всякие меню, тул бар,... в дочерней тоже. В основное поле дочерней формы помещен PageControl. Для тестирования пока сразу сделал 2 вкладки, на них OLEконтейнеры.
Для теста грузил вордовские документы
Проблемы:
Вначале при запуске все тип-топ, открыли документики, появился ворд с его панельками и меню. Но дальше баги. После первого же переключения вкладок PageControl"а панельки ворда пропадают и больше не появляются. Но редактировать еще можно. Кроме того страшные глюки при изменении размеров дочернего окна. В непонятный момент документ и редактировать становиться невозможно.
Пробовал использовать TWebBrowser - он не показывает меню ворда - не подходит.
← →
YurikGL © (2005-09-12 10:43) [1]До панелек ворда можно достучаться через
procedure TForm1.Button1Click(Sender: TObject);
var
app:olevariant;
vr:variant;
begin
app:=CreateOleObject("Word.application");
app.Visible:=true;
app.documents.add;
app.ActiveDocument.CommandBars.Item["database"].Visible:=true;
app:=Unassigned;
end;
Кстати непонятно, MDI-приложение или в PageControl ?
← →
apollo © (2005-09-12 10:57) [2]
> Кстати непонятно, MDI-приложение или в PageControl ?
Именно PageControl в MDI-Child окне - 2 уровня вложенности:
- одновременно может быть несколко проектов (одно отдельное окно)
- в каждом проекте несколько документов (вкладка PageControl"а)
Не совсем таким кодом, но:
>...CommandBars.Item[<название панели>].Visible:=true;
я делал. Не помогло. Есть мнение, что (учитывая наблюдаемые глюки отрисовки) они на самом деле есть, только нарисовались где-то вне видимой области. Отсюда вопрос как из заставить нарисоваться там где надо. Пара операторов типа:...Visible:=false;
...Visible:=true;
не помогает. Еще варианты?
← →
YurikGL © (2005-09-12 11:27) [3]
> не помогает. Еще варианты?
Можно поиграться с
app.ActiveDocument.CommandBars.Item["database"].Left:=20;
app.ActiveDocument.CommandBars.Item["database"].top:=20;
app.ActiveDocument.CommandBars.Item["database"].Set_Position();
Там методов много разных
WordApplication1.ActiveDocument.CommandBars.Item["database"]. + ctrl+пробел и смотрим, что туда можно понаписать.
Страницы: 1 вся ветка
Форум: "Corba";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c