Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.037 c
15-1162589783
Ekzot
2006-11-04 00:36
2006.11.26
TWebBrowser


15-1162967809
Хельг
2006-11-08 09:36
2006.11.26
Системы счисления


4-1152770235
тт
2006-07-13 09:57
2006.11.26
Как узнать серийный номер HDD в Win2000, не имея прав админа?


15-1162820177
atruhin
2006-11-06 16:36
2006.11.26
Как ограничить скорость соеденинеия


3-1159009804
alexandrine
2006-09-23 15:10
2006.11.26
Как посадить базу Paradox7 на сетку?




   Наверх