Главная страница
    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.46 MB
Время: 0.008 c
4-56953
LOMic
2003-09-22 11:45
2003.11.17
Непонятки с WaitForSingleObject


1-56594
stone
2003-11-05 13:16
2003.11.17
Multi-part message in MIME format


11-56552
savva
2003-02-19 10:07
2003.11.17
Memo and Insert - работает или нет?


1-56726
RoLeX
2003-11-06 17:33
2003.11.17
Когда разница между Edit1.text и Edit2.text больше 14342, о прога


14-56909
Ал
2003-10-27 12:17
2003.11.17
Как правильно и аккуратно бороться с пылью в системном блоке?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский