ストリンググリッドである列は入力可能、ある列は入力不可にしたいと思っていますが、列を入力不可にする方法とかあるのでしょうか?
TStringGridのOnSelectCellやOnKeyPressイベントでなんとか出来そうな気がします。
微妙な動きなので申し訳ないですが^^;
TMyStringGrid=class(TStringGrid)
public
property InplaceEditor;
end;
を定義。
FormShowで、
StringGrid1.SetFocus; // フォーカスを移す
StringGrid1.EditorMode := True; // 編集モード開始(インプレースエディットが作成される)
StringGrid1.EditorMode := False; // 編集モード終了
Memo1.SetFocus; // 最初にフォーカスを与えるコントロールにしてください
とします。
あとは、SelectedCellで、
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
if Assigned(TMyStringGrid(StringGrid1).InplaceEditor) then
TMyStringGrid(StringGrid1).InplaceEditor.Enabled := (ACol and 1) = 1;
end;
とすれば、この場合は奇数列のみ入力を許可します。
色々ありますね。こんなのも...(奇数列のみ編集可)
※起動時には呼ばれないので初期値はプロパティで設定しておくこと。
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
with StringGrid1 do
begin
if (ACol mod 2) = 0 then
begin
Options := Options - [goEditing];
EditorMode := false;
end
else
Options := Options + [goEditing]
end;
end;
ありがとうございます。解決しました!
ツイート | ![]() |