OberonCore
https://forum.oberoncore.ru/

Подсистема Ctl. компоненты и события
https://forum.oberoncore.ru/viewtopic.php?f=35&t=1135
Страница 1 из 1

Автор:  hothing [ Четверг, 21 Август, 2008 09:03 ]
Заголовок сообщения:  Подсистема Ctl. компоненты и события

Как правильно использовать объекты CtlT.OutObject?
Код:
VAR
   grp1: OPC.OPCGroup; (* CtlT.Object *)
   grp1_evs : GroupEvents; (* CtlT.OutObject *)
...
BEGIN
        NEW(grp1_evs);
        grp1 := server.OPCGroups().Add(CtlT.Str('Test1'));
        CtlT.Connect(grp1_evs, grp1);
        ....
        grp1.AsyncRead(1, arg1, arg2, i1, i2 ); (* first call of method; TRAP 10*)
END ...

У меня вылетает TRAP. Аналогичный код на VBA работает. В чем может быть причина?

Автор:  Евгений Темиргалеев [ Четверг, 21 Август, 2008 18:28 ]
Заголовок сообщения:  Re: Подсистема Ctl. компоненты и события

Если не ошибаюсь, так - реализовывать абстрактные методы-события.
Код:
MODULE TestWeb;

   IMPORT
      Web := CtlSHDocVw, CtlT, StdLog;

   TYPE
      BrowserEvents = POINTER TO RECORD (Web.DWebBrowserEvents2) END;

   VAR
      w: Web.WebBrowser;
      wEvents: BrowserEvents;

   PROCEDURE (this: BrowserEvents) StatusTextChange* (Text: ARRAY OF CHAR);
   BEGIN
       StdLog.String("Statusbar text changed to " + ' "' + Text + '"');
      StdLog.Ln;
    END StatusTextChange;

   PROCEDURE (this: BrowserEvents) ProgressChange* (Progress: INTEGER; ProgressMax: INTEGER), EMPTY;
... - все абстр. методы д.б. реализованы
   PROCEDURE (this: BrowserEvents) PrivacyImpactedStateChange* (bImpacted: BOOLEAN), EMPTY;

   PROCEDURE (this: BrowserEvents) NewWindow3* (VAR ppDisp: CtlT.Object; VAR Cancel: BOOLEAN; dwFlags: INTEGER; bstrUrlContext: ARRAY OF CHAR; bstrUrl: ARRAY OF CHAR);
      (* A new, hidden, non-navigated WebBrowser window is needed. *)
   BEGIN
      StdLog.String("(NewWindow3): New WebBrowser is needed. ");
      StdLog.String("Flags = "); StdLog.Int(dwFlags);
      StdLog.String(', UrlContext = "' + bstrUrlContext + '"');
      StdLog.String(', Url = "' + bstrUrl + '"');
      StdLog.Ln;
   END NewWindow3;

   PROCEDURE Do*;
   BEGIN
      w.PUTVisible(TRUE);
      w.Navigate("http://oberoncore.ru/", NIL, NIL, NIL, NIL);
   END Do;

   PROCEDURE T1*;
   BEGIN
      w := Web.NewInternetExplorer();
      NEW(wEvents);
      CtlT.Connect(wEvents, w);
   END T1;

CLOSE
   CtlT.Disconnect(wEvents, w)
END TestWeb.
^Q TestWeb.T1
^Q TestWeb.Do

Автор:  Вячеслав Бойко [ Четверг, 21 Август, 2008 21:29 ]
Заголовок сообщения:  Re: Подсистема Ctl. компоненты и события

Трэп вылазит, судя по приведенному коду, в ответ на метод объекта grp1. Может быть дело не в событиях (grp1_evs), а в методе объекта?

Автор:  Вячеслав Бойко [ Четверг, 21 Август, 2008 21:33 ]
Заголовок сообщения:  Re: Подсистема Ctl. компоненты и события

Такая тема обсуждалась с подробными примерами Ильи Ермакова: viewtopic.php?f=27&t=224

Автор:  hothing [ Пятница, 22 Август, 2008 16:08 ]
Заголовок сообщения:  Re: Подсистема Ctl. компоненты и события

Вячеслав, спасибо за помощь!

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/