• ベストアンサー

C++Builderで別Formから呼び出したFormを終了させるには

C++Builderで別Formから呼び出したFormを終了させるには わかりにくくてすいませんが Form1から Form2を呼び出し そのForm2からForm1を終了させたいのですが もちろんForm2も終了されてもかまいません 又はアプリケーションごと すべて終了させてもかまいません よろしくお願いいたします

  • gotyan
  • お礼率91% (172/188)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>Form1から Show()でForm2を立ち上げて >そのForm2からClose()で >Form1ごと閉じたかったのですが閉じれなかったので >もちろん >Form1 = new TForm1(this); >Form1->Close(); >はしたのですが やり方がおかしかったのでしょうか?  インスタンスとクラスの関係を理解しましょう。 Form2のインスタンス中でそんなことやったら、Form1の今表示されているウインドウ(に関連するメモリ)は宙に浮き、新しいウインドウが作られ、それを閉じる、というようなことをやっています。  Form2にForm1を参照させて、Form1->Close();だけで閉じませんでした? #「終了」は、Closeで良かったかいな??

gotyan
質問者

お礼

おお! そういえばそうです 新しく作ってどないするのでしょうか........ (すいませんばかで..) 参照させるだけでよかったのですね(泣 ほんと助かりました ありがとうございました

その他の回答 (1)

  • gatyan
  • ベストアンサー率41% (160/385)
回答No.1

アプリケーションごと終了なら、 Application->Terminate(); でできると思いますが… Form2って終了しますメッセージの画面なんでしょうか?

gotyan
質問者

お礼

ありがとうございます Form2はふつうのFormです Form1から Show()でForm2を立ち上げて そのForm2からClose()で Form1ごと閉じたかったのですが閉じれなかったので もちろん Form1 = new TForm1(this); Form1->Close(); はしたのですが やり方がおかしかったのでしょうか? よろしくお願いいたします

関連するQ&A

  • C++Builderでハンドルを使い

    C++Builderで取得したハンドルを使いformの中を (自分で作った関数といいましょうか) 呼び出すにはどのようにしたらいいのでしょうか? わかりにくいかも知れませんがよろしくお願いいたします。

  • Basicとbuilderについて

    いま、Visual Basic6.0とC++builder5.0でプログラムを書いてるんですが、この2つのプログラムを連動することはできないのでしょうか? つまり、BasicのFormにある"command1"をクリックすると、builderのFormにある"button1"のプログラムが実行される、みたいなことです。(もしくは、その逆) basicだけ(builderだけ)で書けばいいんじゃないか、と思われるかもしれませんが、このようにしたいのです。 どうかよろしくお願いします。

  • C++Builder でPanel上にフォームを配置する方法

    C++ Builder 5.0でのプログラミングについて質問です。 プロジェクトにForm1とForm2を作成し、Form1上に TPanelコンポーネントを配置します。 このPanelコンポーネント上にForm2を配置し、Form1上にForm2が存在している状態を作る事は可能でしょうか。 可能でしたらその方法を御教授下さい。 OS Winows2000(SP2) C++ Builder5.0 professionalです。 宜しくお願いします。

  • C++ Builderについて

    以前から、C言語、C++などをやっていて、最近になって、C++Builder(Version 5.0)を使ってみようと思いました。すこしいじってみたのですが、さまざまなことを簡単にできそうな気がしました。しかしながら、正直なところ分からないことだらけです。ネット上で初心者向けの本を購入したのですが、内容は薄く、自分が目的とするものに達するには十分ではありませんでした。探し方が悪いのか、本もさほど見つかりませんでした・・・・。 また、様々なサイトも見てみたのですが、やはりC++Builderの初歩的な使い方もいまいち分かっていないせいか、わけがわかりません。一応、購入した本で勉強しているのですが・・・・。 できることなら、初歩的なことから、詳しく様々なことが分かり易く載っている本等は無いでしょうか?C言語のときは、ぶ厚い本で勉強しました。そのような本もたくさんあったように思われます。C++Builderには無いのでしょうか?それともCやC++などをみっちりやらなければ、使えないって事なのでしょうか?

  • デバッグを実行するとC++Builderが強制終了する

    次の開発環境でWindowsアプリを作成しています。  WindowsXP Professional SP2  C++Builder 3 既存のソースに対し、仕様の追加を行う予定です。 ソースの内容を理解すべくデバッグを実施すると、 C++builderが強制終了してしまいます。 以前コーディングしていた方の開発環境では、 強制終了することなくデバッグが行えます。 その方の開発環境を下記します。  WindowsXP Professional  C++Builder 3 この方曰くC++Builder上で設定等は行ってなく デフォルトのままとのこと。 以前コーディングしていた方の環境で行ったように 同じ箇所にブレークポイントを設定するも、私の 環境では強制終了となります。 対象とする行の先頭でクリックし、ブレークポイントを 設定しメニューバー「実行」→「実行」と行ってます。 メニューバー「実行」→「ステップ実行」や メニューバー「実行」→「トレース実行」を 行っても強制終了となります。 ご存じの方すいませんがよろしくお願いします。

  • Borland C++ Builderで簡単なC言語プログラムの作成・実行

    Borland C++ Builderで簡単なCのプログラムを作り実行させるにはどうしたらよいですか? DOS窓上でコンパイルするのではなく、Borland C++ Builderのメニューから行いたいのです。 一応、「ファイル→新規作成→その他→Cファイル」でCのファイルは作成できるのですが、このファイルを「プロジェクト→ユニットのコンパイル」でコンパイルすることができません。 Formオブジェクト(?)を作成しておくとコンパイルできます。 Formは特に必要ないので、FormなしでCのファイルだけをコンパイルしたいのです。 DOS窓でのコンパイル・実行はできます。 事情があってBorland C++ Builderを使わなくてはなりませんので、他のIDEはこの際全く解決になりません。 よろしくお願いします。

  • Visual C#でFormに別のクラスからアクセスするには?

    現在Visual C# 2005 Expressで簡単なアプリケーションを作成しています。Formからフォルダを指定して、別のクラス内でFormで指定されたフォルダ内のファイルに対して様々な操作をするといったものです。 そこで質問なのですが、処理するファイルが多いので進行状況をForm上のテキストボックスやステータスバーなりに表示させて意図思い、Formとは別のクラス内に、 Form frm = new Form1(); frm.TextBox1.TEXT = count + "を処理中です。"といったような記述をしても、「静的なメンバが・・・」といったエラーが出てしまいます。 入門者の自分としては、いろいろと調べてみましたが解決できずに困っています。 このような場合、どのようにするとよいのかお力をお貸しください。

  • C#でアプリの終了の仕方

    今までVC6で挫折したのですが、最近VisualStudio2005を購入しC#がC++Builderのように見えたと思いきや プログラミングが未熟で、Windowsアプリケーションの終了の仕方がわかりませんでした。 Cの場合はexit(0);で終われたのですが、C#ではどのように終了する手続きを書けば良いのでしょうか? C#でWindowsアプリの作り方が載っている本をご存知の方教えてください。

  • C++Builder

    卒業研究で昨日からC++Builderを使うようになったのですが、まったくわかりません。 「慣れれば普通にプログラム作るより簡単だ」と教官はいいいますが… それで昨日課題が出ました。 C++Builderでサイコロを作成し、クリックすれば数字が変わる用にしろ との事。 ずっとやってるのですが…ランダムに数字を表示するのってどうゆうの使うんですか? …もぅ初歩的な質問ですいません… 穴があったら入りたい…

  • C++builderにおけるwhile()の使い方

    はじめまして、当方プログラムの初心者ですのでわかりづらい質問をしていますかもしれませんがよろしくお願いします. (質問)Borland C++ Builderを使っています。現在困っている点は単純に説明します.プログラムではウィンドウ上のボタンを押したというイベントが起きるとwhile()の無限ループに入るようになっています.このままだと実行したときにフリーズしてしまうのでwhile内にApplication->ProcessMessageを入れてあります. void __fastcall TMain_Form::Button1Click(TObject *Sender) {  while(1){ Application->ProcessMessage .............. } } このようなwhile突入ボタンがひとつのときはいいのですが、複数のボタンを作って、それぞれに対応するwhileを実行したいのですが、どうしてもひとつだけ動いて他が止まってしまいます. どなたか無限ループをマルチスレッドで複数、回らせる方法を教えてください. また、なんでもかんでもProcessMessageをいれてやればWINMAINに処理が移って、マルチスレッドになると思って使っているのですが間違いでしょうか? よろしくお願いします.