PowerTools SPREAD for Windows Forms 10.0J
IsReservedLocation メソッド (IEditor)


エディタコントロールを描画するためのグラフィックデバイスインタフェース
ポインタ位置のX座標
ポインタ位置のY座標
矩形領域の位置とサイズ
エディタコントロールの外観設定
エディタコントロールの名前を含むオブジェクト。
エディタコントロールの表示倍率を表す数値
指定されたカーソル位置に、エディタコントロールに対する特別な意味があるかどうかを判定します。
構文
'Declaration
 
Function IsReservedLocation( _
   ByVal g As Graphics, _
   ByVal x As Integer, _
   ByVal y As Integer, _
   ByVal rc As Rectangle, _
   ByVal appearance As Appearance, _
   ByVal value As Object, _
   ByVal zoomFactor As Single _
) As Object
'使用法
 
Dim instance As IEditor
Dim g As Graphics
Dim x As Integer
Dim y As Integer
Dim rc As Rectangle
Dim appearance As Appearance
Dim value As Object
Dim zoomFactor As Single
Dim value As Object
 
value = instance.IsReservedLocation(g, x, y, rc, appearance, value, zoomFactor)

パラメータ

g
エディタコントロールを描画するためのグラフィックデバイスインタフェース
x
ポインタ位置のX座標
y
ポインタ位置のY座標
rc
矩形領域の位置とサイズ
appearance
エディタコントロールの外観設定
value
エディタコントロールの名前を含むオブジェクト。
zoomFactor
エディタコントロールの表示倍率を表す数値

戻り値の型

指定した位置が予約されているセル領域の場合は非Null、通常のセル領域の場合はNull(VisualBasicの場合はNothing)
解説

このメソッドが Null(VisualBasic では Nothing)を返す場合、指定した位置は通常のセル領域(つまり、シングルクリックでセルが選択され、ダブルクリックでセルが編集される)であることを示します。このメソッドが非 Null 値を返す場合、指定した位置は特別なセル領域(つまり、シングルクリックでセルが編集される)であることを示します。特別なセル領域の例には、コンボ ボックス型セルのドロップダウン ボタン、スライダー型セルのノブ、増分ボタン、コマンド ボタン型セルまたはチェック ボックス型セルの領域全体などが挙げられます。MouseMove イベントの間、特別な領域に表示するマウス ポインタを取得するため、IsReservedLocation から返された非 Null 値が GetReservedCursor に渡されます。これにより、複数の特別領域にそれぞれ異なるカーソルを表示することが可能になります。返される非 Null オブジェクトにはセル型が持つあらゆるものが考えられます。SPREADは Null か Null でないかのみをチェックします。セル型に特別な領域が複数ある場合は、マウスの下にある特別領域を示す整数または列挙値が返されます。セル型に特別な領域が1つしかない場合は、それ自体が非 Null オブジェクトとして返されます。

class CheckBoxCellType : BaseCellType
{
...
public override object IsReservedLocation(...)
{
return this;
}
public override Cursor GetReservedCursor(object o)
{
if (o != null)
return Cursors.Arrow;
else
return null;
}
...
}

注意:IsReservedLocation メソッドと GetReservedCursor メソッドは対で使用するメソッドで、一方の後に他方を呼び出します。

zoomFactor パラメータの限度については、シートの ZoomFactor プロパティを参照してください。

次のサンプルコードは、メソッドとイベントの使用方法を説明するため、IEditorクラスをサブクラス化し、CheckBoxをセルエディタとして使用しています。
public static CheckBox ck = new CheckBox();

class myEditor : FarPoint.Win.Spread.CellType.IEditor
{
     public event EventHandler EditingCanceled;
     public event EventHandler EditingStopped;
     public bool StopEditing()
     {
          if (EditingStopped != null)
          {
               EditingStopped(ck, EventArgs.Empty);
               base.FireEditingStopped();
               return true;
          }
          else
          {
               return false;
          }
     }

     public void CancelEditing()
     {
          EditingCanceled(ck, EventArgs.Empty);
          base.FireEditingCanceled();
     }
     
     public bool IsReservedKey(KeyEventArgs e)
     {
          return false;
     }
          
     public bool IsValid(Object value)
     {
          return true;
     }
     
