ドラッグ不可のピースを判定するにはどのようにしたら良いでしょうか。
2017年10月10日
説明
ドラッグ不可のピースの判定を、ドラッグアンドドロップが開始される前に判定できれば、比較的簡単なコーディングで実現することが可能です。
タイムビューのデフォルトの動作では、選択状態のピース群がドラッグデータとなります。
ポイントは、ドラッグアンドドロップが開始される前に、必ずピースが選択状態に変化する点です。
この特性を利用して、AfterPieceSelectイベントで、ドラッグ不可ピースが選択されているかどうかを判定し、OLEDragModeプロパティの値を切り替えます。
対応
(例)
Private Sub KnTView1_AfterPieceSelect()
Dim pce As KnTViewLib.Piece
‘デフォルト値として、ドラッグアンドドロップを実行されるように設定
KnTView1.OLEDragMode = tivOLEDragAutomatic
For Each pce In KnTView1.SelectedPieces
‘この例では、ドラッグ不可ピースのキャプションは”N”という値であるとしています。
If pce.Captions(1).Text = “N” Then
‘ドラッグ不可ピースが選択されているならば、
‘ドラッグアンドドロップが実行されない値を設定
KnTView1.OLEDragMode = tivOLEDragManual
Exit For
End If
Next
‘あらかじめ(設計時などに)AllowPieceMoveプロパティにFalseを設定しておきます。
‘設定しない場合、OLEDragModeにFalseを設定しただけではピースの平行移動が
‘実行されてしまいます。
End Sub
