パラメータの入力待ち

解決


しゃのん  2006-08-27 06:24:57  No: 23004

フォーム上のボタンを押したら、とある処理を行います。
この処理に必要なパラメータを別のフォームから取得して動かしたいです。
例えば、足し算を行う処理に対し、Form1のボタンを押すとForm2が起動し
Form2のエディットに式を代入し、OKボタンを押すと、処理を行うといった感じです。Form2にOKボタンの足し算の処理を書いてもいいのですが、引き算を行う場合も想定して、あくまでForm1で足し算の処理を書き、その処理をForm2からのパラメータの入力を待って処理を行うといった動作を行いたいのです。
知恵をかしてください。


???  2006-08-27 07:19:26  No: 23005

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;

気持ちはくみ取れ(命令形(ぁ


しゃ  2006-08-27 09:13:14  No: 23006

書いていただいたコードを参考にしてみましたが、うまくいきません。
Form2のクリエイトするときの、Selfが未定義の識別しのエラーがでてしまいます。なのでうまくいくのかわかりません。もう少し調べてがんばります
とりいそぎ、お礼と報告まで。


ん?  2006-08-28 17:21:15  No: 23007

Self は自分自身
Access(VBA?)をご存知であれば、「Me」みたいなものです。

> procedure TForm1.Button1Click(Sender
これで言うと、「TForm1」をですね。

普通の関数
procedure Hogehoge〜〜
では、Selfを使用できません。


ん?  2006-08-28 17:24:41  No: 23008

補足

こういう使い方もできます。

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;


しゃのん  2006-08-29 06:29:04  No: 23009

ん?さん  ありがとうございます
なにぶん、理解が追いつかないもので。。ShowModalのことがやっとわかって書いていただいた意味がなんとなくわかるようになったレベルです。
  Form2をモードつきフォームとして、表示させて、Form2に配置したボタンにクリックイベントに必要な情報を取り込む処理を書き、ModalResultをmrOKとして、モード付きフォームを閉じてやり、Form2を開放してやる。
といった感じでよろしいでしょうか?
  Selfの意味はなんとなくわかったような気がしますが、まだ。。理解していないかな。。
ちなみにん?さんのコードのようにForm2.Create(nil)とするとエラーはでませんでした。が、Form2のオブジエクトにアクセスができない??状態です。
Form2.Create(nil)の後にForm2.Label1.Caption :='test';とするとエラーになってしまいます。
  やりたいことは、画像を読み込み、その画像を2値化処理を行うとして
2値化処理を行う前に、Form2にヒストグラムを表示させてやり、そのヒストグラムを見ながら2値処理の閾値を決定してやりたいといった感じです。


ん?  2006-08-29 07:18:18  No: 23010

>   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


プレコ  URL  2006-08-29 08:26:02  No: 23011

素人っぽさ炸裂なんですけど、かなり厳選したものを
載せてます。ミクシィはもう有名になりすぎてるけど。
http://ww21.kir.jp/rrs/sgm/


しゃのん  2006-08-30 01:18:18  No: 23012

ん?さんありがとうございます。
教えていただいたとおりするとうまくいきました。
やりたいことを書いたのは、私の質問がうまく伝わっているかどうか自信がなく、少しでもやりたいことの具体例を書いたほうがよいかと思ったからです。(^^;  困惑させまして申し訳ありません。


しゃのん  2006-08-30 01:19:01  No: 23013

解決するの忘れてました


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

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






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