プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
Delpho10 Professionalを使っています。
次にようなプログラムを作りました。
//********************
case Index of
0:begin //Form1から呼び出し
Edit1.Text := Form1.StringGrid1.Cells[1,i];
Edit2.Text := Form1.StringGrid1.Cells[2,i];
Edit3.Text := Form1.StringGrid1.Cells[3,i];
Edit4.Text := Form1.StringGrid1.Cells[4,i];
end;
1:begin //Form4から呼び出し
Edit1.Text := Form4.StringGrid3.Cells[1,i];
Edit2.Text := Form4.StringGrid3.Cells[2,i];
Edit3.Text := Form4.StringGrid3.Cells[3,i];
Edit4.Text := Form4.StringGrid3.Cells[4,i];
end;
2:begin//Form5から呼び出し
//

end;
//****************
スッキリとさせるために
x := Form1.StringGrid1;として
Edit1.Text := (x).Cells[1,i];
Edit2.Text := (x).Cells[2,i];

x := Form4.StringGrid3;として
Edit1.Text := (x).Cells[1,i];
Edit2.Text := (x).Cells[2,i];

というような書き方はできないでしょうか?

質問者からの補足コメント

  • つらい・・・

    すばやい回答ありがとうございます。

    変数の型をどうしたらいいのか...
    私にはちょっとわからないです。
    var
    x:TForm1.StringGrid1;にしてもうまくいきません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/03/14 15:38
  • うれしい

    >TForm1.StringGrid1は変数であって、型ではないと思いますが…違いますかね?

    あっ、確かにそうです。

    ありがとうございます。

    No.2の回答に寄せられた補足コメントです。 補足日時:2018/03/14 19:53
  • うーん・・・

    どうやって調べるんでしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2018/03/16 08:52
  • うーん・・・

    どこにどう書けばいいのか...

    No.4の回答に寄せられた補足コメントです。 補足日時:2018/03/16 08:53

A 回答 (5件)

>どこにどう書けばいいのか...



ハンドラの冒頭、begin の前に

var
x: TStringGrid;

とかくだけ。簡単です。


この辺は基本の基本。分かってないと他も厳しいですよ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
x: TStringGrid;の部分でエラーになり、この質問分は補足に書いたような方法で解決したのですが、別のところで同様の書き方が必要になり、いろいろ試したところ、エラーになる原因がわかりました。
このコードを書くFormはStringGridを使っておらず、usesのところにGridsを記入していませんでした。
usesにGridsを追加して
x := Form1.StringGrid1;
または
x := Form4.StringGrid3;
としたところ、エラー発生せずにコンパイルできました。

お礼日時:2018/03/24 14:53

文字列グリッドの型名は



TStringGrid

です。
この回答への補足あり
    • good
    • 0
この回答へのお礼

みなさん、お時間を取っていただきありがとうございました。
(ここでまとめてお礼させてください)

グローバル変数を使うことにしました。
(考えていた方法は私にはハードルが高いですし、今回はグローバル変数を使った方がプログラムがわかりやすそうです)
設定用Form呼び出し前に変更前データをグローバル変数にセットして、Formをクローズした後に変更後のグローバル変数の値をStringGridにセットするようにしようと思います。

お礼日時:2018/03/16 09:19

この質問文には明記されていないので, 自力で TForm1.StringGrid1 の型を調べてください.

この回答への補足あり
    • good
    • 0

>var


>x:TForm1.StringGrid1;

TForm1.StringGrid1は変数であって、型ではないと思いますが…違いますかね?
この回答への補足あり
    • good
    • 0

変数の型 (と名前) が適切であれば, 例えば


case Index of
0: x := Form1.StringGrid1;
1: x := Form4.StringGrid3;
// 以下省略
end; // case Index に対する end
Edit1.Text := x.Cells[1,i];
// など
とできるような気がします.
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!