ツールバーのボタンの動きがおかしい

このQ&Aのポイント
  • VB6(SP5)で作成したプログラムにおいて、ツールバーのボタンの動作が正常に機能しない問題に困っています。ボタンを押すと他のボタンの状態も自動的に変わるはずですが、起動直後にメニューで操作するとボタンが正常にトグルせず、ずっと押された状態になってしまいます。ツールバーのリフレッシュやtbrUnPressedの設定など、さまざまな対策を試しましたが効果がありません。他に解決策やこの現象に関する情報があれば教えていただきたいです。
  • VB6(SP5)で作成したプログラムにおいて、ツールバーのボタンの動作に関する問題が発生しています。ボタンを押すと他のボタンの状態が変わるはずですが、起動直後にメニューで操作するとボタンの状態が正常にトグルされず、ずっと押されている状態のままです。ツールバーのリフレッシュやtbrUnPressedの設定など、さまざまな対策を試しましたが効果がありませんでした。この問題に対する解決策や情報はありますか?お知恵をお貸しください。
  • VB6(SP5)で開発したプログラムで、ツールバーのボタンの動作に問題が発生しています。ボタンを押すと他のボタンの状態が変わるべきですが、起動直後にメニューで操作するとボタンの状態が正しくトグルされず、押された状態のままになってしまいます。さまざまな対策を試しましたが、問題は解決しませんでした。この問題に関する情報や解決策をお持ちの方がいれば、ご教示いただけますか?
回答を見る
  • ベストアンサー

ツールバーのボタンの動きがおかしい

VB6(SP5)でプログラムを作っていますが、ツールバーのボタンの動作がおかしくて困っています。 ツールバーにボタンを3つ作り(Aボタン、Bボタン、Cボタンとします)、スタイルをtbrButtonGroupにしました。当然、どれかひとつのボタンを押すと、他の二つは自動的にUnPressed状態に変わります。 起動直後、どのボタンがPressed状態になっているかは、INIファイルの設定にしたがいます。 この、ボタンを押しての機能切り替えをメニューからもできるようにしています。 つまり、メニューでAを選択すると、Aボタンを押したのと同じ状態になり、AがPressed、B、CボタンがUnPressed状態になります。 ところが、メニューで操作すると、起動時にPressed状態になっているボタンがずっとUnpressed状態のままになってしまいます。一度ツールバーでボタンを操作すると、その後はメニューで操作してもボタンは正常にトグルするのですが、メニューだけで操作していると、ずっとPressed状態のままです(ボタン表面の色だけ、PressedとUnpressedで変わります)。 現時点で以下の対策を試してみましたが、まったく効果ありませんでした。 ・ツールバーのリフレッシュ。 ・押されない他の二つのボタンに対してtbrUnPressedを設定する(本来tbrButtonGroupにしてあればいらないはず)。その後ツールバーをリフレッシュしてもダメ。 ・メニューを選択した場合でも、一度Toolbar_ButtonClick()へ飛んでからボタンの処理に飛ぶようにする。 上記以外に、何か手段はありますでしょうか? また、ツールバーコントロール自体のバグなんじゃないかとも思っているのですが、何かこの現象について情報がありましたら、お教えください。

  • ryo_f
  • お礼率99% (173/174)

質問者が選んだベストアンサー

  • ベストアンサー
  • baka
  • ベストアンサー率83% (15/18)
回答No.2

すみません。#1 では何にもならないですね。デバックのとき出来たと思って勘違いしてしまいました。 Load イベントを次に変えればOKかと思います。根本的な要因についてはわかりません。 Private Sub Form_Activate() DoEvents mnuTest_Click GetPrivateProfileInt("Settings", "test", 1, App.Path & "\test.ini") End Sub

ryo_f
質問者

お礼

2度も回答ありがとうございます。 今度はうまくいきました。 これで何とかなりそうです。助かりました。 ありがとうございました。

その他の回答 (1)

  • baka
  • ベストアンサー率83% (15/18)
回答No.1

