StringGridの入力エラー時にSelectAllするには?

解決


うさこ  2003-09-05 05:06:54  No: 4636

こんにちは。
いつも参考にさせていただいております。

StringGridで入力を行うのですが、入力チェックでエラーが発生した場合に
その項目を反転選択させ、再入力を促したいのです。
EditでいうところのSelectAllなのですが、どのような設定を行う事に
なるのでしょうか?
Delphi7を使っています。

どうかご教授下さいませ。


えび  2003-09-05 09:05:58  No: 4637

1.先ずはユニット内にグリッドから継承したクラスを宣言

type
  TTmpGrid = class(TStringGrid);
  TForm1 = class(TForm)
   ・
   ・
   ・

2.上記で宣言したクラスで型チェック無しのキャストをしてプロテクトメンバーを
呼び出す

  StringGrid1.Row := 該当の行;
  StringGrid1.Col := 該当の列;
  TTmpGrid(StringGrid1).InplaceEditor.SelectAll;
  StringGrid1.SetFocus;

これでどうでしょうか?


Halbow  URL  2003-09-05 09:29:27  No: 4638

Halbow です。

InplaceEditor は単純に Controls[0] をキャストして得られます。
こんな感じです。

if StringGrid1.ControlCount > 0 then
  TInplaceEditor(StringGrid1.Controls[0]).SelectAll;

本当は is で型チェックすると完璧ですね。


うさこ  2003-09-05 23:15:10  No: 4639

ありがとう御座いました。
えびさんの方法で上手く行きました。

Halbowさん、初歩的な質問をさせて下さい。
Halbowさんのコードのグリッド名だけ変更して、実行すると
   未定義の識別子 : 'TInplaceEditor'
とエラーがでます。
初歩的なミスを犯しているのだと思うのですが、分かりません・・・
ご指摘頂けないでしょうか?


にしの  2003-09-05 23:25:07  No: 4640

TInplaceEditでどうでしょう。


Halbow  2003-09-06 04:04:29  No: 4641

Halbow です。

ごめんなさい。にしのさんのとおりです。or はいりませんね。


うさこ  2003-09-08 19:57:02  No: 4642

なるほど、上手くいきました。
ありがとう御座いました。


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

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






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