Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 1818|回复: 2

请问如何在过程中调用其他的过程?

[复制链接]

该用户从未签到

发表于 2012-7-24 15:19:38 | 显示全部楼层 |阅读模式
如题。在点击某个按钮执行一段代码后,调用另外一个按钮的某个过程。怎么写?
回复

使用道具 举报

该用户从未签到

发表于 2012-7-24 21:08:51 | 显示全部楼层
例如在 Button2 中调用 Button1 的过程,可以这样
一:
  Button1.Click;

二:
  Button1.OnClick(nil);
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2012-7-25 00:06:37 | 显示全部楼层
楼主,其实根本就没有【另外一个按钮的某个过程】这种东西。

过程就是过程。有普通的过程,比如这样声明的:

procedure DoSomething(var S: string);

也有类过程,比如这样声明的:

TForm1 = Class(TForm)
private
public
  pocedure DoSomething(var S: string);
end;


上面那个过程,是类过程。其实现部分是这样的:

procedure TForm1.DoSomething(var S: string);
begin
  S := 'aaa';
end;

而一开始我示范的那个普通的过程(非类过程)的实现部分是这样写的:

procedure DoSomething(var S: string);
begin
  S := 'aaa';
end;

--------------------------

对于使用 DELPHI 或者 LAZARUS 的人来说,你双击一个 BUTTON 的 ONCLICK ,IDE 自动帮你生成那个过程的框架代码而已。那个过程的框架代码大概类似:

procedure TForm1.Button1OnClick(Sender: TObject);
begin
  // 干活.....
end;

其实,这里,DELPHI 或 LAZARUS 帮我们做了2件事:
1. 创建了这个过程的框架。
2. 在 TFORM1 的资源描述里面(DELPHI 底下的 DFM 文件),自动帮我们把 Button1 的 OnClick 熟悉(其实事件这玩意就是个属性)设置指向了 TForm1.Button1OnClick 这个过程!

所以,你完全可以自己定义一个过程,只要参数和 OnClick 事件需要的参数相同。比如:

TForm1 = class(TForm)
private
  procedure DoMyBtn(sender: TObject);
public
end;

比如在 IDE 帮你自动生成的代码框架里面,自己增加一个 DoMyBtn 过程。其实现部分就是:

procedure TForm1.DoMyBtn(Sender: TObject);
begin
  //干活...
end;

然后,你在 TFORM1.OnCreate 里面,增加一行代码:

Button1.OnClick := Self.DoMyBtn();

好啦,你去试试!当你点 Button1,这个 DoMyBtn 被激发了!

这就是事件的原理。这时候, DoMyBtn 就被绑定到 Button1 上去了。

当然,这个过程,你还可以在别的地方调用它。你的问题的答案就是这样。
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-3 10:47 , Processed in 0.026351 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表