CVI の表を自動的にハイライトする機能を止めるには 使用ソフトウェア: LabWindows/CVI Development Systems>>Full Development System使用ソフトウェア・バージョン: N/A 使用ソフトウェア・バージョンに特化: N/A 二次のソフトウェア: N/A
問題: LabWindows/CVI 5.5.1 から 7.1 にアップグレードして気づいたのですが、表のセルがハイライト表示(青い枠線)されます。これは 5.5.1 では起こりませんでした。この機能を停止させる方法はありますか。 解決策: この枠線はコントロールにフォーカスがないときに表示されます(5.5 でもフォーカスがあるときは塗りつぶし表示されます)。表が編集モード (ATTR_TABLE_RUN_STATE = VAL_EDIT_STATE) のときには、枠線は表示されません。表にフォーカスがないときには動作状態は関係ないことを利用して、表からフォーカスがなくなったときに動作状態を変更すれば、枠線を表示させないようにできます。表のコールバックに以下のコードを追加してみてください。 case EVENT_GOT_FOCUS: SetCtrlAttribute (panel, control, ATTR_TABLE_RUN_STATE, VAL_SELECT_STATE); break; case EVENT_LOST_FOCUS: SetCtrlAttribute (panel, control, ATTR_TABLE_RUN_STATE, VAL_EDIT_STATE); SetCtrlAttribute (panel, control, ATTR_DIMMED, 1); SetCtrlAttribute (panel, control, ATTR_DIMMED, 0); break; このコードでは、ATTR_DIMMED を変更しています。動作状態属性の変更後、表を再描画させるためのトリックです(コントロールからフォーカスから外れたときに必要な作業です)。 ところで、このコールバックは、パネルがロードされてから、ユーザがフォーカスを変更したときに問題を修復するだけです。最初にパネルが開いたときに、表がアクティブでなければ適用できません。その場合には以下のような初期化コードを追加します。 SetCtrlAttribute (panel, control, ATTR_TABLE_RUN_STATE, VAL_EDIT_STATE); また、元々 CVI 5.5.1 で作成された表(それを CVI 7.1 で開いている)を使う場合にはindicator モードのときに枠線は表示されません。これはバグで、将来のバージョンで修復される予定ですが、当面の回避策は以下のとおりです。 表は表示用の部品なので、どのセルかアクティブなのか問題にはなりません。使用していない列や行があれば、表示されない部分に空の行や列を追加し、その中のセルをアクティブにします。またスクロールバーを隠しておけば、ユーザにはその行や列が見えないので、枠線を表示せずに済みます。 関連リンク: KnowledgeBase 3209FK8O: How Can I Avoid a Row or Column To Be Selected When The User Clicks the Headers in CVI? 添付:
報告日時: 10/08/2004 最終更新日: 03/08/2005 ドキュメントID: 3E78FG29 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
