吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 990|回复: 5
收起左侧

[求助] Delphi程序如何调用动态控件名?

[复制链接]
冥界3大法王 发表于 2021-1-20 22:29
本帖最后由 冥界3大法王 于 2021-1-20 23:06 编辑

  求教,以下代码错在何处?
if (GetAsyncKeyState(VK_LWIN) and (GetAsyncKeyState(Ord('B'))) < 0) then              // Win+B
  begin
    SynMemo1.Clear;
    SynMemo1.Lines.Add(Activecontrol.Name);

     TsMemo(Activecontrol.Name).SelectAll;
     TSynMemo(Activecontrol.Name).CopyToClipboard;
     TSynMemo(Activecontrol.Name).PasteFromClipboard;
  end;
end;

如成功的话Memo1-Memo10000就不用写1万次事件了,只需要按次热键。容器内容即可粘过去。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

klamauk 发表于 2021-1-20 23:00
不是很明白,Activecontrol.Name是个对象吗?
 楼主| 冥界3大法王 发表于 2021-1-20 23:05
klamauk 发表于 2021-1-20 23:00
不是很明白,Activecontrol.Name是个对象吗?

差不多吧,得到的是 动态控件名。
Bachelor硕 发表于 2021-1-20 23:20
klamauk 发表于 2021-1-20 23:20
Name得到的是字符串吧,如果Activecontrol是控件对象,不要加.Name。
TsMemo(Activecontrol).SelectAll;

免费评分

参与人数 1吾爱币 +4 热心值 +1 收起 理由
冥界3大法王 + 4 + 1 帮了大忙,多谢。

查看全部评分

pzx521521 发表于 2021-1-21 10:43
本帖最后由 pzx521521 于 2021-1-21 10:44 编辑

不能这样写哦~
Activecontrol.Name 是string类型的, 不是一个object(pointer) 是没有办法强行转换为TSynMemo/TsMemo

如果TSynMemo是一个控件 , 可以通过该控件的父控件(如一个form)的ControlCount 获取所有的Control(这里面包含Memo1-Memo10000)还有其他的一些控件(比如有一些button)
这个时候通过类型判断就好了 如:
[Delphi] 纯文本查看 复制代码
var
  I: Integer;
begin
  for I := 0 to self.ControlCount - 1 do
  begin
    if self.Controls[I] is TButton then
       (self.Controls[I] as TButton).Caption := '999'
  end;
end;

如果不是控件, 那么创建的时候把他加到一个list里面, 遍历list即可

免费评分

参与人数 2吾爱币 +4 热心值 +2 收起 理由
朱朱你堕落了 + 3 + 1 没有大佬不会的,牛逼
冥界3大法王 + 1 + 1 受教了,感谢。留着备用!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 04:28

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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