こんにちわ。
プログラムに関する質問とは異なる内容かと思いますが、
ご教授頂ければと思っています。
あるシステムのプログラム検証を行なっているのですが、
リリースモード(EXEからの実行)とデバッグモード(ブレイクを置いての実行)とでは、動作が異なる場合があります。
リリースモードでは、あるイベントを発生することによりフォーム上に存在する
スプレッドにデータが一覧表示されるのですが、デバッグモードで同じ操作を行なうとデータが一覧表示されません。しかも、フォーム上のスプレッド自体反応無し
とい結果になります。
スプレッドは、多種画面で使用しているのですが、そのような現象が起きるのは現在の画面のみです。
なぜ、このような動作が起こってしまうのでしょうか。
また、デバッグモードでも正常にデータを一覧表示させるための策はあるのでしょうか。
ご教授お願い致します。
−開発(動作)環境−
Windows2000(SP4)
VisualBasic 6.0(SP4)
ところで、MSDNってご存知ですか?
編集 削除MSDNは存じておりますが、それが何か?
編集 削除微妙なタイミングかイベントの発生順序に依存しているコードを書いたせいでは?
「あるイベント」が何かを明示したほうが良いでしょう。
ひろさん、レスありがとうございます。
>微妙なタイミングかイベントの発生順序に依存しているコードを書いたせいでは?
>「あるイベント」が何かを明示したほうが良いでしょう。
「あるイベント」について説明致します。
SSTAB(MS-Tabbed Dialog Control6.0(SP4))を使用し、5つのタブが存在しています。
1タブ目にはテキストコントロールが存在し主に入力(個人情報)します。
2タブ目から4タブ目には DataGrid(MS-DataGrid Control6.0(SP4))が、それぞれ存在しています。
タブを切り替えることにより、1タブ目で入力された一個人の情報を展開して行きます。
その際、2タブ目、3タブ目のDataGridでは期待通りの結果が一覧表示されるのですが、4タブ目を選択すると何故か1タブ目の項目内容が表示されてしまいます。
但し、この現象はプログラム上から実行した場合に起きる現象で、この状態でEXEを作成しEXEから実行した場合は、正常に4タブ目には4タブ目に設定しているDataGridや、その結果が得られています。
実際に、システムとしては正常動作しているのですがプログラム上から実行させるとこのような、おかしな現象が発生しています。
EXEが正常に動作している分、コーディングミスとも考えずらかったのですが・・・
ちょっとしたバージョンアップをしようと思っても、なかなか出来ない状態です。
SSTabは多機能ですしコンテナなので使いやすいですが、動作が不安定な過去があったので個人的には大嫌いです。
さて。
SSTabを使っているということは、Tab1〜4に別々のDataGridを貼り付けてあると思うんですが、違いますでしょうか。
もしそうであれば、項目内容はともかく、4タブ目を選択した時に1タブ目の項目内容が表示されているDataGridは1タブ目、4タブ目のどちらのコンテナに貼り付けたものですか?
もしコンテナを使用せず、ひとつのDataGridを使い回しているのなら、SSTabを使用する意味はほとんどありませんので、TabStripに差し替えてしまうのもひとつの手です。
また、「EXE」としかおっしゃっていませんが、これはネイティブコンパイル・P-codeコンパイルのどちらでしょうか。
ネイティブコンパイルEXEはイベントの発生順が微妙に変わりやすいので、P-codeコンパイルでの確認も一度してみてください。
さらに、どうしても現状のままなんとかしたいのであれば、上記で説明されている動作で使用している各イベントから、イベント開始と終了がわかるような文字列をテキストファイルにはき出すようなコードを追加し、イベントの発生・終了の順序を確認してみるところから始めてみてください。
できれば、発生順序で動作が変わるようなイベントの使い方は極力避ける、命がけで避けるべきではあるのですが。
私も同じようなトラブルにみまわれ、コントロールをFrameに全て乗っけて
タブの切り替えと同時にFrameのVisibleを切り替えてその場しのぎをしましたが、
以後SSTabは全く使用せずTabStripを使用しています。
参考資料として、
VB初心者友の会
http://www2j.biglobe.ne.jp/~little-g/vbtomo.html
一般掲示板#1233 (藤代千尋さんの投稿)
「RE#1232:タブダイアログ(SStab)上のコントロールの座標指定」
にも目を通しておくとよいかも。