当前位置: 首页 > news >正文

模拟系统提示框

在FormCreate设置PersonSignLB的windows消息

aHint :=THintWindow.Create(nil);
aHint.Color :=clInfoBk;
FWndMethod := PersonSignLB.WindowProc;
PersonSignLB.WindowProc := LabelWndProc;

 

显示个人提示框

procedure TMainForm.LabelWndProc(var Msg: TMessage);

  //根据一定长度,将字符串变为回车的字符
  function SplitByLen(src:string;var row:Integer;perCount:Integer):string;
  var
    i,j:Integer;
    c:Char;
    sTemp,s1:string;
    bIsDBCS:Boolean;
  begin
    row :=Ceil(Length(src)/perCount);
    sTemp :='';
    bIsDBCS :=False;
    for I := 1 to row do
    begin
      for   j:= 1 to  perCount   do
      begin
        if bIsDBCS   then
          bIsDBCS   :=   False
        else
          if Windows.IsDBCSLeadByte(byte(src[j]))   then
            bIsDBCS   := True;
      end;

      if  bIsDBCS   then   Dec(perCount);
      if i=row then
        sTemp :=sTemp +Copy(src,1,perCount)
      else
        sTemp :=sTemp +Copy(src,1,perCount)+#10#13;
      src :=Copy(src,perCount+1,Length(src)-perCount);
    end;
    if bIsDBCS then
      Inc(perCount);
    Result :=sTemp;  
  end;

var
  p,p1,p2: TPoint;
  iRow:Integer;
  s:string;
begin
  GetCursorPos(p);
  p1 :=Point(p.x,p.y+20);

  if Msg.Msg = CM_MOUSELEAVE then
  begin
    ShowWindow(aHint.Handle, SW_HIDE);
  end
  else if Msg.Msg = CM_MOUSEENTER then
  begin
    s :=SplitByLen(FSingLB,iRow,36);
    //djc 2012-8-30 mod
    if iRow=1 then
      p2 :=Point(p.x+220,p.y+36)
    else
      p2 :=Point(p.x+220,p.y+26*iRow);
    aHint.ActivateHint(Rect(p1,p2),s);
  end;
  FWndMethod(Msg);
end;

 

 

转载于:https://www.cnblogs.com/djcsch2001/archive/2012/08/31/2665173.html

相关文章:

  • DSL概念、类别、为什么要写DSL 1
  • Javascript 日期格式化
  • 成绩单课程翻译参考总表
  • NYOJ 86
  • C#处理oracle数据库的Clob类型
  • I have a dream
  • [笔记]8组LVDS_TX和LVDS_RX的调试心得
  • Struts2数据传输的背后机制:ValueStack(值栈)
  • A Medical Study Tool Developed with WPF
  • POJ题目分类---模拟[A一道删一道]
  • EJB之JPA(UUID与TABLE影射策略)
  • text-overflow:ellipsis溢出显示省略号兼容所有浏览器的解决办法
  • 场景中的物体显示 为BoundingBox
  • PHP程序员最常犯的11个MySQL错误
  • css书写顺序
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Java深入 - 深入理解Java集合
  • Js基础——数据类型之Null和Undefined
  • Linux Process Manage
  • mysql 5.6 原生Online DDL解析
  • Rancher-k8s加速安装文档
  • spring boot下thymeleaf全局静态变量配置
  • Spring Cloud Feign的两种使用姿势
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 对超线程几个不同角度的解释
  • 分布式事物理论与实践
  • 复杂数据处理
  • 关于List、List?、ListObject的区别
  • 爬虫模拟登陆 SegmentFault
  • 使用 @font-face
  • 学习笔记TF060:图像语音结合,看图说话
  • 找一份好的前端工作,起点很重要
  • scrapy中间件源码分析及常用中间件大全
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​如何防止网络攻击?
  • !!Dom4j 学习笔记
  • (C语言)fgets与fputs函数详解
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (新)网络工程师考点串讲与真题详解
  • (一)VirtualBox安装增强功能
  • ./和../以及/和~之间的区别
  • .a文件和.so文件
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • ??myeclipse+tomcat
  • @Bean注解详解
  • @EnableAsync和@Async开始异步任务支持
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [Android Studio 权威教程]断点调试和高级调试
  • [CentOs7]图形界面
  • [ERROR] 不再支持目标选项 5。请使用 7 或更高版本