フォーム上のボタンを押したら、とある処理を行います。
この処理に必要なパラメータを別のフォームから取得して動かしたいです。
例えば、足し算を行う処理に対し、Form1のボタンを押すとForm2が起動し
Form2のエディットに式を代入し、OKボタンを押すと、処理を行うといった感じです。Form2にOKボタンの足し算の処理を書いてもいいのですが、引き算を行う場合も想定して、あくまでForm1で足し算の処理を書き、その処理をForm2からのパラメータの入力を待って処理を行うといった動作を行いたいのです。
知恵をかしてください。
uses
Unit2;
procedure TForm1.Button1Click(Sender
var
frm2: TForm2;
begin
frm2 := TForm2.Create(Self);
if frm2.ShowModal = mrOK then begin
//なんか汁
end;
frm2.Free;
//やっぱりfrm2.Release; ですかw
end;
気持ちはくみ取れ(命令形(ぁ
書いていただいたコードを参考にしてみましたが、うまくいきません。
Form2のクリエイトするときの、Selfが未定義の識別しのエラーがでてしまいます。なのでうまくいくのかわかりません。もう少し調べてがんばります
とりいそぎ、お礼と報告まで。
Self は自分自身
Access(VBA?)をご存知であれば、「Me」みたいなものです。
> procedure TForm1.Button1Click(Sender
これで言うと、「TForm1」をですね。
普通の関数
procedure Hogehoge〜〜
では、Selfを使用できません。
補足
こういう使い方もできます。
procedure Hogehoge:Boolean;
var
frm2: TForm2;
begin
frm2 := TForm2.Create(nil);
//または
//frm2 := TForm2.Create(Application.Mainform);
try
Result := frm2.ShowModal = mrOK;
finally
frm2.Free;
end;
end;
ん?さん ありがとうございます
なにぶん、理解が追いつかないもので。。ShowModalのことがやっとわかって書いていただいた意味がなんとなくわかるようになったレベルです。
Form2をモードつきフォームとして、表示させて、Form2に配置したボタンにクリックイベントに必要な情報を取り込む処理を書き、ModalResultをmrOKとして、モード付きフォームを閉じてやり、Form2を開放してやる。
といった感じでよろしいでしょうか?
Selfの意味はなんとなくわかったような気がしますが、まだ。。理解していないかな。。
ちなみにん?さんのコードのようにForm2.Create(nil)とするとエラーはでませんでした。が、Form2のオブジエクトにアクセスができない??状態です。
Form2.Create(nil)の後にForm2.Label1.Caption :='test';とするとエラーになってしまいます。
やりたいことは、画像を読み込み、その画像を2値化処理を行うとして
2値化処理を行う前に、Form2にヒストグラムを表示させてやり、そのヒストグラムを見ながら2値処理の閾値を決定してやりたいといった感じです。
> Form2をモードつきフォームとして、表示させて、(略) Form2を開放してやる。
そういった感じです。
> Form2のオブジエクトにアクセスができない??
Form2.Create(nil)
と
TForm2.Create(nil)
は違うよ。
var
//変数 form2 の 型は TForm2
form2 :TForm2;
begin
//form2は、TForm2という型を準備して、使える準備をしている
form2 := TForm2.Create(nil);
//コレなら、エラーにならないでしょう?
form2.Label1.Caption :='test';
integer や String と違い、宣言しただけでは、通常使うことができないのがクラスです。
やりたいことはともかく、他の質問は、別スレをたててください。
画像処理には疎いので、お答えできませんm(v_v)m
素人っぽさ炸裂なんですけど、かなり厳選したものを
載せてます。ミクシィはもう有名になりすぎてるけど。
http://ww21.kir.jp/rrs/sgm/
ん?さんありがとうございます。
教えていただいたとおりするとうまくいきました。
やりたいことを書いたのは、私の質問がうまく伝わっているかどうか自信がなく、少しでもやりたいことの具体例を書いたほうがよいかと思ったからです。(^^; 困惑させまして申し訳ありません。
解決するの忘れてました
ツイート | ![]() |