![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание нескольких OLEContainer'ов в MDIChild форме [Delphi, Windows]
apollo © (2005-09-09 15:38:00)Задача:
Надо создать приложение, которое в главной форме может отображать дочерние окна - "проекты", которые в свою очередь содержат несколько (нефиксированное количество) страниц-вкладок, на каждой из которых необходимо выводить OLE-объекты (например документы MS Office, но не только) - "документы, относящиеся кк проекту". Причем необходимо не просто просматривать их, а нормально реализовать всю функциональность соответствующего OLE-сервера.
Попытка реализации:
Создал основную форму, дочернюю форму, на основной форме - всякие меню, тул бар,... в дочерней тоже. В основное поле дочерней формы помещен PageControl. Для тестирования пока сразу сделал 2 вкладки, на них OLEконтейнеры.
Для теста грузил вордовские документы
Проблемы:
Вначале при запуске все тип-топ, открыли документики, появился ворд с его панельками и меню. Но дальше баги. После первого же переключения вкладок PageControl'а панельки ворда пропадают и больше не появляются. Но редактировать еще можно. Кроме того страшные глюки при изменении размеров дочернего окна. В непонятный момент документ и редактировать становиться невозможно.
Пробовал использовать TWebBrowser - он не показывает меню ворда - не подходит.
YurikGL (2005-09-12 11:27:00) [1]
> не помогает. Еще варианты?
Можно поиграться с
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+пробел и смотрим, что туда можно понаписать.
apollo (2005-09-12 10:57:00) [2]
> Кстати непонятно, MDI-приложение или в PageControl ?
Именно PageControl в MDI-Child окне - 2 уровня вложенности:
- одновременно может быть несколко проектов (одно отдельное окно)
- в каждом проекте несколько документов (вкладка PageControl'а)
Не совсем таким кодом, но:
>...CommandBars.Item[<название панели>].Visible:=true;
я делал. Не помогло. Есть мнение, что (учитывая наблюдаемые глюки отрисовки) они на самом деле есть, только нарисовались где-то вне видимой области. Отсюда вопрос как из заставить нарисоваться там где надо. Пара операторов типа:
...Visible:=false;
...Visible:=true;
не помогает. Еще варианты?
YurikGL (2005-09-12 10:43:00) [3]До панелек ворда можно достучаться через
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 ?