比如有一个单元如下:
unit Unit_InputDlg;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit_Base, ExtCtrls, StdCtrls, Buttons, RzPanel;
type
TFrm_InputDlg = class(TForm)
RzPanel1: TRzPanel;
HintLabel: TLabel;
Edit_Input: TEdit;
RzPanel2: TRzPanel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure FormCloseQuery(Sender: TObject
var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
aaa : integer
procedure MyProc;
end;
var
Frm_InputDlg: TFrm_InputDlg;
bbb : integer;
procedure ProcAnother;
implementation
{$R *.dfm}
procedure ProcAnother;
begin
//do something
end;
procedure TFrm_InputDlg.FormCloseQuery(Sender: TObject;var CanClose: Boolean);
begin
if self.ModalResult = mrOK then
begin
if trim(Edit_Input.Text) = '' then
begin
CanClose := False;
Edit_Input.SetFocus;
end;
end;
end;
procedure TFrm_InputDlg.MyProc;
begin
//do something...
end;
end.
那么,public下的变量aaa,必须在该类TFrm_InputDlg已经创建后才可以在别的单元引用,引用方法是:Frm_InputDlg.aaa
public下的方法可以在没有创建该类的情况下引用(方法定义完成后,其方法表中的地址已经确定了,即使类实例没有创建,方法的指针仍然可以找得到),引用方法是:Frm_InputDlg.MyProc;
var 下的变量bbb,则可以以Unit_InputDlg.bbb;的形式调用;var下的过程和函数也可以以Unit_InputDlg.ProcAnother;的形式调用.这时不管该单元所定义的类有没有创建实例,作为单元应用在别的单元中调用都是可以的.