- - PR -
JavaScripからActiveXコントロールへパラメータを送る。
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-03-09 17:37
いつも参考にさせていただいております。
現在ActiveXを使った開発を行っております。 環境は ・ActiveXコントロール(Visualbasic6.0) ・JavaScript その中でActiveXとJavaScriptのデータを受け渡す処理を行っております。 ActiveXからJavaScript側へデータを送ることは出来たのですが JavaScript側からActiveX側への変数データの受け渡しがうまくいきません。 受け渡しはPARAMタグを使って以下のように行っております。 <form name="form01" onLoad="<%=setParam()%>"> ・・・・省略・・・・ </form> <PARAM NAME="param1" VALUE=""> <script language="JavaScript1.2"> <-- funtion setParam() { form01.param1.value = 123; } //--> </script> このParam1のValue(123という値)を取得したいのですが実行するとなにも取得できません。 <PARAM NAME="param1" VALUE="123"> と文字列にすれば取得できるのですがPARAMタグにJavaScripで編集した変数の結果を 送ることは出来ないのでしょうか? どなたかお気づきの点があればご教授願います。 | ||||||||||||
|
投稿日時: 2005-03-09 17:45
var obj = new ActiveXObject("XXX.XXX");
obj.value = 123; じゃダメですかね。 Objectタグを使用せず、スクリプトでインスタンスを生成しないとダメですが。 | ||||||||||||
|
投稿日時: 2005-03-10 09:24
ActiveX Control は画面に表示される直前に発生する
ReadProperties イベントを利用して <param> タグで指定されたパラメータを読み込みます。 そのため、画面が生成された後に JavaScript で編集した <param> の値を渡すことはできません。 もし、この ActiveX Control が <object> タグで画面に埋め込まれている場合は <object> タグで id を指定すれば JavaScript からは この id を使用して ActiveX Control を参照することができるので JavaScript 内で ActiveX Control のプロパティの値に直接代入してください。 | ||||||||||||
|
投稿日時: 2005-03-10 10:23
かつのりさん、パテ太さん、レスありがとうございます。
------------------------かつのりさんの引用↓ var obj = new ActiveXObject("XXX.XXX"); obj.value = 123; じゃダメですかね。 Objectタグを使用せず、スクリプトでインスタンスを生成しないとダメですが。 -----------------------------------------↑ 現在、オブジェクトタグを使うことにより VBから渡すことが出来ているのでなるべく、その形を生かしたいのです。 ------------------------------------------------------パテ太さんの引用↓ もし、この ActiveX Control が <object> タグで画面に埋め込まれている場合は <object> タグで id を指定すれば JavaScript からは この id を使用して ActiveX Control を参照することができるので JavaScript 内で ActiveX Control のプロパティの値に直接代入してください ----------------------------------------------------------------------↑ 現在、こんな風に作っています↓ <OBJECT ID="Project1" WIDTH=771 HEIGHT=456 CLASSID="CLSID:CC3E910C-A348-444E-8FCC-F7A92D39162B" codebase="Project1.CAB#version=1, 1, 0, 2"> <PARAM NAME="KeyList" VALUE="<%= setParam()%>"> <script language="JavaScript1.2"> <-- funtion setParam() { Project1.text1.text = 123; } //--> 正直、JavaScriptも勉強中のため、本とにらめっこしながら作っている状態です。KeyListという名前のパラメータにJavaScriptで編集した値"123"をセットしたい。 パテ太さんのいうIDに直接するということは、 ActiveXコントロールの中のText1にセットしてあげればよいということでしょうか? JavaScriptってFunctionしかないのでどこかで呼んであげなければいけませんよね? そうなるとValueのなかでJavaScriptをよんであげればいいのかなぁ・・と思ったんですが 実行してもなにも変わりませんでした。書き方自体がおかしいのでしょうか・・。 | ||||||||||||
|
投稿日時: 2005-03-10 11:16
パテ太です。
そういう意味ではなくて 『<object id="ctrl1" ・・・></object> となっていた時に ActiveX Controll の 名前が ctrl1 になります。』 という意味です。 この ActiveX Controll のKeyList というプロパティに値を設定したい時は
という感じで setParam() の末尾で行えば設定できると思います。
最初に掲示されていた記述では 『onLoad = "<%・・・%>"』となっていたので onLoad = "setParam()" としてonLoad のタイミングで呼び出して あげればよいのではないでしょうか? ただ・・・ form に onLoad イベントってありますか? <body> タグに記述した方が良いかも・・・。 | ||||||||||||
|
投稿日時: 2005-03-10 12:15
ActiveX側のプログラムが
どのようにしてPARAMの値を取得しているかが 気になりますね。 |
1