德尔福改变主要形式

时间:2014-05-11 13:57:39

标签: delphi

我有这种问题。我试图改变我的主要形式。我创建了新项目并删除了主要表单,之后我使用Project - >将表单添加到项目中。添加到项目。然后它会自动更改项目设置,并使用添加的表单。但是,如果我运行这个应用程序,它显示空表单,即使它不是我添加到项目中的空表单。

program LimitMac;

uses
FMX.Forms,
MacLimiter in 'MacLimiter.pas' {FormLimiter};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TFormLimiter, FormLimiter);
Application.Run;
end.

并且MacLimiter(TFormLimiter)是我在项目中添加的旧表单,但它显示为空表单。

MacLimiter单元这是MacLimiter单元的一部分,它表明它不是空的形式:

unit MacLimiter;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 
  FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
  FMX.Edit, FMX.Layouts, FMX.ListBox;

type
  TFormLimiter = class(TForm)
  StyleBook1: TStyleBook;
  Brush1: TBrushObject;
  Label1: TLabel;
  Label2: TLabel;
  EditTunnus: TEdit;
  EditSalasana: TEdit;
  ImageControl1: TImageControl;
  ImageControl2: TImageControl;
ListBox1: TListBox;
Label3: TLabel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
RadioButton7: TRadioButton;
RadioButton8: TRadioButton;
RadioButton9: TRadioButton;
ProgressBar1: TProgressBar;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label9: TLabel;
Label10: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
ListBox2: TListBox;
RadioButton4: TRadioButton;
RadioButton10: TRadioButton;
Label8: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure EditSalasanaTyping(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RadioButton1Change(Sender: TObject);
procedure RadioButton2Change(Sender: TObject);
procedure RadioButton3Change(Sender: TObject);
procedure RadioButton9Change(Sender: TObject);
procedure RadioButton5Change(Sender: TObject);
procedure RadioButton6Change(Sender: TObject);
procedure RadioButton7Change(Sender: TObject);
procedure RadioButton8Change(Sender: TObject);
private
  { Private declarations }
public
  { Public declarations }
end;

var
  FormLimiter: TFormLimiter;
var Index: Integer;
implementation

{$R *.fmx}

procedure TFormLimiter.Button1Click(Sender: TObject);
begin
    Application.Terminate;
end;

procedure TFormLimiter.Button3Click(Sender: TObject);
var i: Integer;
begin
   ProgressBar1.Value := 0;
   ProgressBar1.Max := 100;
   Button1.Enabled := false;

   for i := 0 to 100 do
   begin
     ProgressBar1.Value := i;
     Sleep(200);

     Application.ProcessMessages;
 end;
 Label9.Visible := true;
 Label10.Visible := true;
 Button3.Visible := true;
end;

procedure TFormLimiter.EditSalasanaTyping(Sender: TObject);
begin
  if(EditTunnus.Text <> '') then begin
   if(index > 0) then begin
     Button2.Enabled := true;
   end;
  end;
end;

procedure TFormLimiter.FormShow(Sender: TObject);
begin
   index := 0;
end;

procedure TFormLimiter.RadioButton1Change(Sender: TObject);
begin
   index := 1;
   if(EditTunnus.Text <> '') then begin
     if(EditSalasana.Text <> '') then begin
       Button2.Enabled := true;
     end;
   end;
end;

procedure TFormLimiter.RadioButton2Change(Sender: TObject);
begin
   index := 2;
   if(EditTunnus.Text <> '') then begin
     if(EditSalasana.Text <> '') then begin
       Button2.Enabled := true;
     end;
   end;
end;

procedure TFormLimiter.RadioButton3Change(Sender: TObject);
begin
   index := 3;
   if(EditTunnus.Text <> '') then begin
     if(EditSalasana.Text <> '') then begin
       Button2.Enabled := true;
     end;
   end;
end;

procedure TFormLimiter.RadioButton5Change(Sender: TObject);
begin
   index := 5;
   if(EditTunnus.Text <> '') then begin
     if(EditSalasana.Text <> '') then begin
       Button2.Enabled := true;
     end;
   end;
end;

procedure TFormLimiter.RadioButton6Change(Sender: TObject);
begin
   index := 6;
   if(EditTunnus.Text <> '') then begin
     if(EditSalasana.Text <> '') then begin
       Button2.Enabled := true;
     end;
 end;
end;

procedure TFormLimiter.RadioButton7Change(Sender: TObject); 
begin
   index := 7;
   if(EditTunnus.Text <> '') then begin
     if(EditSalasana.Text <> '') then begin
       Button2.Enabled := true;
     end;
   end;
end;

procedure TFormLimiter.RadioButton8Change(Sender: TObject);
begin
   index := 8;
   if(EditTunnus.Text <> '') then begin
     if(EditSalasana.Text <> '') then begin
       Button2.Enabled := true;
     end;
    end;
end;

procedure TFormLimiter.RadioButton9Change(Sender: TObject); 
begin
   index := 9;
   if(EditTunnus.Text <> '') then begin
     if(EditSalasana.Text <> '') then begin
       Button2.Enabled := true;
     end;
   end;
 end;

end.

1 个答案:

答案 0 :(得分:1)

假设您只是使用默认的方式创建表单:

这些是使用.DPRApplication.CreateForm()文件底部创建的。 Delphi会将以这种方式创建的第一个表单视为“主要表单”。如果您的预期主表格不是第一个,只需移动该行即可。

如果您仍遇到问题,请edit your question并在.DPR之间添加内容:

begin
  //
end.

编辑根据您的修改,上述内容不适用于您,但我会将其留给其他遇到类似问题的人。

我怀疑您的“正确”MacLimiter表单位于不同的文件夹中。您的.DPR正在使用与.DPR位于同一文件夹中的旧文件(基于以下行):

MacLimiter in 'MacLimiter.pas' {FormLimiter};

您真正需要做的就是更正上一行中的路径引用。 E.g:

MacLimiter in '..\CorrectFolder\MacLimiter.pas' {FormLimiter};

但是,我知道你也回过头来从文件系统中删除不正确的.PAS.DFM文件。


编辑2 由于David suggests DFM可能无效。

PASDFM个文件共享密切关系。 DFM文件描述了表单的布局及其所有组件。 PAS提供了将链接到这些组件的字段,以便您可以编写引用它们的代码。

所以即使你的PAS提取列出了许多组件:如果这些组件还没有在DFM中定义,那么它们只是未实例化的类字段。

请检查您的DFM文件实际上是否包含这些组件。