=====BCB5.0如何控制程序的流程呀?=====

Mr月亮 2003-06-12 11:09:28
想请教一下用BCB5.0如何可以做到自己控制程序的流程而不用总是去填写控件的事件
响应函数。就比如:
if (Button1被click)
{
ShowMessage("hi");
}
而不用去填写Button1Click()这个事件响应函数

如果可以的话还请告知如何操作,所添加的代码会放在哪里。

(我记得以前用VB的时候就有一个叫做Module的冬冬是用来做这个的)
...全文
157 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
seraphmarmot 2003-06-13
  • 打赏
  • 举报
回复
这类自编函数怎么会没有地方存放呢?开玩笑。在C就能完成的功能,在C++里不可能不行。
建一个HPP文件
建一个HPP,里面存放一个类(建议用类,当然你要只放函数也行)
在要调用时,用INCLUDE将你的HPP引入
gfh21cn 2003-06-13
  • 打赏
  • 举报
回复
用事件托管
每个控件都有一个Tag属性
设置好。

然后
void CustomClick(TObject *Sender)//这个函数是自己定义的
{
TButton *t_Button=dynamic_cast<TButton *>(Sender);
if(t_Button)
{
switch(t_Button->Tag)
{
case 0: ShowMessage("...");break;
case 1: .... break;
default: .... break;
}

}


}

在窗体的显示(Show)
{
Button1->OnClick=CustomClick;
Button2->OnClick=CustomClick;
Button3->OnClick=CustomClick;
}
这样便可以集中处理
Mr月亮 2003-06-13
  • 打赏
  • 举报
回复
VC里面使用类向导来直观完成这种工作,BCB应该也有吧,请提点!
zeus0915 2003-06-12
  • 打赏
  • 举报
回复
我想可以这样:
...
bool ClickFlag=false;
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
...//处理一个消息,随便
ClickFlag=true;
}
...
//在其他消息处理时,可加入你上面的代码
if(ClickFlag)
ShowMessage("hi");
//----------

以前做过类似的处理,有效。
gjgj3368 2003-06-12
  • 打赏
  • 举报
回复
你要理解什么叫可视编程,事件驱动。
OK?
yhz 2003-06-12
  • 打赏
  • 举报
回复
不可能的。

因为在你的程序运行到那个判断语句时,
操作系统返回的消息不一定刚好到达(不早也不迟)。

现在都是消息驱动的。也就是说,
整个程序的各个操作都是由操作系统返回的各种消息引发,
然后程序再根据你的编程,用不同的处理方法来完成的。

你说的那种方法只会在DOS下出现,因为他是单线程的
所以他的消息是循环发送的。这样可以保证你需要的时候可以有效判断。
warton 2003-06-12
  • 打赏
  • 举报
回复
完全不必要这么操作吧
IT-司马青衫 2003-06-12
  • 打赏
  • 举报
回复
不可能的
现在的是消息化编成,不以前的结构化编成

你要控制可以使用ACTION
alenwelkin 2003-06-12
  • 打赏
  • 举报
回复
我不是很明白楼主的意思, 你是要截获消息自己处理吗??还是想在某个函数中像判断checkbox有没有被checked这样来判断一个按钮是否被click呢???
如果是前者那么可以通过三个宏加一个函数来完成:
BeginMessageMap, MessageMap, EndMessageMap,好像是这三个吧, 我这里没装CB, 你可以查查帮助文件.
然后再编写一个消息处理函数即可完成.

如果是后者,那应该不是可能的吧.
因为和checked不同, checked是一种状态,而click是以一个消息的方式传过来的, 一旦click,消息就产生了, 产生了消息就会要处理, 你不处理windows就帮你处理了, 只有系统等消息, 没有消息等系统的. 除非你让整个进程wait, 等待消息被处理了再继续持行.
seraphmarmot 2003-06-12
  • 打赏
  • 举报
回复
说清你具体想做什么?为什么不用事件?
ybluo 2003-06-12
  • 打赏
  • 举报
回复
存放这类自编的函数 需要专门的工具吗?
文件可以自己命名
Mr月亮 2003-06-12
  • 打赏
  • 举报
回复
有道理。
那就是说BCB里面没有专门的工具和另外命名的文件来产生和存放这类自编的函数咯?
yhz 2003-06-12
  • 打赏
  • 举报
回复
要这样的话,你还是新建一个cpp和hpp文件。

自己在里面写一个基类,它你要做的事封装起来,用起来也方便。
以后无论在什么地方用到它,直接#include就可以了。
以后有什么改动,继承它也很好办。

Mr月亮 2003-06-12
  • 打赏
  • 举报
回复
To loking(loking):
有点这个意思了!那么:
我应该把void __fastcall together(String strAct)写在哪里呢?
随便写的话显得比较凌乱,BCB里面应该有专门的工具和另外命名的文件来产生和存放这类自编的函数吧
loking 2003-06-12
  • 打赏
  • 举报
回复

String strAct;

void __fastcall Button1Click(TObject *Sender)
{
strAct="Button1Click";
together(strAct);
}
void __fastcall Button2Click(TObject *Sender)
{
strAct="Button2Click";
together(strAct);
}
void __fastcall together(String strAct)
{
if(strAct=="Button1Click")
{
...
}
else if(strAct=="Button2Click")
{
...
}
}


Mr月亮 2003-06-12
  • 打赏
  • 举报
回复
Sorry,可能我的问题描叙的有问题,我的意思是如何专门建立一个模块来集中控管所有我关心的事件。

zeus0915(蜡人)朋友有点明白我的意思了,谢谢^_^

我现在的问题关键在于:如何来建立这样一个模块。望大家多多提点
ekeen 2003-06-12
  • 打赏
  • 举报
回复
是不是Button1Click()这个事件响应函数里还有其他事件?
zxcdewq 2003-06-12
  • 打赏
  • 举报
回复
不过楼主是想多个事件响应一个函数,重载函数不就行了,

13,870

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