- PR -

JavaScripからActiveXコントロールへパラメータを送る。

1
投稿者投稿内容
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 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で編集した変数の結果を
送ることは出来ないのでしょうか?
どなたかお気づきの点があればご教授願います。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-03-09 17:45
var obj = new ActiveXObject("XXX.XXX");
obj.value = 123;
じゃダメですかね。
Objectタグを使用せず、スクリプトでインスタンスを生成しないとダメですが。
パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-03-10 09:24
ActiveX Control は画面に表示される直前に発生する
ReadProperties イベントを利用して
<param> タグで指定されたパラメータを読み込みます。

そのため、画面が生成された後に JavaScript で編集した
<param> の値を渡すことはできません。

もし、この ActiveX Control が <object> タグで画面に埋め込まれている場合は
<object> タグで id を指定すれば JavaScript からは
この id を使用して ActiveX Control を参照することができるので
JavaScript 内で ActiveX Control のプロパティの値に直接代入してください。
なな
ベテラン
会議室デビュー日: 2003/09/18
投稿数: 79
投稿日時: 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をよんであげればいいのかなぁ・・と思ったんですが
実行してもなにも変わりませんでした。書き方自体がおかしいのでしょうか・・。


パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-03-10 11:16
パテ太です。
引用:

パテ太さんのいうIDに直接するということは、
ActiveXコントロールの中のText1にセットしてあげればよいということでしょうか?


そういう意味ではなくて
『<object id="ctrl1" ・・・></object>
 となっていた時に ActiveX Controll の 名前が ctrl1 になります。』
という意味です。
この ActiveX Controll のKeyList というプロパティに値を設定したい時は
コード:
ctrl1.KeyList = 123


という感じで setParam() の末尾で行えば設定できると思います。

引用:

JavaScriptってFunctionしかないのでどこかで呼んであげなければいけませんよね?


最初に掲示されていた記述では 『onLoad = "<%・・・%>"』となっていたので
onLoad = "setParam()" としてonLoad のタイミングで呼び出して
あげればよいのではないでしょうか?

ただ・・・ form に onLoad イベントってありますか?
<body> タグに記述した方が良いかも・・・。
あん
会議室デビュー日: 2005/03/10
投稿数: 1
投稿日時: 2005-03-10 12:15
ActiveX側のプログラムが
どのようにしてPARAMの値を取得しているかが
気になりますね。
1

スキルアップ/キャリアアップ(JOB@IT)