原因についてはコードを見てみないとよくわかりません。が、似たような現象は何度も経験した覚えがあります。その詳細は忘れましたが。。。 試しに前回のボタンの状態を復元するサンプルを作ってみました。はずしていたらレスしてください。 1.ツールバーコントロールに tbrButtonGroup スタイルのボタンを3つ配置します。 2.メニューエディタで適当な親メニューを作成し、その下層として 'mnuTest' という同じ名前のメニューを3つ作成します。3つのメニューには1から3のインデックスを付けておきます。キャプションは 'A'、'B'、'C' とでもしておきます。 3.プロジェクトを適当な場所に保存してから実行します。 Option Explicit Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias "GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long Private Sub Form_Load() mnuTest_Click GetPrivateProfileInt("Settings", "test", 1, App.Path & "\test.ini") End Sub Private Sub Form_Unload(Cancel As Integer) Dim i As Long For i = mnuTest.LBound To mnuTest.UBound If mnuTest(i).Checked Then Exit For Next WritePrivateProfileString "Settings", "test", CStr(i), App.Path & "\test.ini" End Sub Private Sub mnuTest_Click(Index As Integer) If Not Toolbar1.Buttons(Index).Value = tbrPressed Then test Index Toolbar1.Buttons(Index).Value = tbrPressed End If End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) test Button.Index End Sub Private Sub test(Index As Integer) Dim i As Long For i = mnuTest.LBound To mnuTest.UBound mnuTest(i).Checked = i = Index Next 'ボタンの変更による処理が必要であればこれ以降に記述します End Sub

ryo_f
質問者

お礼

回答ありがとうございます。 多少やり方は異なりますが、私が書いたソースも回答していただいたソースと同じように、INIファイルに終了時のボタン状態を保存し、次回起動時にそのボタンが押された状態になるようにしています。 質問文がわかりにくかったかもしれませんが、このボタン状態の復元には問題ありません。 その後メニューだけで操作すると、起動時に押された状態のボタンがずっと押された状態のままで変化しないのです。 回答していただいたソースをコピー&ペーストして実行してみましたが、やはりメニューから操作すると、起動時に押されていたボタンがずっと押された状態のままでした。 なお、質問では書き忘れていましたが、WindowsのOSは2000とNT4.0です(それ以外のOSでは未確認)。

