StringGridの編集モードについて

解決


ちゃんぽん  2015-09-03 19:37:51  No: 47599

こんにちは。
先日はお世話になりありがとうございました。
Windows XP
Delphi 7  で開発しています。

StringGridを利用してOracleデータテーブルにある特定のフィールドを
編集しようと思っています。
StringGridに表示をすることはできたのですが
特定のフィールドだけ編集できるようにできるのでしょうか。
現在は goEditingプロパティがFalseになっているため、全フィールドが
編集できません。逆にgoEditingプロパティをTrueにすると
全フィールドが編集可能になってしまします。

よろしくお願いいたします。


deldel  2015-09-03 20:18:46  No: 47600

下記例では0〜2列のみ編集可能です。

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  case ACol of
  0..2: StringGrid1.Options := StringGrid1.Options + [goEditing];
  else  StringGrid1.Options := StringGrid1.Options - [goEditing];
  end;
end;


ちゃんぽん  2015-09-03 20:19:59  No: 47601

皆様、お騒がせしました。
特定の列の編集が以下の内容で出来ました。

【SelectCellイベント】
 //3列目(金額)を編集可能にして、それ以外を編集不可にする
  if ACol = 2 then
    StringGrid1.Options := StringGrid1.Options + [goEditing]
  else
    StringGrid1.Options := StringGrid1.Options - [goEditing];

ここでもう一つご質問ですが
この編集可能な列は数字のみしか入力できないようになりますか?


ちゃんぽん  2015-09-03 20:21:42  No: 47602

deldelさん、すれ違いでした。
書き込み中にご回答いただいたようです。
ありがとうございます。

ここでもう一つご質問ですが
この編集可能な列は数字のみしか入力できないようになりますか?


Mr.XRAY  2015-09-03 22:06:54  No: 47603

>この編集可能な列は数字のみしか入力できないようになりますか?

できるか,可能かというのであれば,できます.

(1) 可能なことが分かったので,ネット検索してみる
(2) 自分でテストコードを書いて実行してみる
(3) エラー等が発生したり,期待した動作がしない場合,
    具体的なコードを示して,この掲示板で訊いてみる

と言った手順になると思います.


deldel  2015-09-03 22:07:00  No: 47604

色々やり方はあると思いますが、以下はどうでしょうか?
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', Char(VK_BACK), Char(VK_RETURN)]) then Key := #0;
end;


通りすがり  2015-09-03 22:09:03  No: 47605

StringGridの入力時にはInplaceEditorと呼ばれる必要なときだけ表示されるEditが使われている

Delphi 7ではInplaceEditorには直接アクセスできないが、方法はある(→Delphi StringGrid InplaceEditorで検索)

TEditで入力文字を制限するにはOnKeyPressイベントで不要な文字を#0で潰せばいい


ちゃんぽん  2015-09-03 23:33:15  No: 47606

Mr.XRAYさん、deldelさん、通りすがりさん、ご回答ありがとうございます。
deldelさんのコードで一発で出来てしまいました。
楽をしてしまいました。
後が怖いな〜。
もっと努力しなくては・・・


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

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






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