MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > 編集、検証、選択、フォーカス > 編集 > セルのロック |
ユーザーが編集できないように、セルまたはセル範囲をロックできます。
セルをロックするには、Cell、Column、Row、または AlternatingRowクラスのLockedプロパティを使用します。 また、SheetViewクラスのProtectプロパティを設定する必要があります。 Lockedプロパティはセルがロック対象であることを示し、Protectプロパティは、これらのセルを実際にロックするかどうかを設定します。 ユーザー入力を拒否するようにロック対象としてマークされたセルに対しては、シートのProtectプロパティをTrue に設定する必要があります。 このプロパティが False に設定されていると、ロック対象としてマークされている場合でも、ユーザーはこのセルの操作が可能になります。なお、デフォルトではLockedプロパティはTrueになっていますので、ProtectプロパティをTrueに変更するとすべてのセルがロックされた状態になります。一部のセルのみロックする場合には、それ以外のセル範囲のロックを解除する必要があります。
セルをロックするもう1つの方法は、TextCellTypeクラスを使用してセルをテキスト型に設定し、ReadOnlyプロパティを設定することです。 これで、このセルは編集できなくなります。
|
セルをロックしても、このセル上に表示されているシェイプ(フローティング オブジェクト)はロックされません。 シートの保護は、このシート内でロック対象としてマークされたすべてのセルがロックされることを意味するだけであり、このシート上のシェイプには適用されません。 シェイプのロックについては、「シェイプ」を参照してください。
セルをロックするにはCellクラスの、行はRowクラスの、列はColumnクラスのLockedプロパティを使用します。ロックした各セルをユーザーが入力できないようにするには、SheetViewクラスのProtectプロパティをTrueに設定する必要があります。
次のサンプルコードは、シートのProtectプロパティがTrueに設定された状態で、セル範囲を指定してロックを解除します。
C# |
コードのコピー
|
---|---|
fpSpread1.ActiveSheet.Protect = true; //行列ヘッダのロック表示解除 fpSpread1.ActiveSheet.ColumnHeader.Rows[0].Locked = false; fpSpread1.ActiveSheet.RowHeader.Columns[0].Locked = false; //セルB2からセルC2のロックを解除 FarPoint.Win.Spread.Cell cellobj; cellobj = fpSpread1.ActiveSheet.Cells[1, 1, 1, 2]; cellobj.Locked = false; //4行目以降のロックを全て解除 fpSpread1.ActiveSheet.Rows[3, fpSpread1.ActiveSheet.RowCount - 1].Locked = false; |
Visual Basic |
コードのコピー
|
---|---|
fpSpread1.ActiveSheet.Protect = True '行列ヘッダのロック表示解除 fpSpread1.ActiveSheet.ColumnHeader.Rows(0).Locked = False fpSpread1.ActiveSheet.RowHeader.Columns(0).Locked = False 'セルB2からセルC2のロックを解除 Dim cellobj As FarPoint.Win.Spread.Cell cellobj = fpSpread1.ActiveSheet.Cells(1, 1, 1, 2) cellobj.Locked = False '4行目以降のロックを全て解除 fpSpread1.ActiveSheet.Rows(3, fpSpread1.ActiveSheet.RowCount - 1).Locked = False |
新しいスタイルシステムでは、次の方法でセルのロックをまとめて解除することが可能です。
C# |
コードのコピー
|
---|---|
var normalStyle = fpSpread1.AsWorkbook().Styles[GrapeCity.Spreadsheet.BuiltInStyle.Normal]; normalStyle.Locked = false; |
Visual Basic |
コードのコピー
|
---|---|
Dim normalStyle = fpSpread1.AsWorkbook().Styles(GrapeCity.Spreadsheet.BuiltInStyle.Normal) normalStyle.Locked = False |