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

Вниз

Delphi 7 + Visio 2003   Найти похожие ветки 

 
zero-g ©   (2006-10-07 08:08) [0]

Доброго времени суток коллеги...
Сидя как то вечером решил покавырять то что написано в теме..
У меня такая проблемма...
делю Menu->Component->Import ActiveX Control -> Microsoft Visio Drawing.
Сделал, все нормально... кидаю компанент на форму, получаю рабочую область Visio, а как мне панели инструментов выташить??????

Панели с линииями там, квадратиками и тд...
Я часа два убил.. так нифига и не понял....

Помогите кто чем сможет, пожалуйста :)


 
zero-g ©   (2006-10-08 09:14) [1]

Никто не работал чтоли ?


 
zero-g ©   (2006-10-09 04:40) [2]

:"(


 
zero-g ©   (2006-10-13 01:37) [3]

Никто не работал с таким ?

....

в общем я поковырял...
сохранить вроде сохраняю в файл

form1.DrawingControl1.Window.Document.SaveAs("c:\q.vsd");

Открыть немогу...
Верней как.. он открывате.. но что куда без понятия...
Как я понял визио открыват в памяти.. кудато... но не мне на форму...
а вот как допустим открыть на форму.. вообще фиг знает..

А если я пытаюсь сам нарисовать чего нить... например ректангл.. мне говорить что этого сделать невозможно, тк приложение заблочино... ?? чего.. куда... я фиг знает...

Ковырял и в Visio_TLB и в VisOcx_TLB (они создаются когда делаешь импор ActivX) нифига не вьехал... чтото гдето въехал.. гдето нет.. в общем либо у мя соображалки нехватает либо я не знаю...

вот мои ковыряния...

procedure TForm1.Button1Click(Sender: TObject);
const
//IID_IDrawingControl: TGUID = "{9BF6FD73-F05B-406E-B938-09E2B413528E}";
//CLASS_DrawingControl: TGUID = "{E4615FA3-23B0-4976-BD3E-D611DDBE330E}";
DIID_EVisOcx: TGUID = "{BD086122-F160-436A-BE7B-6B1D58D14703}";
CLASS_DrawingControl: TGUID = "{000D0700-0000-0000-C000-000000000046}";
var
// Visio: IDrawingControl;
// Visio : IDrawingControlDisp;
  Visio : EVisOcx;
begin
{   Visio :=  CreateComObject(IID_IDrawingControl) as EVisOcx;
  visio.DocumentSavedAs(form1.DrawingControl1.Window.Document);

  Visio := Nil;}
  //form1.DrawingControl1.Window.Shape.DrawRectangle(12,21,12,12);
   form1.DrawingControl1.Window.Document.SaveAs("c:\q.vsd");
//    form1.DrawingControl1.Window.Shape.Shapes.CenterDrawing;
end;

procedure TForm1.Button2Click(Sender: TObject);

var f : IVUIObject;
Visio : IVApplication;
h : HWND;
begin

//f.ToolbarSets.Add.Toolbars;
//Get_BuiltInToolbars();
//form1.DrawingControl1.Window.Document
//Visio.Documents.Open("Drawing1.vsd");
//form1.DrawingControl1.Window.Application.Documents.Open("c:\Drawing1.vsd");
//DrawingControl1.Window.Application.Documents.Open("c:\Drawing1.vsd");

//form1.DrawingControl1.Document.Open("c:\Drawing1.vsd");

//Visio :=  CreateComObject(IID_IDrawingControl) as IVApplication;
//Visio.Application.Documents.OpenEx("Drawing1.vsd")
//form1.DrawingControl1.Window.Document.Application

//form1.DrawingControl1.Window.Document.SetCustomToolbars(f);
//form1.DrawingControl1.Document.DocumentSheet.DrawRectangle(12,12,12,12);
//form1.DrawingControl1.Window.Document.DocumentSheet.DrawRectangle(12,12,12,12);
end;

Из всего работает тока сохранение ))) И то не знаю правильно или нет )))
...
вот если кому интресно Visio_TLB и в VisOcx_TLB

http://alex-shad.narod.ru/temp/Visio_TLB.pas
http://alex-shad.narod.ru/temp/VisOcx_TLB.pas


 
T54 ©   (2006-10-23 11:44) [4]

Разобрался с Visio (тоже стоит такой вопрос) ? если разобрался скажи как работал ?


 
-Ven- ©   (2006-10-23 13:23) [5]

Ох, и геморное это дело юзать Visio 2003 под Дельфи. Я на это убил кучу времени и до сих пор с этим вожусь (по работе нужно). Разобрался очень со многим, но многое осталось не ясным (надеюсь пока что). Самое фиговое, что сам компонент еще довольно сырой. В общем если спрашивайте, если я с этим разобрался, отвечу. По поводу текущих вопросов:
1) Как открыть документ:
  что бы создать документ, нужно просто сделать следующее
  VisioDrawingControl.Src := "";
  что бы открыть уже созданный документ
  VisioDrawingControl.Src := FileName; //где FileName это полный путь к созданному файлу

2) Как повытаскивать панели инструментов:
   Стенсилы (панельки с набором шаблонов) открываются из файлов (расширение vss) следующим образом
   try
     Doc:= DrawingControl.Document.Application.Documents.OpenEx("c:\tmp.vss",visOpenDocked) ;
   except
     Doc:= DrawingControl.Document.Application.Documents.AddEx("c:\tmp.vss", visMSDefault, visAddDocked, 0);
   end;
   Doc.Title := "bla bla bla";

   Тут дело в том, что OpenEx открывает файл и блокирует его, но если этот файл уже заблокирован, то выкидывается эксептион, и поэтому вызывается функция AddEx. Которая открывает копию шаблонов. В принципе можно сразу использовать эту функцию, но тут есть огромный недостаток. При открытии шаблонов таким образом, компонент открывает их в режиме редактирования (т.е. можно на панель шаблоно перетащить какой нибудь элемент и эту панель сохранить в другой файл). Как это запретить я не разобрался :(

   Еще из полезных инструментов можно вызвать панель Pan & Zoom
   VisioDrawingControl.Window.Windows.ItemFromID[visWinIDPanZoom].Visible:= true;
   Таким же образом можно открыть еще несколько панелей, указав другие константы вместо visWinIDPanZoom (см. описание констант в Visio_TLB.pas)


 
cerber   (2006-10-25 23:12) [6]

Посмотри пример в \examples\activex,попробуй чере OLE-контейнер.
Панель должна сама появиться при вызове(активизации) содержимого контейнера. Но не забудь добавить toolbar и сделать MDI форму.
Кстати с контейнером очень редко возникают ексепшен - только с кривыми Актив-Икс объектами



Страницы: 1 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.02 c
15-1255365742
Игорь Шевченко
2009-10-12 20:42
2009.12.13
Ставлю Windows 95. Pan european edition. С дискет :)


15-1255811409
Юрий
2009-10-18 00:30
2009.12.13
С днем рождения ! 18 октября 2009 воскресенье


4-1224767519
Trible
2008-10-23 17:11
2009.12.13
Помогите с HCBT_CREATEWND


2-1255649628
mm0
2009-10-16 03:33
2009.12.13
Фокус на главную форму


4-1225268964
XshStasX
2008-10-29 11:29
2009.12.13
интересний результат с ловушкой на WH_SHELL