A1G*_*ard 1 delphi variables public delphi-xe3
我之前声明了许多公共变量,但在Delphi-XE3中是第一个.
我声明公共var好,但不能在其他表格上使用它,但我不知道为什么?
我的主要联合代码:
unit uMian;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls;
type
TForm1 = class(TForm)
btnLoad: TButton;
btnShow: TButton;
btnEaxit: TButton;
lvStudent: TListView;
btnAdd: TButton;
procedure btnEaxitClick(Sender: TObject);
procedure btnLoadClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnAddClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
var
IsOpen : Boolean ;
public
{ Public declarations }
var
myvar : Integer ;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses uAdd;
function AppDir () : string ;
begin
Result := ExtractFilePath(Application.ExeName);
end;
procedure TForm1.btnAddClick(Sender: TObject);
begin
if IsOpen then
frmAdd.ShowModal ;
end;
procedure TForm1.btnEaxitClick(Sender: TObject);
begin
close;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if IsOpen then
//CloseFile(DataFile);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
IsOpen := False ;
end;
....
end.
Run Code Online (Sandbox Code Playgroud)
这是没有问题的工作.
但当我在其他形式使用FrmAdd我有问题:
unit uAdd;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons,
Vcl.Samples.Spin, Vcl.ExtCtrls;
type
TfrmAdd = class(TForm)
lbledtName: TLabeledEdit;
lbledtAvg: TLabeledEdit;
seAge: TSpinEdit;
lbleId: TLabeledEdit;
btnCansek: TBitBtn;
btnAdd: TBitBtn;
procedure btnAddClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmAdd: TfrmAdd;
implementation
{$R *.dfm}
uses uMian;
procedure TfrmAdd.btnAddClick(Sender: TObject);
begin
// problem in below
ShowMessage(IntToStr(TForm1.myvar)) ;
end;
end.
Run Code Online (Sandbox Code Playgroud)
编译器错误:[dcc32错误] uAdd.pas(问题行):E2096预期的方法标识符
注意:Cnpack显示myvar变量列表但Rad Studio自动完成没有.
And*_*and 10
myvar是对象的公共变量,即类的实例TForm1.因此,你需要指定什么你指的实例.但是当你写作时TForm1.myvar,你不指定任何实例,只指定类.
这就像知道每个人都有一种被称为"性"的属性,然后你会问,"人类的性别是什么?".[ 哪个人?]
解决方案是编写代码someform.myvar,其中someform是a的实例TForm1.例如,Form1.myvar很可能是你想要的.请注意,你找到var Form1: TForm1了uMain.这是声明表单变量的行:您有一个指向类对象的变量TForm1.
所以,相反,你问,"你的朋友史密斯的性别是什么?"
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |