TStringGridで内容を変更するには・・・

解決


smily  2007-11-22 00:57:31  No: 28615

はじめまして。
いつも拝見させていただいております。

Delphiをやり始めて2ヶ月の初心者です。
初歩的な質問かと思いますが、ご教授いただきたく、投稿しました。
よろしくお願い致します。

環境はDelphi7、WindowsXPです。

内容は、TStringGridの1列目に関してなのですが、
ここに入れる項目は、設定不要・設定する・設定しない、のどれかが必ず入るようになっています。
設定不要と書いてある場合は、編集不可。
設定する・設定しないと書いてある場合は、編集可能で、
かつ、そのセルをダブルクリックするたびに、
設定する・設定しないが、交互に入れ替わるようにしたいです。

resourcestring
  NOT_PRT_WORD = '設定しない';
  PRT_WORD = '設定する';
  NOT_WORD = '設定不要';

procedure TForm1.TStringGrid1DblClick(Sender: TObject);
begin
  with TStringGrid1 do begin
    if Col = 1 then begin
      if TStringGrid1.Cells[1,Row] := NOT_WORD then begin
        TStringGrid1.Options := TStringGrid1.Options - [goEditing];
      end else begin
        PRT_WORD := not PRT_WORD;  //ここでエラーが出ます
        NOT_PRT_WORD := not NOT_PRT_WORD;  //ここもエラーが出ます
      end;
    end;
  end;
end;

どなたか、方法をご存知の方がいらっしゃいましたら、
ご教授いただけないでしょうか?
よろしくお願い致します。


KHE0221  2007-11-22 01:39:04  No: 28616

切り替え自体は下記のようにすれば出来ますが、

var
    ACol,ARow : Integer;
    Text : String;
begin
   ACol := StringGrid1.Col;
   ARow := StringGrid1.Row;
   Text := StringGrid1.Cells[ACol,ARow];
   if Text = '設定する' then
   begin
     StringGrid1.Cells[ACol,ARow] := '設定しない';
   end;
   if Text = '設定しない' then 
   begin
     StringGrid1.Cells[ACol,ARow] := '設定する'; 
   end;
end;

編集可能と言うのは 設定する、設定しない を表示している場所
を編集可能にすると言う事ですか?

オプションの [goEditing] は全体に対してなので部分制御は出来ません

編集可能だとして 何かしら編集し、3つの言葉以外が入れられた場合に
ダブルクリックした場合にはどうするのでしょうか?


smily  2007-11-22 01:55:18  No: 28617

ありがとうございました。
今、Grid内の細かな処理に四苦八苦しているので、
またよろしくお願い致します。

>編集可能と言うのは 設定する、設定しない を表示している場所
>を編集可能にすると言う事ですか?

こちらについては、ダブルクリックで表示内容を切り替えるに当たって、
編集を可能にする必要があると思い込んでいました。
余計な文面で分かりにくくなってしまい、申し訳ございません。


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

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






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