Я учусь в старшей школе, работаю с 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;
Будет нажата кнопка, чтобы определить, на каком уровне человек может играть на инструменте.on (Beginner level = 0), а затем вторая форма будет отображаться с использованием переменной iLevel в операторе Case для фильтрации базы данных по тому уровню, который выбрал человек.
Вторая форма:
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 Fatal Error] frmSkill_u.pas (7): F2047 Ссылка на круговую единицу для 'frmSkill_u' ошибка при добавлении "frmSkill_u" к использованию второй формы.
Как мне все еще использовать такую переменную и одновременно показывать вторую форму?
Большое спасибо!