具有多种形式的交叉形式变量
Cross-form variable with Multiple forms
我是一名在 Delphi 2010 年工作的高中生,目前正在从事一个项目。我在使用一个变量在一种形式上赋值时遇到了一些麻烦,在另一种形式上使用 "ShowModal" 查看第二种形式。
这是我在第一个表格上的内容(重复时只显示 1 个点击过程):
unit frmSkill_u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, jpeg, dmMusiektukke_u, DBGrids, PAT, frmMusiek_u ;
type
TfrmSkill = class(TForm)
Panel1: TPanel;
pnlBegin: TPanel;
bitbtnMain: TBitBtn;
pnlEasy: TPanel;
pnlInter: TPanel;
pnlAdv: TPanel;
Image1: TImage;
Label1: TLabel;
procedure bitbtnMainClick(Sender: TObject);
procedure pnlBeginClick(Sender: TObject);
procedure pnlEasyClick(Sender: TObject);
procedure pnlInterClick(Sender: TObject);
procedure pnlAdvClick(Sender: TObject);
private
{ Private declarations }
public
iLevel : integer ;
{ Public declarations }
end;
var
frmSkill: TfrmSkill;
implementation
{$R *.dfm}
procedure TfrmSkill.bitbtnMainClick(Sender: TObject);
begin
frmInstru.Visible := True ;
end;
procedure TfrmSkill.pnlBeginClick(Sender: TObject);
begin
iLevel := 0 ;
frmMusic.ShowModal ;
end;
将单击一个按钮以指定该人可以演奏乐器的级别(初学者级别 = 0),然后第二个表单将显示在 Case 语句中使用 iLevel 变量根据哪个级别过滤数据库被选中的人。
第二种形式:
unit frmMusiek_u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dmMusiektukke_u, Grids, DBGrids, StdCtrls, Buttons, frmSkill_u;
type
TfrmMusic = class(TForm)
dbgMusiekstukke: TDBGrid;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMusic: TfrmMusic;
implementation
{$R *.dfm}
procedure TfrmMusic.FormCreate(Sender: TObject);
begin
case frmSkill.iLevel of
0:
begin
with dmMusiekstukke do
begin
tblMusiekstukke.Filter := 'Difficulty = ''Beginner''' ;
tblMusiekstukke.Filtered := True;
end;
end;
end;
end;
end.
但是,在我弄清楚如何摆脱 [DCC 致命错误]frmSkill_u.pas(7):F2047 循环单元参考 'frmSkill_u' 将 "frmSkill_u" 添加到第二种形式的使用时出错。
我如何仍然使用这样的变量并同时显示第二种形式?
非常感谢!
我假设你和我一样是一名南非高中生。 (使用 Delphi 和南非荷兰语。)
您在 frm.Musiek_u;
上使用 Form.Create
而不是 Form.Show
。假设您的表单 (frmMusiek_u;
) 已经创建。 iLevel 不会被赋值并且会抛出一个错误。
我看到的第二件事是您已经手动将所有单位添加到您的使用字段中。这是跟踪正在使用的单位的好习惯,但对于我假设你正在做的 PAT,我建议去
File -> Use Unit...
然后从那里选择你的单位。
我是一名在 Delphi 2010 年工作的高中生,目前正在从事一个项目。我在使用一个变量在一种形式上赋值时遇到了一些麻烦,在另一种形式上使用 "ShowModal" 查看第二种形式。
这是我在第一个表格上的内容(重复时只显示 1 个点击过程):
unit frmSkill_u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, jpeg, dmMusiektukke_u, DBGrids, PAT, frmMusiek_u ;
type
TfrmSkill = class(TForm)
Panel1: TPanel;
pnlBegin: TPanel;
bitbtnMain: TBitBtn;
pnlEasy: TPanel;
pnlInter: TPanel;
pnlAdv: TPanel;
Image1: TImage;
Label1: TLabel;
procedure bitbtnMainClick(Sender: TObject);
procedure pnlBeginClick(Sender: TObject);
procedure pnlEasyClick(Sender: TObject);
procedure pnlInterClick(Sender: TObject);
procedure pnlAdvClick(Sender: TObject);
private
{ Private declarations }
public
iLevel : integer ;
{ Public declarations }
end;
var
frmSkill: TfrmSkill;
implementation
{$R *.dfm}
procedure TfrmSkill.bitbtnMainClick(Sender: TObject);
begin
frmInstru.Visible := True ;
end;
procedure TfrmSkill.pnlBeginClick(Sender: TObject);
begin
iLevel := 0 ;
frmMusic.ShowModal ;
end;
将单击一个按钮以指定该人可以演奏乐器的级别(初学者级别 = 0),然后第二个表单将显示在 Case 语句中使用 iLevel 变量根据哪个级别过滤数据库被选中的人。
第二种形式:
unit frmMusiek_u;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dmMusiektukke_u, Grids, DBGrids, StdCtrls, Buttons, frmSkill_u;
type
TfrmMusic = class(TForm)
dbgMusiekstukke: TDBGrid;
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMusic: TfrmMusic;
implementation
{$R *.dfm}
procedure TfrmMusic.FormCreate(Sender: TObject);
begin
case frmSkill.iLevel of
0:
begin
with dmMusiekstukke do
begin
tblMusiekstukke.Filter := 'Difficulty = ''Beginner''' ;
tblMusiekstukke.Filtered := True;
end;
end;
end;
end;
end.
但是,在我弄清楚如何摆脱 [DCC 致命错误]frmSkill_u.pas(7):F2047 循环单元参考 'frmSkill_u' 将 "frmSkill_u" 添加到第二种形式的使用时出错。
我如何仍然使用这样的变量并同时显示第二种形式?
非常感谢!
我假设你和我一样是一名南非高中生。 (使用 Delphi 和南非荷兰语。)
您在 frm.Musiek_u;
上使用 Form.Create
而不是 Form.Show
。假设您的表单 (frmMusiek_u;
) 已经创建。 iLevel 不会被赋值并且会抛出一个错误。
我看到的第二件事是您已经手动将所有单位添加到您的使用字段中。这是跟踪正在使用的单位的好习惯,但对于我假设你正在做的 PAT,我建议去
File -> Use Unit...
然后从那里选择你的单位。