MDI親フォームにMDI子フォームを表示するにはどうすればいいでしょうか。
Delphi 6 Personal
お願いします。
MDIのアプリを作成したいということでしょうか.
(1)新規プロジェクトを作成.FormはForm1となっている
(2)Form1のFormStyleプロパティをfsMDIFormに
(3)[ファイル][新規作成]で[フォーム].Form2となっているハズ
(4)Form2のFormStyleプロパティをfsMDIChildにする
これで実行してみて下さい.
ということなのかな.外していたらゴメン!!
新規作成ボタンをクリックする。
↓
新しいタブが自動で作成される(タブ式MDI風に)
↓
新しい子フォームを表示する。
という風にタブ式MDIにしたいのです。
説明不足でごめんなさい。
http://delphi.sakura.vg/index2.html
ここのタブブラウザ編が参考になるかもしれません。
このページは見ましたが、今一説明がわかりません。
わがままみたいですいません。
Mr.XRAYさんが書いた、
>(1)新規プロジェクトを作成.FormはForm1となっている
>(2)Form1のFormStyleプロパティをfsMDIFormに
>(3)[ファイル][新規作成]で[フォーム].Form2となっているハズ
>(4)Form2のFormStyleプロパティをfsMDIChildにする
をしてから、TabControlを貼り付けて、
新規作成ボタンのイベントに
var
form :TForm2;
begin
form := TForm2.Create(Application);
TabControl1.Tabs.AddObject('新規タブ', TObject(form));
end;
でできるはずです。
やりましたが、エラーが出ました。
(ソースコード)
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, ExtCtrls, ComCtrls;
(中略)
form : Form3; //ここで、[エラー] Unit2.pas(54): 未定義の識別子 : 'Form3'が発生
implementation
uses Unit1, Unit3;
{$R *.dfm}
(中略)
procedure TForm2.SpeedButton3Click(Sender: TObject);
var
form :Form3;
begin
form := Form3.Create(Application); //ここで演算子またはセミコロン (';') が必要ですと表示される
Form1.TabControl1.Tabs.AddObject('無題', TObject(form));
end;
(エラー内容)
[エラー] Unit2.pas(54): 未定義の識別子 : 'Form3'
[エラー] Unit2.pas(133): 演算子またはセミコロン (';') が必要です
[致命的エラー] Project1.dpr(7): 'Unit2.pas' ユニットはコンパイルできませんでした
ちなみに、Delphi 6 Personalです。
>form : Form3; //ここで、[エラー] Unit2.pas(54): 未定義の識別子 : 'Form3'が発生
form : TForm3;
じゃないですか?
>procedure TForm2.SpeedButton3Click(Sender: TObject);
>var
>form :Form3;
>begin
>form := Form3.Create(Application); //ここで演算子またはセミコロン (';') が必要ですと表示される
>Form1.TabControl1.Tabs.AddObject('無題', TObject(form));
>end;
これも
var
form :TForm3;
begin
form := TForm3.Create(Application);
じゃないですか?
TForm3にしても同じエラーが表示されます。
Unit2なので、TForm2・・・なんて事は無いですか?
TForm3を使いたいなら、上の方のusesにUnit3を追加するのかな。
モジュールエラーが発生しました。
技術的な面での問題ではないですよね。自身でデバッグされたほうがよろしいのでは・・・?
どのクラス、どのユニットを使用すべきかなんて、こちらでは判断できませんし。
わがまま言ってすいませんでした。
ありがとうございました。
ちょっと気になったので...
新規にフォームを作成した時に,例えば以下の様になっているバズです.
unit Unit2; //(1)保存するユニット名
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm2 = class(TForm)
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form2: TForm2; //(2)フォームの名前
implementation
{$R *.DFM}
end.
上の(1)(2)をコード上で書換えていませんか?
もちろん書換える方法もありますが,最初の内は,
(1)の部分 -- Unit2のタブを選択して[ファイル][名前を付けて保存]
(2)の部分 -- フォームを選択して,オブジェクトインスペクタでNameプロパティを変更する
で変更した方が無難です.最初の内は,理屈よりも,とにかく約束ごと
にしたがってやってみることです.いろいろな技はそれからでも遅く
ありません.あせらないことです.
ツイート | ![]() |