在控件的事件中,不直接通过控件名,如何修改控件的属性? (高难道,100分相送)

qiwei 2001-07-13 02:29:02
在控件的事件中,不直接通过控件名,如何修改控件的属性?

例如:在Edit1的KeyDown消息事理函数中,在程序中不出现Edit1的控件名,如何
改变Edit1的Text属性?

...全文
157 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiwei 2001-07-13
  • 打赏
  • 举报
回复
To: HEROIN(HEROIN) 你的方法是最好,谢谢你!

谢谢大家的帮忙,到这儿为止我的问题已解决了,给大家意思一下吧!
Yonee 2001-07-13
  • 打赏
  • 举报
回复
不早点说,害得我差点走火入魔!
我想可以试试用ActionList控件!
gqxs 2001-07-13
  • 打赏
  • 举报
回复
up
HEROIN 2001-07-13
  • 打赏
  • 举报
回复
把所有Edit的OnKeyDown事件设为同一函数即可.函数中加入
((TEdit*)Sender)->Left=0;
qiwei 2001-07-13
  • 打赏
  • 举报
回复
To: xrbeck(xiaozi)  谢谢你的方法,我会考虑的,但我有一百多个控件,Switch语句写
的也真让我难受,如果不是万不得已,我可能会用的了!

这个方法还是有点让人难以接受,光处理这个switch就使用了一千多条语句,不知哪位还有高招吗?
xrbeck 2001-07-13
  • 打赏
  • 举报
回复
那或许可以根据TAG来区别。
void __fastcall TForm2::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
TEdit * Des_Edit=dynamic_cast<TEdit *>Sender;
switch(Des_Edit->Tag)
{
case 0:....
case 1:....

}
}
参考一下。。恩。
qiwei 2001-07-13
  • 打赏
  • 举报
回复
To: xrbeck(xiaozi) 我只是随便举了Edit1这个例子,其实并不知道是Edit1,如果知道的
话就不用这么麻烦了!

To: Yonee(戴墨镜的洋葱) 可能我说的不太清楚,我的意思是如果有一百个Edit控件,分别
命名为Edit1...Edit100,不管在哪个Edit控件中按了回车键都
让它的Left属性变为0,总不可能写一百个同样的处理函数吧,
所以我就想在一个事件中处理了,但想知道倒底是哪个Edit按了
才好!

Yonee 2001-07-13
  • 打赏
  • 举报
回复
我想非常简单,不会超过10句!
第一种办法:
使用 SetWindowLong设置WndProc

WndProc(HWND hwnd, ……)//不是 WndProc(Message::TMessage &Message)
{
SetWindowText(……)
}
第二种方法:
更简单,速度嘛!如果你有10000个控件我想也不会超过2秒钟!

starsail 2001-07-13
  • 打赏
  • 举报
回复
Sender是TObject类的。好像没有象PB那样的好事,可以轻松用This引用,因为事件处理函数是属于Form这个类的。
xrbeck 2001-07-13
  • 打赏
  • 举报
回复
"在程序中不出现Edit1的控件名,如何改变Edit1的Text属性?"
恩。那你怎么知道要改EDIT1的呢。
或许遍历的方法可以参考一下:
for(int i=0;i<ComponetCount;i++)
{
if(dynamic_cast<TEdit *>(Components[i]))
{
.........
}

}

weenyboy 2001-07-13
  • 打赏
  • 举报
回复
什么意思呢? 不懂
Sender 参数不是对象的实例指针吗?
qiwei 2001-07-13
  • 打赏
  • 举报
回复
这些方法看似容易,但实际编程中比较复杂,如果成批处理这样的控件,那么速度可想而知,不知BCB中是否有什么属性的设置能为它带来福音,不知哪位高手还能提供别的方法吗?
wjzhuang 2001-07-13
  • 打赏
  • 举报
回复
@_@
从wndproc()或者dispatch()处理消息的函数入手?
Yonee 2001-07-13
  • 打赏
  • 举报
回复
还有种方法:使用Findwindow API遍历所有句柄,根据某一属性的值(比如Text的内容),取得句柄,然后根据句柄设置/改变属性!
Yonee 2001-07-13
  • 打赏
  • 举报
回复
截获该控件的消息处理,取它的句柄,根据句柄设置/改变属性!

13,825

社区成员

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

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