修正TiAnlogDisplay显示的问题
原来在DELPHI7下的程序移到XE2下,修修改改,总算行了。一直没注意这个TiAnlogDisplay控件,界面上用了好多这个控件,运行,显示为空,也不报错。看设计界面,也是空的,本来应当显示初始值的。用的是6.0.4 for xe2(网友自己改的),相同的源码在D7下没问题,这就奇怪了。再放个TiAnlogOuput控件(父类是TiCustomEdit),显示也没问题。这2个控件都继承自TiComponent,(中间的一些控件和显示无关),是控件自己的问题了。看源码,也看不出有什么不同的地方。它们的显示都是通过PaintTo这个方法,设断点,出问题了:
procedure TiAnalogDisplay.iPaintTo(Canvas: TCanvas);
varAText : String;ATextRect : TRect;ATextFlags : TiTextFlags;
beginwith Canvas, ATextRect dobeginif not ErrorActive thenbeginif FPrecision >= 0 thenAText := Trim(Format('%.' + IntToStr(FPrecision) + 'f', [FValue])) + FUnitsTextelseAText := Trim(Format('%g', [FValue])) + FUnitsText;Font.Assign(FFont);DrawBackGround(Canvas, BackGroundColor);endelsebeginAText := ErrorText;Font.Assign(ErrorFont);DrawBackGround(Canvas, ErrorBackGroundColor);end;case BorderStyle ofibsNone : beginATextRect.Top := 2;ATextRect.Bottom := Height - 2;end;ibsRaised : beginATextRect.Top := 2;ATextRect.Bottom := Height - 2;end;ibsLowered : beginATextRect.Top := 2;ATextRect.Bottom := Height - 4;end;end;case FAlignment ofiahCenter : beginATextFlags := [itfHCenter, itfVCenter, itfSingleLine];ATextRect.Left := 2;ATextRect.Right := Width - 2;end;iahLeft : beginATextFlags := [itfHLeft, itfVCenter, itfSingleLine];ATextRect.Left := 2 + FAlignmentMargin;ATextRect.Right := Width - 2;end;else beginATextFlags := [itfHRight, itfVCenter, itfSingleLine];ATextRect.Left := 2;ATextRect.Right := Width - 2 - FAlignmentMargin;end;end;Brush.Style := bsClear;iDrawText(Canvas, AText, ATextRect, ATextFlags, True, BackGroundColor);end;
end;
这儿的Right和Bottom值变成一个巨大的数!(如44062789),Hight和Width本身的值没问题,但是代码的运算(简单运算,不就是减个常数),Bottom和Right就变成一个巨大数了,怀疑表达式中的Hight和Width在运算的时候被替换了,真奇怪啊
修改成这样:
procedure TiAnalogDisplay.iPaintTo(Canvas: TCanvas);
varAText : String;ATextRect : TRect;ATextFlags : TiTextFlags;
beginwith Canvas, ATextRect dobeginif not ErrorActive thenbeginif FPrecision >= 0 thenAText := Trim(Format('%.' + IntToStr(FPrecision) + 'f', [FValue])) + FUnitsTextelseAText := Trim(Format('%g', [FValue])) + FUnitsText;Font.Assign(FFont);DrawBackGround(Canvas, BackGroundColor);endelsebeginAText := ErrorText;Font.Assign(ErrorFont);DrawBackGround(Canvas, ErrorBackGroundColor);end;case BorderStyle ofibsNone : beginATextRect.Top := 2;ATextRect.Bottom := Self.Height - 2;end;ibsRaised : beginATextRect.Top := 2;ATextRect.Bottom := Self.Height - 2;end;ibsLowered : beginATextRect.Top := 2;ATextRect.Bottom := Self.Height - 4;end;end;case FAlignment ofiahCenter : beginATextFlags := [itfHCenter, itfVCenter, itfSingleLine];ATextRect.Left := 2;ATextRect.Right := Self.Width - 2;end;iahLeft : beginATextFlags := [itfHLeft, itfVCenter, itfSingleLine];ATextRect.Left := 2 + FAlignmentMargin;ATextRect.Right := Self.Width - 2;end;else beginATextFlags := [itfHRight, itfVCenter, itfSingleLine];ATextRect.Left := 2;ATextRect.Right := Self.Width - 2 - FAlignmentMargin;end;end;Brush.Style := bsClear;iDrawText(Canvas, AText, ATextRect, ATextFlags, True, BackGroundColor);end;
end;
OK,好了
转载于:https://www.cnblogs.com/jankerxp/archive/2013/02/25/7774040.html
修正TiAnlogDisplay显示的问题相关推荐
- VirtualBox在Windows 10 高分屏下显示的修正以及显示字体的修改
给自己的笔记本外接了大屏显示屏以后,就会时不时在笔记本和屏幕之间拖动,VirtualBox没有适配高分屏,加上给屏幕设置了不同的缩放比(笔记本100%和大屏150%).VirtualBox就显得格外的 ...
- C# RichTextBox 做简单的HTML代码编辑器 ---------利用WinApi修正左侧显示行号 误差
说明:通过WinApi可以准确定准滚动位置. //行号 生成显示 这里rtbLineNum用的 RichTextBox,也可以用其它private void ShowLineNum(){rtbLine ...
- 调整 Thunderbird 邮件主题和正文的字体、字号,修正中文显示乱码
问题 如果你在使用 Thunderbird 遇到了如下问题之一,则本文对你或有帮助. (1)收件箱等邮件列表栏,邮件标题字体太小(默认8磅): (2)中文显示效果不好.如"路径"在 ...
- 2020黑群晖最稳定版本_打造完美6.2.3黑群晖,正确显示 CPU,支持Nvme缓存
大家好,我是晓飞影! 一个数码爱好者,也喜欢在众多平行领域探究摸索,让生活多一点乐趣. 之前分享了一台正版蜗牛星际 A 款机箱组装 NAS 的文章,搭配 i3-8100和华擎 H310CM-ITX/a ...
- android 电池电量显示不正常,vivo电量显示不正常怎么解决?vivo手机电量校准教程...
vivo手机用了一段时间会发现,手机电量显示会出现不准确的情况,明明刚充满电不到10分钟,仅剩50%电量:或者充电一晚上,电量仍然显示为70%,无法充满.小伙伴们稍安勿躁,这并不是电池本身出了问题,而 ...
- 在Windows的CMD中如何设置支持UTF8编码?
这个问题很多人开始都会不知道,当然包括曾经的我,当用到的时候,只好求助于伟大的股沟和度娘了.网上有设置的方法,但说明确不够详细系统,说设置字体 为:Lucida Console.问题是,在默认方式下, ...
- 秒杀奥斯卡的“第四块广告牌”就在你身边!
作为年度爆款影片,<三块广告牌>一定刷屏了你的社交网络.可你是否知道打破人们想象的"第四块广告牌"正悄然改变着你的生活?让英特尔带你一起探索这块神奇广告牌的奥秘吧! 作 ...
- Delphi MlSkin v3.9 (2019.4.15)发布啦! 它能让你的程序拥有像QQ一样多彩炫丽的外观...
组件包和Demo程序下载地址: http://www.pngui.com/filedownload 支持:Delphi7.Delphi2007.Delphi2009.Delphi2010.Delphi ...
- 开源串口调试助手java_(串口通信编程) 开源串口调试助手Common (Com Monitor)
我写的串口调试助手程序以及源代码. 警告:请勿将本软件源代码用于任何商业用途. 其实吧, 我写的这个串口软件绝对比网上流传的一些串口调试软件好用很多, 对于软件,我本身并没有作 太多推广, 一些功能我 ...
最新文章
- 实现2D全景图的中心视野变换
- C语言fputs()函数(把字符串写入到指定的流 stream (文件指针)中)
- java 鼠标拖动矩形_java – 用鼠标拖动创建矩形,而不是绘制
- 【旧文章搬运】Windows内核常见数据结构(线程相关)
- SAP Spartacus里unit list tree节点expanded属性的赋值逻辑
- setsockopt()用法(参数详细说明)
- Rank Math Pro v2.17.1 SEO插件
- [LUOGU] P2886 [USACO07NOV]牛继电器Cow Relays
- 英语 没有听懂对方说什么 怎么说
- 18.11 LVS DR模式搭建
- VMware Workstation Pro下载密钥
- EPLAN2022程序安装及注意事项
- 斯芬克怎么样 谁说我没有担心
- java simon_Java Simon
- 一箭穿心程序编码c语言,一个简单的一箭穿心程序
- 点击按钮没有反应,onclick函数点击无反应的原因
- python播放音乐同步歌词范晓萱_同步_范晓萱_高音质在线试听_同步歌词|歌曲下载_酷狗音乐...
- Python traceback模块:获取异常信息
- 找出词典中的所有的变位词 --By LXW
- 电商物流仓储的28条经验
热门文章
- Apache Kafka – KIP 32,33 Time Index
- 二维数组的遍历之查漏补缺
- 美团搜索-搜索引擎关键字智能提示的一种实现[转]
- MVC - 建立模型/实体类,对应到数据库
- javascript 编辑记录
- Visual Studio 2008带来了什么
- EXPLAIN字段详解
- Linux关机运行的脚本,Linux 关机 脚本
- 简单工厂和 工厂设计模式--抽象工厂模式--Java实现
- error gyp ERR! stack Error: Could not find any Visual Studio installation to use