     public Size GetPreferredSize(System.Windows.Forms.Control editor)
     {
          return editor.Size;
     }

     public Cursor GetReservedCursor(object o)
     {
          return null;
     }

     public Control GetEditorControl(FarPoint.Win.Spread.Appearance appr, float zoom)
     {
          return ck;
     }

     public object GetEditorValue()
     {
          return ck.CheckState;
     }

     public void SetEditorValue(object value)
     {
     }

     public object IsReservedLocation(Graphics g, int x, int y, Rectangle r, FarPoint.Win.Spread.Appearance appr, object value,
float zoom)
     {
          return null;
     }

     public void StartEditing(EventArgs e, bool selectAll)
     {
          selectAll = true;
     }

     public void ShowSubEditor()
     {
     this.ShowSubEditor();
     }
}

private void Form1_Load(object sender, System.EventArgs e)
{
     fpSpread1.ActiveSheet.Cells[0, 0].Editor = new myEditor();
}
Shared ck As New CheckBox()

Public Class myEditor
Implements FarPoint.Win.Spread.CellType.IEditor

     Public Event EditingStopped(ByVal sender As Object, ByVal e As EventArgs) Implements FarPoint.Win.Spread.CellType.IEditor.EditingStopped

     Public Event EditingCancelled(ByVal sender As Object, ByVal e As EventArgs) Implements FarPoint.Win.Spread.CellType.IEditor.EditingCanceled

     Public Function StopEditing() As Boolean Implements FarPoint.Win.Spread.CellType.IEditor.StopEditing
          RaiseEvent EditingStopped(ck, EventArgs.Empty)
          MyBase.FireEditingStopped()
          Return True
     End Function

     Public Sub CancelEditing() Implements FarPoint.Win.Spread.CellType.IEditor.CancelEditing
          RaiseEvent EditingCancelled(ck, EventArgs.Empty)
          MyBase.FireEditingCanceled()
     End Sub

     Public Function IsReservedKey(ByVal e As KeyEventArgs) As Boolean Implements FarPoint.Win.Spread.CellType.IEditor.IsReservedKey
          Return False
     End Function

     Public Function IsValid(ByVal value As Object) As Boolean Implements FarPoint.Win.Spread.CellType.IEditor.IsValid
          Return True
     End Function

     Public Function GetReservedCursor(ByVal o As Object) As Cursor Implements FarPoint.Win.Spread.CellType.IEditor.GetReservedCursor
          Return Nothing
     End Function

     Public Function GetEditorControl(ByVal appr As FarPoint.Win.Spread.Appearance, ByVal zoom As Single) As Control Implements
FarPoint.Win.Spread.CellType.IEditor.GetEditorControl
          Return ck
     End Function

     Public Function GetEditorValue() As Object Implements FarPoint.Win.Spread.CellType.IEditor.GetEditorValue
          Return ck.CheckState
     End Function

     Public Function GetPreferredSize(ByVal editor As System.Windows.Forms.Control) As Size Implements FarPoint.Win.Spread.CellType.IEditor.GetPreferredSize
          Return editor.Size
     End Function

     Public Sub SetEditorValue(ByVal value As Object) Implements FarPoint.Win.Spread.CellType.IEditor.SetEditorValue
          ck.CheckState = CheckState.Checked
     End Sub

     Public Function IsReservedLocation(ByVal g As Graphics, ByVal x As Integer, ByVal y As Integer, ByVal r As Rectangle,
ByVal appr As FarPoint.Win.Spread.Appearance, ByVal value As Object, ByVal zoom As Single) As Object Implements FarPoint.Win.Spread.CellType.IEditor.IsReservedLocation
          Return Nothing
     End Function

     Public Sub StartEditing(ByVal e As EventArgs, ByVal selectAll As Boolean) Implements FarPoint.Win.Spread.CellType.IEditor.StartEditing
               selectAll = True
     End Sub

     Public Sub ShowSubEditor() Implements FarPoint.Win.Spread.CellType.IEditor.ShowSubEditor
               Me.ShowSubEditor()
     End Sub
End Class

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     FpSpread1.ActiveSheet.Cells(0, 0).Editor = New myEditor()
End Sub
参照

IEditor インタフェース
IEditor メンバ
GetReservedCursor メソッド

 

 


© 2004-2017, GrapeCity inc. All rights reserved.