VB6.0で開発しています。
sstabに3つのActiveXコントロール(OCX)を貼り付けてexeを作成しています。
しかし、初心者なため、OCX内のコントロール
たとえばコマンドボタンや、コンボボックスにセットフォーカスすら
移りません。
これでは値を設定することもできません。
すみませんが、御存知の方、おしえてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

意味がよくわかりません。


1つのSSTAB内にTABが三つ存在していて、各タブの中にコマンドボタンなどの各コントロールが存在しているという状況でよろしいですか?

>値を設定することもできません。
ここらもよく意味がわからないのですが・・・
SSTABの内部でも外部でも、参照方法や値のセットの方法に違いはありません。
Text1.TextやCommand1.Captionなどなどです。

何がしたいのか、何ができなくて困ってるか、再度情報をお願いします。
    • good
    • 0
この回答へのお礼

TAGOSAKU7さん、ありがとうございました。
OCXは作ったことがなかったのでよく分からず、
分からないまま質問したのでTAGOSAKU7さんも?でしたでしょう。
OCXの中にはリストボックスやテキストがあり、
そのOCXが全部で13個あります。
それを1つのOCXにして、EXE(フォーム)に貼り付けることでした。
OCXのなかで処理をどう書いていいのか分からなかったのです。
全てProperty GetやLetで取得・設定すればよかったんですね!
よく分からない質問してすみませんでした。
この補足で私が分からなかったことが分かっていただけたでしょうか?

お礼日時:2002/03/01 17:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QActivexコントロール(ocx)のダウンロード。

現在ActiveXコントロールのアプリを作成(修正)
しています。
開発環境
OS: XP(SP2)
visualStudio6.0(SP5)

実行環境
OS: XP(SP2)

デバッグ環境では正常に動作するのですが、
OCXファイルを作成して、
ブラウザ上で実行するとどうもうまくいきません。
(修正前のアプリは正常にブラウザ上で動作する)
 現状としましては

・IEのセキュリティはActiveXのダウンロードを許可。

・バージョンは修正前のリビジョンに+1を設定。

・ダウンロードするOCXファイルは    C:\WINDOWS\Downloaded Program Filesのフォルダに
ダウンロードされてくるがインストールはされていない(状態が不明となる)

・clsIDをリナンバーしても動かない。

・修正前の状態から再度OCXファイルを作成するだけで
 も動かない。

・OCXをコンポーネントとして登録できない

・開発環境、実行環境をwin2000にしても
 同様の結果です

自分で思いつく事はすべてやってみたのですが、
うまくいきません。
なにかアドバイスでも何でもよいので
いただけないでしょうか?

現在ActiveXコントロールのアプリを作成(修正)
しています。
開発環境
OS: XP(SP2)
visualStudio6.0(SP5)

実行環境
OS: XP(SP2)

デバッグ環境では正常に動作するのですが、
OCXファイルを作成して、
ブラウザ上で実行するとどうもうまくいきません。
(修正前のアプリは正常にブラウザ上で動作する)
 現状としましては

・IEのセキュリティはActiveXのダウンロードを許可。

・バージョンは修正前のリビジョンに+1を設定。

・ダウンロードするOCXファイルは    C:\WINDO...続きを読む

Aベストアンサー

何はともあれ動作するようになったとのことで、良かったです。

さてclsidの件ですが、「他のソフトウェアから見て使用方法が同じに見えるプログラムに対しては同じclsidを割り振る」のが基本です。例えば、従来のプログラムに不具合があり、プロパティ・メソッド等のインターフェースは変更しないが不具合だけは解消したという場合はclsidは変えませんが、機能を追加してプロパティやメソッドが増減したような場合にはclsidを変えます。

<object>タグ内のclsidを変更したところ動作するようになったとのことですが、そうだとすれば、全く同じ状態で<object>タグ内のclsidとOCX内に記述しているclsidを元の値に戻し、レジストリに登録されたclsidも以前の値にすればやはり同じように動作するはずです。当初clsidを同じにしても変更しても動作しなかったのは、おそらく開発の手順が整理されていなかったため、適切な段階でOCXのレジストリへの登録作業が行われなかったためではないかと思います。

QVB6.0で作成したActiveXコントロール

お世話になっております。

VB6.0で作成したActiveXコントロールをディストリビューションウィザード
でパッケージ(インターネット用CABファイル)にし、Win2000Server(IIS)に
設定後、クライアントPCからIEで表示しようとすると、「セキュリティ警告」
のダイアログが表示され、ダイアログで「はい」を選択しても画面が表示さ
れません。(デジタル署名は未作成)

Win2000Proで同様のテストした場合は画面の表示まで実行出来ました。
IEではサーバーを信頼済みサイトに設定しています。

ダイアログタイトルは、
「セキュリティ警告」
メッセージが、
XXXXXXX.CABをインストールして実行しますか?
発行者は次の問題のため判別できません
AUTHENTICODE署名を検出できません
です。


上記の症状が発生する原因等をご存知の方がいらっしゃいましたら、ご教授をよろしくお願いいたします。

Aベストアンサー

ところで確認したクライアントPCのOSは?