関連するQ&A

  • Google Toolbar Notifier、設定ボタンがない

    PC(WinXP)の立ち上がりが遅くなり原因はスタートアップのGoogle Toolbar Notifierでした。チェックをはずしても再発するので起動しないようにするにはGoogleのツールバーの設定ボタンから操作するようなのですが、うちのPCでは一番端のボタンは「ログインボタン」で「設定ボタン」がありません。どうすればよいでしょうか?またGoogle Toolbar Notifierは何故勝手に設定されたのでしょうか?

  • ツールバーの印刷ボタンを押すと・・・

    こんにちは Word2000でのことです。   ツールバーの印刷ボタンを押すとなぜか2枚印刷するような設定になってしまいました。もちろんボタンは一回しかクリックしていません。 メニューバーのファイル→印刷ダイアログボックスではちゃんとできているのに・・・ どこの設定を変えればいいのでしょうか? 教えてください。お願いします。

  • IE5.0 ツールバーへshalockボタンの追加について

    不具合があって、HDDを初期化して バックアップしたシステム他をコピーし直しました。 IE5.0のツールバーへshalockボタンを追加したいのですが、ボタンは追加されるのですが、他選択できるボタンと比べると色が薄く、機能しません。 shalockは、HDDに存在していて、起動もするのですが、IE5.0のツールバーから起動できません。 どのように設定し直したらよいでしょぅか。

    • ベストアンサー
    • Mac
  • googleツールバーにたくさんのGmailボタン

    googleツールバーにたくさんのGmailボタン 少し前からfirefoxを起動させると時々ツールバーの設定が勝手に変わって、Gmailボタンが3個表示されるようになりました。 設定で削除も出来ないので困っています。どうしたらいいのでしょうか。

  • Word 罫線ツールバーについて

    はじめまして。私はOfficeのインストラクターをしている者です。 Word2003罫線ツールバーのボタンについて、どうしてもわからないことがあります。 表を作成し、文字の配置、枠線、網掛けを設定しようと選択をしたのですが、なぜかこれらのボタンが使えない状態になってしまったのです。。。 教えている生徒さんの中で、何人かいまして。。。 ▼クリックしても、一覧が出てきません。 どうしようもなかったので、罫線メニューの「線種と~」ダイアログボックスから設定する方法を解決法として伝えたのですが。。。 操作やネットなどで調べているのですが、全く該当するものが見つからなくて>< ボタンが使えないのは、何が原因なのでしょうか? 単なるバグなのでしょうか。。。 どなたかご存知の方いましたら、教えてください! よろしくお願いします。

  • ツールバーにマクロのボタンができません。

    Excel2002で初めてマクロを作ってみました。(『日経PC21』の付録の冊子を参考にしました) 私はExcelの作業でセルの移動方向を右方向と下方向とに頻繁に切り替えるので、これをマクロにしてボタン一つで切替ができるようにしたいと考えました。 メニューバーで[ツール]-[マクロ]-[新しいマクロの記録]とし、[ツール]-[オプション]-[編集]タブ-「入力後にセルを移動する方向」(下方向になっていたのを右方向に変更)を指定しました。これで記録を終了し、[ツール]-[マクロ]-[マクロ]で記録したばかりのマクロを[実行]してみたところ、正常に動作(移動方向の切替)ができました。 これをツールバーにボタンとして登録するため、[ツール]-[ユーザー設定]で左側の「分類」のウィンドウの中の「マクロ」を指定し、右側の「コマンド」に「ユーザー設定ボタン」が現れるので、これをツールバーにドラッグ・アンド・ドロップしようとしました。(上記の冊子には、このドラッグ・アンド・ドロップ操作でツールバーに登録ができるとの記載があります) ところが始めはポインタに[+]のような小さな正方形が出るのですが、ドラッグした途端、それより少々大きな、X印の入った長方形に変わってしまい、ツールバーにドラッグしても何の反応もありません。 改めてマクロを[ツール]から起動してみたのですが、正常に動作します。 [ツール]-[マクロ]-[セキュリティ]の「セキュリティレベル」は「中」にしてあります。 ツールバーにマクロのボタンを登録するにはどうしたらよいでしょうか。

  • “行の挿入”ボタンは どのツールバーに入っていますか?

    いつもお世話になります。 宜しく御願いいたします。 Wordで以前ツールバーのオプション設定をさわったことがあるため “行の挿入”ボタンが 本当はどのツールに入っているものかがわからなくなりました。 メニューバーの罫線⇒挿入⇒行の挿入 では確認できているのですが ツールバーでは どこに入っているものなのでしょうか? 今現在は 標準ツールバーに“行の挿入”ボタンがあります。 これはたぶん私がボタンを作ったのではないかと思います。 Word2002を使っています。

  • ツールバーに表示されるボタンが減っていく

    outlook express6を使用しています。起動時はツールバー上に「メールの作成」~「エンコード」まで10個ほどボタンが表示されていますが、起動後数時間ほどして見てみると表示しているボタンが減っています(「アドレス」や「送受信」が見えなくなっている)。先日はついに「メールの作成」と「返信」しか見えなくなっていました。カスタマイズを見ても別に問題ありません。終了して再起動すれば問題なく全て表示されます。メニューから選んだり再起動すれば普通に使えるので良いのですが、なんだか気になっています。原因がわかる方ご教示下さい。

  • IEのツールバーボタンを押すとエラーがでます。

    Internet Explorerの ツールバーにある ひとつのボタンを押すと 「ファイルが見つかりません。名前を正しく入力したかどうかを確認してやり直してください」とエラーがでます。 ツールバーにあるそのボタンは Weather bugというもので、少し前に プログラムの変更と削除から削除したアプリケーションで、パソコン内部にアプリケーションは残っていないのですが、ツールバーには何故かおかしな形で残ってしまっているようです。 (ボタンのアイコンはきえて、両端のツールバーボタンのアイコンの間でそこだけ空白になっており、マウスをそこにあてたときだけ ボタンの名前が「weather bug」と表示されボタンをクリックすることができます) これを完全に削除してしまう方法を教えてください。 ユーザー設定で一時的に表示するツールバーボタンを選択するのではなく 無意味なものなので完全に消してしまいたいです。 どうぞ宜しくお願いいたします。

  • 自作のツールバーに登録するマクロについて

    Excel97, Windows98SEを使用しています。 「表示」-「ツールバー」-「ユーザー設定」の「ツールバー」タブ「新規作成」で、「stamp」という名前のツールバーを作成しました。 このツールバーのコマンドボタンにマクロを登録して使いたいのですが、  Macro1:コマンドボタンAをクリックすると図aをコピーして貼りつける  Macro2:コマンドボタンBをクリックすると図bをコピーして貼りつける  Macro3:コマンドボタンCをクリックすると図cをコピーして貼りつける  … という風に殆ど同じ作業ですので、これをひとつのマクロにまとめたいのですが、そういう事は可能でしょうか? たとえばSelect Caseを使って、  押したボタンがコマンドボタンAの場合、図aをコピーして貼りつける  押したボタンがコマンドボタンBの場合、図bをコピーして貼りつける のように記述できたら、と思っているのですが、 「押したボタンがコマンドボタンAの場合」のコードがわかりません。 ご存知の方、どうぞよろしくお願いいたします。

専門家に質問してみよう