具有多个表单的交叉形式变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有多个表单的交叉形式变量相关的知识,希望对你有一定的参考价值。
我是一名在Delphi 2010工作的高中学生,目前正在从事一个项目。我在使用在一个表单上分配值的变量时遇到了一些麻烦,在另一个表单上使用“ShowModal”查看第二个表单时遇到了一些问题。
这是我在First Form上的内容(重复时只显示1个Click程序):
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.
然而,我看到在不同形式(Passing the variable to another Form)上使用变量的帖子的方法在这里无法工作,直到我弄清楚如何摆脱[DCC致命错误] frmSkill_u.pas(7):F2047循环单位引用'frmSkill_u将“frmSkill_u”添加到第二种形式的使用时出错。
我怎样才能使用这样的变量并同时显示第二种形式?
非常感谢你!
我假设你是一名南非高中生,就像我一样。 (使用德尔福和南非荷兰语。)你在Form.Create
上使用了Form.Show
而不是frm.Musiek_u;
。假设您的表单(frmMusiek_u;
)已经创建。 iLevel不会分配值,会引发错误。
我能看到的第二件事是你手动将所有单位添加到你的使用领域。这是一个很好的做法,以跟踪正在使用的单位,但对于我假设你正在做的PAT的情况,我建议去
文件 - >使用单位...
并从那里选择你的单位。
如果您的PAT仍有问题,请随时给我发电子邮件以获取帮助Marclevin.sa@gmail.com
以上是关于具有多个表单的交叉形式变量的主要内容,如果未能解决你的问题,请参考以下文章
如何重用表单(并在需要时更改其上下文)以避免多个相同的表单? C#[关闭]