首页 > 其他分享 >dephi RTI (Runtime Type Information)获取运行时的控件信息

dephi RTI (Runtime Type Information)获取运行时的控件信息

时间:2023-07-28 10:46:25浏览次数:34  
标签:控件 begin end Information Edit Delphi PropInfo RTI RTTI

var
Edit: TComponent;
begin
Edit := FindComponent("Edit1");
If Edit is TEdit then
TEdit(Edit).Text := '你好 Delphi7';
end;

 

 

RTTI(RunTime Type Information): 运行时类型信息, 就是在程序运行后也能得到类型(譬如 TButton 类)的信息.

 

这在早期主要用于 IDE 设计时, 譬如把一个 Button 放到窗体后, 此时我们的程序虽然没有运行, 但在 Delphi 的 IDE 编辑环境中, 这个 Button 已经是在运行状态(要不然IDE怎么才能显示我们要求的TButton呢); 此时我们对 Button 的属性等信息的设置都是通过 RTTI 技术实现的.

 

但在 Delphi 2007 之前, 能够获取 RTTI 信息是有限的.

Delphi 2009 增加了 ObjAuto 单元、Delphi 2010 增加的 RTTI 单元, 这都可以让程序在运行时对类型有更多掌控(副作用是最后生成的程序越来越大).​

-------------------------------------例子1----------------------------------------

Uses Rtti, TypInfo;

procedure TForm1.Button3Click(Sender: TObject);

begin

ShowMessage(GetEnumName(TypeInfo(TFormStyle), Ord(FormStyle)));

end;

主窗体上放2个Label,3个Button,然后

procedure TForm1.Button1Click(Sender: TObject);

var

i: integer;

PropInfo: PPropInfo;

begin

for I := 0 to ComponentCount-1 do

begin

PropInfo:=GetPropInfo(Components[i].ClassInfo, 'Color');

if PropInfo <> nil then

SetOrdProp(Components[i], PropInfo, clBlue);

end;

end;


-----------------------------------
Delphi的RTTI(许多参考链接)
https://blog.51cto.com/u_15127692/4693281

标签:控件,begin,end,Information,Edit,Delphi,PropInfo,RTI,RTTI
From: https://www.cnblogs.com/QuincyYi/p/17586969.html

相关文章

  • AndroidAnnotations 自定义控件 ant编译 找不到类
    问题:今天使用jenkins+ant编译android项目,一直编译不通过,报错内容就是,自定义控件找不到类。确认了几次svn提交,项目代码完全提交,所以想到是不是代码的问题。故回头查询代码。在代码中使用了下划线类。这个类是在AA中自动生成的,而报错的地方,正是编译生成的地方,觉得可能和编......
  • NET6 EF Error: The certificate chain was issued by an authority that is not trus
    ErrorAconnectionwassuccessfullyestablishedwiththeserver,butthenanerroroccurredduringtheloginprocess.(provider:SSLProvider,error:0-Thecertificatechainwasissuedbyanauthoritythatisnottrusted.)解决方法:在DB连接字符串后面添加......
  • Starting MySQL.Logging to '/data/mysql8/data/zwzxzkptapp.err'. . ERROR! The
    实现MySQL日志文件路径修改1.了解MySQL日志文件MySQL服务器在运行时会产生多个日志文件,其中包括错误日志、查询日志、二进制日志等。每个日志文件都有一个特定的作用和存储路径。2.修改MySQL错误日志文件路径在MySQL中,错误日志文件用于记录MySQL服务器的错误信息。默认情况下......
  • WPF 在ScrollViewer控件内部的Slider控件无法触摸滑动
    WPF中在ScrollViewer控件内部的Slider控件无法触摸滑动,是由于ScrollViewer控件默认设置了IsManipulationEnabled为True。<ScrollViewerx:Name="ScrollViewer1"><Slider></Slider></ScrollViewer>WPFScrollViewer的IsManipulationE......
  • startInternal One or more listeners failed to start
    IDEA启动项目一直报错startInternalOneormorelistenersfailedtostart,修改了tomcat端口号也不行,网上各种方法尝试也不好使。这时关注IDEA启动TOMCATLOCALHOSTlog日志,查看日志中报错信息,针对性修改错误......
  • oracle partition by 查询重复记录中的1条数据(获取表去重后的数据所有字段)
    1,partitionby分组后给分组数据排序selectt.*,row_number()over(partitionbyt."name",t."rid"orderbyt."rid")as"sort"from"person"t;2、获取去重后的记录selectt2.*from(SELECTt.*,row_number()over(partitionbyt.&......
  • 画图控件QCustomplot
    对刷新率、点数、性能上要求高,对界面美观程度不是特别重视,则选QCustomPlot。使用方法是通过添加现有文件将qcustomplot.h、qcustomplot.cpp加入工程,并在pro文件中加入printsupport,放置widget并提升为QCustomPlot。【官网】 QtPlottingWidgetQCustomPlot-Introduction【......
  • (数据科学学习手札153)基于martin的高性能矢量切片地图服务构建
    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1简介大家好我是费老师,在日常研发地图类应用的场景中,为了在地图上快速加载大量的矢量要素,且方便快捷的在前端处理矢量的样式,且矢量数据可以携带对应的若干属性字段,目前主流的做法......
  • springboot mysql 配置 propertis
    SpringBootMySQL配置Properties在SpringBoot应用程序中,我们经常需要使用MySQL数据库来存储和检索数据。为了连接和配置MySQL数据库,我们可以使用application.properties文件。这篇文章将向您展示如何使用SpringBoot的application.properties文件来配置MySQL数据库连接。1.引......
  • 【大联盟】20230714 T1 三分网络(tri) 题解 CF1666K 【Kingdom Partition】
    题目描述here。题解赛时得分:\(30/30\),想了很久网络流最后不会。感觉这题就纯纯对脑洞,因为把题目中的\(2\)改成\(3\)就做不了)))不过还是相当有意思的。考虑如下建模方式:首先,考虑最小割。对于每个点\(i\),我们用两个点\(x_{i}\),\(y_i\)来表示。\(x_i\)表示\(i\)号点是......