Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.11.17;
Скачать: [xml.tar.bz2];

Вниз

Возврат из 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
14-56853
adif
2003-10-27 14:19
2003.11.17
Защита файла от удаления


1-56599
GIGorON
2003-11-06 08:43
2003.11.17
Передача параметра


14-56843
VID
2003-10-28 13:00
2003.11.17
Админинг Windows 2000 (лок. машина)


6-56802
Lony
2003-09-22 16:01
2003.11.17
Пинг


11-56553
Ash
2003-02-25 14:53
2003.11.17
TStrList





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский