Текущий архив: 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.46 MB
Время: 0.01 c