NOTE!

Q 18
子オブジェクトのイベントで親オブジェクトのValue値は参照しない

A 18
配列オブジェクトを子オブジェクトとして持つ、親子関係のあるオブジェクトにおいて、子オブジェクトで発生したイベントにて選択された項目を参照する場合は、親オブジェクトのValue値を参照せず、イベントハンドラの引数として渡されるEventオブジェクトのFromプロパティを参照してください。

EventオブジェクトのFromプロパティにはイベントが発生したオブジェクトのリファレンスが格納されていますので選択された項目の項目番号(添え字)を、From.indexで参照してください。

これは、イベントがイベントキューを経由して処理されるため、イベントハンドラ内の処理の時点では親オブジェクトのValueプロパティの値が、イベント発生オブジェクトとは異なる位置を示している場合があるためです。
また、同様の理由から、子オブジェクトで発生したイベントにおいて、イベントが発生した項目以外の選択状態も参照しないようにしてください。
親子関係のあるオブジェクトにおいて、子オブジェクトで発生したイベントでの処理は、イベントハンドラの引数として渡されるEventオブジェクトを基に行うようにしてください。

子オブジェクトで発生したイベントを親オブジェクトのイベントハンドラで捕捉した場合も、子オブジェクトで発生したイベントにて選択された項目を参照する場合と同様なため、親オブジェクトのイベントハンドラ内でもValue値は参照せず、EventオブジェクトのFromプロパティを参照してください。


子オブジェクトで発生したイベントのイベントハンドラ内での選択項目参照方法の詳細については、下記のTIPSをご参照ください。

親子関係のあるオブジェクトでの選択位置参照の注意点(単一選択オブジェクト)
  PulldownList
  OptionButton
  Spread
  TreeView

親子関係のあるオブジェクトでの選択位置参照の注意点(複数選択可能オブジェクト)
  CheckBox
  ListBox
  ListView


TabFrameオブジェクトの場合、配列化したTabFormオブジェクトを子供に持ちますが、他のオブジェクトの「項目」に該当するタブが親オブジェクトの機能になるため、単一選択オブジェクトには含めていません。

  TabFrameクラスに関するValue値参照の注意点については、
Biz-Tips > TabFrame/TabForm > TabFrame、TabFormでの選択位置参照の注意点
ご参照ください。

ComboBoxオブジェクトもComboItemの配列オブジェクトを子オブジェクトとして持ちますが、選択位置の参照方法が異なります。

  ComboBoxクラスに関する選択項目の参照については、
Biz-Tips > ComboBox> 選択項目の参照方法 をご参照ください。


FlexViewオブジェクトもFlexRecordの配列オブジェクトを子オブジェクトとして持ちますが、選択位置の参照方法が異なります。

  FlexViewクラスに関する選択位置参照の注意点については、Biz-Tips > Note! >
親子関係のあるオブジェクトでの選択位置参照の注意点(FlexView) をご参照ください。

管理番号:Pnt_001
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