VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1057|回复: 5

为什么这个程序没有办法同时启动两个窗口呢?

[复制链接]

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-2-17 19:30:01 | 显示全部楼层 |阅读模式
UNITS CHANGEOWNER 代码如下:
program CHANGEOWNER;

uses
  Forms,
  YUANLAI in 'YUANLAI.pas' {Form1},
  HOULAI in 'HOULAI.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.Run;
end.

UNITS YUANLAI代码如下:
unit YUANLAI;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ButtonCHG: TButton;
    Button1: TButton;
    ButtonLIST: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure ButtonLISTClick(Sender: TObject);
    procedure ButtonCHGClick(Sender: TObject);
  private
    { Public declarations }
  public
    { Public declarations }
  end;      

var
  Form1: TForm1;

implementation

USES HOULAI ;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
    ShowMessage('My owner is '+((Sender as TButton).Owner as TForm).Name);
end;

procedure TForm1.ButtonLISTClick(Sender: TObject);
var i : Integer;
begin
self.ListBox1.Items.Clear;
for i:= 0 to Componentcount-1do
begin
     self.ListBox1.Items.Add(Components[i].Name);
end;
end;

procedure change(com ,newowner: TComponent);
begin
     com.Owner.RemoveComponent(com);
     newowner.InsertComponent(com);
end;

procedure TForm1.ButtonCHGClick(Sender: TObject);
begin
if Assigned(self.Button1)
  then
     self.Button1.Parent := Form2;
     change(Button1, Form2);
end;


end.

UNINTS HOULAI 代码如下:
unit HOULAI;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    ButtonLIST: TButton;
    ListBox1: TListBox;
    procedure ButtonLISTClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.ButtonLISTClick(Sender: TObject);

    var i : Integer;
begin
self.ListBox1.Items.Clear;
for i:= 0 to Componentcount-1do
begin
     self.ListBox1.Items.Add(Components[i].Name);
end;
end;

end.


谢谢 ,谢谢!
回复

使用道具 举报

0

主题

17

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-4-21 11:15:01 | 显示全部楼层
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Form2.show;
  Application.Run;
end.
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-5-1 18:15:01 | 显示全部楼层
application 创建相应的窗体后默认Show出第一个创建的窗体(主窗体),你可以像lazying 那样将Form2显示出来,也可以在主窗体显示的时候打开Form2
回复

使用道具 举报

0

主题

53

帖子

29.00

积分

新手上路

Rank: 1

积分
29.00
发表于 2020-5-2 09:30:01 | 显示全部楼层
可以,方法多的是,楼上也是方法,你也可以在form1的onshow事件里写form2.show
回复

使用道具 举报

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-9 09:00:01 | 显示全部楼层
恩  谢谢先 我是一是
回复

使用道具 举报

2

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-5-11 20:00:01 | 显示全部楼层
可以启动两个窗口了 不过还有个问题啊 我如果连续的点击那个CHANGE按钮  就会出现EXCEPTION 麻烦给我结实一下  谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表