VBのランタイムが入っていないのでは?
作成したバージョン(SPも含む)のランタイムが
入っているか確認してみてください。

QActiveX DLL と ActiveXコントロールの違い

VB6で開発をしています。
複数のEXEファイルを使用するシステムです。
各EXEファイルの共通のモジュールをライブラリ化しようと思っています。

これは [ActiveX DLL] 又は、[ActiveXコントロール] のどちらでも実現できると思うんですが、どちらで作成した方が良いのでしょうか?

それぞれのメリット、デミリットを教えて下さい。

Aベストアンサー

混乱させますw

私も最近まで知らなかったのですが、任意のタイミングでOCXもインスタンスの生成が可能みたいです。
WinSockを張らずにPGを書き上げ、WinSockコントロールを使用する方法がわたしの利用しているメーリングリストに出ておりました。
その結末は、「あまり公開はされてはいないけど、ほとんどのコントロールはEXEにしてからOCXとして取り込むことができる」ということです。


ActiveXDLLも参照設定をしなければ、DLLバージョンが違っても大丈夫です。
ただし宣言が
As HogeHoge←(DLLの定義)を
As Object
として、CreateObject("DLL定義")のように行うと、引数が一緒ならEXEはリコンパイルしないでもいいです。実例として、エクセルを参照設定して[as Excel]と宣言していたら、その参照設定に対応したExcelしか操作できませんが、[As Object]と[CreateObject("Excel.Application")]とすると、EXCEL95~XPまで扱えます。
不便なのは、タイプライブラリが未設定になるので、Excelの各プロパティ/メソッドを知らないといけないし、Excel固有の定数が宣言もされてないので、自分で定数値を調べなければいけません。でもバージョンの違いを気にしないでいけるのは、非常に便利です。


速さのことを言ったら、当然DLLが早いです。
OCXはプロパティにRight/Leftなどを持っています。変えて言うと実体を持っていると言うことです。非表示にしていても実体をもっています。DLLはインスタンスは生成されますが、OCXだって生成されるので、表示しないで使用するなら、OCXの意味があまりありません。


んで、私(個人)の考えとしては、、、
※オリジナルボタンなどの、画面上必要ならOCX
  理由:画面に必要だから
※画面に表示を行う必要がなくても、配布する気ならOCX
  理由:配布先のユーザが扱いやすい
※そうじゃなければDLL
  理由:OCXにする理由が見つからないから


余談です。
私はいつもCommonコントロールは使用しません。
  理由:簡単なAPIでも実現できるのに、機能が少ないCommonコントロールを追加して、EXEの容量を大きくしたくないから

混乱させますw

私も最近まで知らなかったのですが、任意のタイミングでOCXもインスタンスの生成が可能みたいです。
WinSockを張らずにPGを書き上げ、WinSockコントロールを使用する方法がわたしの利用しているメーリングリストに出ておりました。
その結末は、「あまり公開はされてはいないけど、ほとんどのコントロールはEXEにしてからOCXとして取り込むことができる」ということです。


ActiveXDLLも参照設定をしなければ、DLLバージョンが違っても大丈夫です。
ただし宣言が
As HogeHoge←(DLLの定...続きを読む

QSSTabのフォーカスの移動について!

Windows2000、VB6.0、SP5で開発しています。

質問は、SSTabのフォーカス移動についてです。
SSTab上のコントロール上にフォーカスがある時、
Tabでフォーカスの移動をしてると、急にフォーカスが見えなくなってしまうことがあります。
調べてみると、隠れているコントロールに移動してしまってるみたいなんですが、
これは、解決策はないんでしょうか?

最後のコントロールでSetFocusを使うとかあったのですが、その場合、
最後のコントロールにフォーカスがある時に、どのコントロールをクリックしても、
最後のコントロールのSetFocusで設定したコントロールにフォーカスが移動してしまいます。

良い方法をご存知の方、いらっしゃいましたら、
どうぞ、ご教授よろしくおねがいしますm(_ _)m

Aベストアンサー

#2の方法で
画面レイアウトが変わっちまうぜ!
ってお思いなら、
PictureBoxをお使いになるのが良し。
その場合、BorderStyleを無しにするべし。

僕でしたら、
Tab毎の最初と最後のコントロールの前後に
PictureBoxを貼り付けて、
全部のコントロールのSetFocus時に
コントロールを保持して、
PictureBoxにフォーカスが当たったときに
どうするかによって
処理を考えますが。
例えば、
次のタブにFocusを移すのであれば、
アクティブなタブを切り替えたり、
Focusを移したくないのであれば、
元のコントロールにSetFocusしたりします。

QVB(6.0)で作成したActiveX(ocx)をVBで呼び出す方法

普通OCXを使用する時は、
デザイン時にフォームにOCXを貼り付け
実行するとそのOCXが表示されると思うのですが
今回の質問はそうではなく
デザイン時には何も貼り付けず
VC++で言うCreateObjectの様に
実行時にOCXのオブジェクトを生成する事が
出来るのでしょうか?

Aベストアンサー

レジストリに登録してあれば、VBでもCreateObjectでできます。


このカテゴリの人気Q&Aランキング

おすすめ情報