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


エディタコントロールを描画するためのグラフィックデバイスインタフェース
ポインタ位置のX座標
ポインタ位置のY座標
矩形領域の位置とサイズ
エディタコントロールの外観設定
エディタコントロールの名前を含むオブジェクト。
エディタコントロールの表示倍率を表す数値
指定されたカーソル位置に、エディタコントロールに対する特別な意味があるかどうかを判定します。
構文
object IsReservedLocation( 
   Graphics g,
   int x,
   int y,
   Rectangle rc,
   Appearance appearance,
   object value,
   float zoomFactor
)
'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-2015, GrapeCity inc. All rights reserved.