StrigGridのFixedcol&rowクリックで別フォームを出すには?

解決


みさ  2007-09-16 11:53:07  No: 27795  IP: [192.*.*.*]

StringGridのFixedColとFixedRowの部分をクリックすると、Showmodalで別のフォームが呼び出されるようにしたいです。
また、列や行によって呼び出されるフォームを変えたいです。
できるのでしょうか?
ソースの例など書いていただけると助かります!

編集    削除
ヘルプにヘルプ  2007-09-16 18:08:05  No: 27796  IP: [192.*.*.*]

>できるのでしょうか?
>ソースの例など書いていただけると...
ヘルプを見れば、それの実現に必要なメソッド、イベントは見当がつくと
思うけどネ。ヘルプを見てもココが分からんというなら、ソコを具体的に
質問してネ。

編集    削除
igy  2007-09-16 18:57:04  No: 27797  IP: [192.*.*.*]

OnMouseDownイベントで
MouseToCell メソッドを使ってクリックされたセルの列と行の位置を取得し、
FixedColとFixedRowの部分か判断する
でどうでしょう?

編集    削除
みさ  2007-09-17 03:02:41  No: 27798  IP: [192.*.*.*]

var
  Column, Row: Longint;
begin
  StringGrid1.MouseToCell(X, Y, Column, Row);
  StringGrid1.Cells[Column, Row] := 'Col ' + IntToStr(Column) +
    ',Row ' + IntToStr(Row);

ヘルプで探した上記を利用しようと思うのですが、どうもうまくいきません。

StringGrid1.cells[0,0]をクリックするとform2.showmodalのような動きをさせたいです。

編集    削除
igy  2007-09-17 03:17:02  No: 27799  IP: [192.*.*.*]

>どうもうまくいきません。

具体的には、どううまくいかないのですか?

編集    削除
みさ  2007-09-17 07:25:20  No: 27800  IP: [192.*.*.*]

var
  Column, Row: Longint;
begin
  StringGrid1.MouseToCell(X, Y, Column, Row);

if Column=0 and Row=0 then
begin
form2.showmodal:
end;
end;

などなど座標を指定して、form2が出るようにしようとしているのですが、どうも座標を指定するところから上手くいきません。

編集    削除
igy  2007-09-17 08:53:31  No: 27801  IP: [192.*.*.*]

↑のコードはStringGridのOnMouseDownイベントで実行しているのですか?

>座標を指定するところから上手くいきません。

具体的には、どのように上手くいかないのですか?
(コンパイル時にエラーが出るのですか?、実行時に例外エラーなどが発生するのですか?)

編集    削除
みさ  2007-09-17 09:48:35  No: 27802  IP: [192.*.*.*]

OnMouseDownイベントです。
エラーはif文の行で「互換性のない型です」と表示されます。

ヘルプで互換性について読んでみたのですが、このエラーはColumnの値が数字だといけないということでしょうか?

編集    削除
うんと  2007-09-17 10:07:35  No: 27803  IP: [192.*.*.*]

if (Column=0) and (Row=0) then

じゃないかな

編集    削除
みさ  2007-09-17 10:39:04  No: 27804  IP: [192.*.*.*]

動きました!
うんとさん、igyさんご親切にどうもありがとうございました。
出来の悪い初心者ですが、またご指導いただけると幸いです。

編集    削除
半人前  2007-09-18 17:18:03  No: 27805  IP: [192.*.*.*]

いわゆる「演算子の優先順位」ね

編集    削除