我有这种问题。我试图改变我的主要形式。我创建了新项目并删除了主要表单,之后我使用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.
答案 0 :(得分:1)
假设您只是使用默认的方式创建表单:
这些是使用.DPR
在Application.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
可能无效。
PAS
和DFM
个文件共享密切关系。 DFM
文件描述了表单的布局及其所有组件。 PAS
提供了将链接到这些组件的字段,以便您可以编写引用它们的代码。
所以即使你的PAS
提取列出了许多组件:如果这些组件还没有在DFM
中定义,那么它们只是未实例化的类字段。
请检查您的DFM
文件实际上是否包含这些组件。