03-05-2016 04:01 AM
LabVIEW2010SP1で数値タイプリストを作成するエディタを作成中で、表制御器を使おうとしてます。
表制御器を調べてて
セルに実数以外が入力されたかチェックするとしたら、値変更でチェックするしかないとは思って
編集位置を戻す処理などを検討中なのですが
改めて、制御器の編集中の文字列及びカーソル位置が取得などして(手軽に)
キーダウン?イベント等でチェックできたらうれしいなぁと思い
念のため、質問しました。(ぺこ)
解決済! 解決策の投稿を見る。
03-05-2016 04:54 AM
この機能が使えるか分かりませんが、マウスダウンイベントで座標を拾い、表制御器の「ポイントから行列」メソッドを実行することでどのセルでマウスダウンされたかを判定することができます。的外れかもしれませんがご参考まで。
ちなみにイベントで「キーダウン?」というフィルタイベントを使用されているのは何か意図がありますか?
ご存知かも知れませんがイベントで「?」がついている物は右側の「破棄」とTrueにすることでそのイベントをキャンセル(フィルタ)することができます。
すでに起きたイベントとして処理する目的であればここは通常の通知イベント(キーダウン)で良いようにも思われます。
03-07-2016 03:40 AM
TAKASU様
レスありがとうございます。
>この機能が使えるか分かりませんが、
こんな、メソッド()があるのですね、知りませんでした。
マウスダウンだと編集位置プロパティと同じ値を取得するようですが
(編集位置プロパティが変更されないマウス移動等)のイベント処理などで
マウスカーソルがあるセル位置を取得して処理するのに有効な手段だと思いました。
ご指導ありがとうございます。
>ちなみにイベントで「キーダウン?」というフィルタイベントを使用されているのは何か意図がありますか?
まずは、入力される前に事前に数値(実数)かどうかをチェックしていというのが基本方針です。
しかし、「キーダウン?」などで1文字づつ数値で使って良い文字かどうかをチェックするだけでは不十分。
例えば、1.2....3.4.5など入力の仕方によっては、実数ではない文字が入力されてしまう可能性があるので
その場合、値変更で元に戻さないといけないなぁと考えているうちに、
制御器の編集中の文字列及びカーソル位置が取得などして(手軽に)できれば、
値変更前にチェックできないかと思い、今回の質問に至りました。
********************************************************************************************
そもそも、制御器の編集中の文字列及びカーソル位置するのは無理
よくよく考えると
「不適切な数値文字列(1.2....3.4.5)は一度実数(1.2....3.4.5→1.2)してしまって許可してしまえば良いや」
発想で処理することにしました。
********************************************************************************************
【対処方法は】
①"表制御器":マウスダウン
・編集位置を覚える
②"表制御器":キーダウン?
・編集位置を覚える
・ASCII文字は、+-.0123456789 のみ受け付ける
③"表制御器":値変更
・新規値から①/②で取得した編集位置より変更されたセル文字列を取得→実数値(DBL)→文字列にし、新規値を置換する。
TAKASU様ありがとうございました。