Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.26;
Скачать: CL | DM;

Вниз

Создание нескольких 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 вся ветка

Текущий архив: 2006.11.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.062 c
15-1163001680
Cerberus
2006-11-08 19:01
2006.11.26
Компонет посведки PHP.


15-1163061314
Cyrax
2006-11-09 11:35
2006.11.26
Несколько злых вопросов, касающихся Delphi


2-1162970915
malefik
2006-11-08 10:28
2006.11.26
Tthread и с чем его едят?


2-1163166125
Fostr
2006-11-10 16:42
2006.11.26
StringGrid.Refresh


15-1162972252
ANB
2006-11-08 10:50
2006.11.26
Рискнут ли ЦСКА на переигровку с Зенитом ?