关于Procedure(0分)

  • 主题发起人 主题发起人 delhpi
  • 开始时间 开始时间
D

delhpi

Unregistered / Unconfirmed
GUEST, unregistred user!
代码浏览器 中,procedures 下显示的 过程和函数,是不是只能在 当前窗体单元中使用,其他单元中,即使引用了该窗体单元,也无法使用这些procedure?

程序中,一些procedure function 是写成
procedure proName
function funName

还是写成
procedure TForm1.proName
function TForm1.funName

谢谢。
 
函数或过程声明为类的函数或过程并且是在public节中,在其他窗体引用时是按“对象名.过程名”来操作的。
 
也就是说,如果一个procedure funtion只在一个UNIT用,那就写成
procedure proName,
function funName

如果其他单元也要用到的话,就声名在public 中,定义成

procedure TForm1.proName
function TFrom1.funName
是不是这个概念?
 
procedure 过程名
function 函数名
如果您只需要在本单元内使用,那么可以在
private
下定义即为:procedure 窗体名字.过程名
或者只要在调用该过程的函数前面定义即为:procedure 过程名
但后者之中要使用的控件要带上窗体名字即窗体名字.控件名
函数类似。

如果您要定义一个全局的函数或者过程:
单独建立一个不带有窗体的unit,在这里定义函数及过程,在其他窗体中
只要引用该unit即可。
 
凭经验,我声明的时候没有用过procedure TForm1.proName
function TFrom1.funName之类的方法,都是直接procedure proName,
function funName
 
都是直接procedure proName,
function funName

如果这是在 一个 窗体 单元中的话,那么这个过程或函数 只能在本 窗体 单元中用了。
你说的可能是,一个不带有窗体的unit中的情况。
 
有如下单元,则
  BProc, BFunc只能在TForm1.****的过程或函数中使用
其它几个均能在引用了此单元的单元(uses Unit1)中使用,区别:
1. AProc, AFunc和CProc, CFunc引用方式为 Form1.AProc等等
2. DProc, DFunc的引用方式为 DProc, DFunc
3. AProc会出现在其它引用窗体的Object Inspector的Events页的下拉框中,即可以直接做为引用窗体某控件的关联事件。
=======================================================
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
published //这行一般被省略
procedure AProc;
function AFunc: string;
private
procedure BProc;
function BFunc: string;
public
procedure CProc;
function CFunc: string;
end;

var
Form1: TForm1;

procedure DProc;
function DFunc: string;

implementation

{$R *.dfm}

{ TForm1 }

function TForm1.AFunc: string;
begin
//
end;

procedure TForm1.AProc;
begin
//
end;

function TForm1.BFunc: string;
begin
//
end;

procedure TForm1.BProc;
begin
//
end;

function TForm1.CFunc: string;
begin
//
end;

procedure TForm1.CProc;
begin
//
end;

procedure DProc;
begin
//
end;

function DFunc: string;
begin
//
end;

end.
 
学习了。非常感谢。这对于菜鸟非常有用。

当要写一个procedure 或者function 时,菜鸟常常不知道究竟以何种形式写,等用了一段时间,发现写的好像不好(不是指过程或者函数本身)。

var
Form1: TForm1;

procedure DProc;
function DFunc: string;

implementation

这种形式的,我原来一直没有用到,因为不知道可以这样写,每次都是直接在
implementation
后,写
procedure Proname
function Funname :type

或者直接COPY到
implementation
后。

这样,本单元内,可以使用这些过程或函数,但好像要有先后顺序。但是,在别的单元,即使引用了本单元,也无法使用这些代码。

看来应该在implementation前再声名一下。
 
接受答案了.
 
后退
顶部