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

Вниз

Возврат из ActivX в сценарий   Найти похожие ветки 

 
StanislavB   (2003-09-19 08:31) [0]

В HTML приложении в окне имеется три фрейма, в которые из JavaScript загружаются и работают ActivX или HTML. При помощи элементов управления Ax в одном фрейме неообходимо перезагружать другой фрейм. Т. е. необходимо иметь возврат из Ax в сценарий, в этом же окне броузера, не открывая новое окно. Как передать из Ax в сценарий событие, выполнить в сценарии функцию, по инициативе Ax, мне явно не хватает знаний. Ax пишу на D6, серверные программы на PHP, клиентские на HTML, JavaScript и Ax.
Прошу помощи.


 
Тих   (2003-09-21 02:15) [1]

В целом примерно так:
"Болванка", например, ActiveXForm формируется сразу с поддержкой событий (см. IDL). Тебе нужно

1) Создать COM-обертку своего события в _TLB.pas при помощи редактора Type Library (например, onmyevent)

2) В коде JScript пишется примерно следующее
<!--html-->
<object id="myactivex" classid="{00000000-...000}"...>
</object>
<!--jscript-->
<script>
function onmyeventhandler()
{
alert("event occured");
document.location.href = " http://www.microsoft.com";
}
document.all["myactivex"].onmyevent = onmyeventhandler;
</script>

Не тестировал, но принцип такой. Предварительно советую проверить, возбуждаются ли твое событие при помощи, например, ActiveX COntrol Test Container (входит в Visual Studio 6)


 
StanislavB   (2003-09-21 09:43) [2]

Тих, спасибо за отзыв.
Механизм этот понятен. Как говорится чувствую, что пол литра, а словами сказать не могу. Чисто этот код не пойдет.

document.all["myactivex"].onmyevent = onmyeventhandler;

Правильнее по моему будет

document.all.myactivex.onmyevent = onmyeventhandler;

Но как в Activex активизировать это событие. Для винды я просто бы послал через PostMessage. А для COM интерфейса для меня это проблема. Совсем тупой. В книгах пишут много умного, но в общих чертах и не то что нужно в первую очередь - это динамическое взаимодействие и обмен информацией в обе стороны. Хорошо бы найти действующий примерчик по этому поводу. Еще раз спасибо.
Stas.


 
Тих   (2003-09-21 14:07) [3]

Знаешь, с JScript пока погоди. Я раньше только на VBScript обработчики писал; с JScript Access Violations полезли, отчего - не пойму :-)

А так - лови туториал )

давай по порялку - создай ActiveXForm и назови ее MyActiveForm, далее:

1) Кидай на ActiveXForm кнопку Button1 и SpinEdit ;
2) В TypeLibrary Editor найди диспинтерфейс IMyActiveFormEvents
3) добавь в нему метод с именем OnMyEvent
4) на вкладке Parameters добавь один аттрибут этого метода -
Name - "Value", Type - "long", модификатор - "[in]"
5) Нажми кнопку "Refresh implementation"

* * *

6) В обработчике события нажатия на кнопку Button1 пишешь:

procedure TMyActiveForm.Button1Click(Sender: TObject);
begin
FEvents.OnMyMethod(SpinEdit1.Value);
end;

Вуаля. Собираем, регистрируем.

Далее, код HTML

<object classid="clsid:73AD4B46-542D-4F6F-ABC1-7E1A5DAC0806" id="MyActiveForm1" width="696" height="480">
<param name="Visible" value="0">
<param name="AutoScroll" value="0">
<param name="AutoSize" value="0">
<param name="AxBorderStyle" value="1">
<param name="Caption" value="MyActiveForm">
<param name="Color" value="2147483663">
<param name="Font" value="MS Sans Serif">
<param name="KeyPreview" value="0">
<param name="PixelsPerInch" value="96">
<param name="PrintScale" value="1">
<param name="Scaled" value="-1">
<param name="DropTarget" value="0">
<param name="HelpFile" value>
<param name="DoubleBuffered" value="0">
<param name="Enabled" value="-1">
<param name="Cursor" value="0">
</object>
</p>
<script language="VBScript">
Sub MyActiveForm1_OnClick()
Alert "Click"
End Sub

Private Sub MyActiveForm1_OnMyMethod(Value)
Alert Value
End Sub
</script>


 
Тих   (2003-09-21 14:09) [4]

сорри
3) добавь в нему метод с именем OnMyMethod


 
Тих   (2003-09-21 14:26) [5]

Все, разобрался.

<script language="JScript" for="MyActiveForm1" event="OnMyMethod(Value)">
alert(Value)
</script>

Есть вопросы - пиши на predikaren@hotbox.ru


 
StanislavB   (2003-09-22 08:43) [6]

Спасибо, все попробую сообщу мылом. Понимаешь, обмен параметрами информацией через интерфейс со скриптом у меня нет проблем, а события застопорились. Обязательно опробую твой пример, а там пойдет. Да у меня все на JavaScript. Пока все здорово получалось. Думаю получится и это.



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

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

Наверх




Память: 0.48 MB
Время: 0.026 c
7-56933
Karburator
2003-09-03 16:20
2003.11.17
Удаление каталога с содержимым


1-56663
lucky4me
2003-11-05 08:59
2003.11.17
из C++Builder в Delphi


1-56681
Felixx
2003-11-07 19:13
2003.11.17
Выделение неполной строчки в StringGrid


1-56679
Ivolg
2003-11-07 19:00
2003.11.17
Изменения в проге!


1-56625
Maks Realov
2003-11-05 14:07
2003.11.17
Работа с указателями в OP - почему так?