ストリンググリッドで特定の列を入力不可にする方法

解決


リュウ  2004-09-30 21:25:14  No: 11222

ストリンググリッドである列は入力可能、ある列は入力不可にしたいと思っていますが、列を入力不可にする方法とかあるのでしょうか?


LupinⅢ  URL  2004-10-01 01:20:08  No: 11223

TStringGridのOnSelectCellやOnKeyPressイベントでなんとか出来そうな気がします。


にしの  2004-10-01 02:41:24  No: 11224

微妙な動きなので申し訳ないですが^^;

  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;

とすれば、この場合は奇数列のみ入力を許可します。


jam  2004-10-01 17:24:32  No: 11225

色々ありますね。こんなのも...(奇数列のみ編集可)
※起動時には呼ばれないので初期値はプロパティで設定しておくこと。

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;


リュウ  2004-10-02 07:20:19  No: 11226

ありがとうございます。解決しました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加