zoukankan      html  css  js  c++  java
  • Delphi 之弹出气泡消息提示

     

    //h:窗体中控件的句柄(用在某个控件上提示消息)(要调用的控件句柄)
    
    //text:要提示的文本
    
    //cap:提示框上的标题
    
    //IconType:提示框上显示的图标(共三个值。1、2、3分别为提示、警告、错误s)
    
    //t:消息停留的时间(以毫秒计算)
    
    //left: 消息框偏离控件的左距离,设为0则表示没有
    
    //top: 消息框偏离控件的顶距离,设为0则表示没有
    procedure TFrmMain.QiPaoShowMessage(h:HWND;text,cap:string;IconType:integer=1;t:integer=1000;left:Integer=0;top:Integer=0);
    var
     r : TRect;                       //是一个记录(Record),保存了矩形的(左上角右下角两个点)4个坐标或2个点的值。
     hTooltip: Cardinal;    //Cardinal是无符号32位整数 ,取值0到4294967295范围。
     ti: TToolInfo;
    begin
      hToolTip := CreateWindow('Tooltips_Class32',nil,$40,0,0,0,0,0,0,hInstance,nil);
      if hToolTip <> 0 then
      begin
        SetWindowPos(hToolTip, HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);  //让气泡在最前面
        ti.cbSize := SizeOf(TToolInfo);
        ti.uFlags := TTF_IDISHWND or TTF_TRACK;
        ti.hInst := hInstance;
        ti.lpszText :=pchar(text);
        SendMessage(hToolTip, TTM_ADDTOOL, 0, Integer(@ti));
        if (IconType > 3) or (IconType < 0) then IconType:=0;
        SendMessage(hToolTip,WM_USER + 32,IconType,Integer(pchar(cap)));
        GetWindowRect(H,R);             //获取指定控件的坐标,R.Right 、R.Left、R.Bottom、R.Top
        r.Left:=r.Left-left;
        r.Top:=r.Top-top;
    
     // 定义气泡位置
        SendMessage(hToolTip,TTM_TRACKPOSITION, 0, MAKELONG((r.Right - r.Left) div 2 + r.Left, (r.Bottom - r.Top) div 2 + r.Top));            SendMessage(hToolTip, TTM_TRACKACTIVATE, Integer(True), Integer(@ti));
        Sleep(t);
        DestroyWindow(hToolTip);
     end;
    end;

    ///////////////////////----------参数说明---------------------//////////////////////

    //h:窗体中控件的句柄(用在某个控件上提示消息)(要调用的控件句柄)

    //text:要提示的文本

    //cap:提示框上的标题

    //IconType:提示框上显示的图标(共三个值。1、2、3分别为提示、警告、错误s)

    //t:消息停留的时间(以毫秒计算)

    //left: 消息框偏离控件的左距离,设为0则表示没有

    //top: 消息框偏离控件的顶距离,设为0则表示没有
    procedure TFrmMain.QiPaoShowMessage(h:HWND;text,cap:string;IconType:integer=1;t:integer=1000;left:Integer=0;top:Integer=0);
    var
     r : TRect;                       //是一个记录(Record),保存了矩形的(左上角右下角两个点)4个坐标或2个点的值。
     hTooltip: Cardinal;    //Cardinal是无符号32位整数 ,取值0到4294967295范围。
     ti: TToolInfo;
    begin
      hToolTip := CreateWindow('Tooltips_Class32',nil,$40,0,0,0,0,0,0,hInstance,nil);
      if hToolTip <> 0 then
      begin
        SetWindowPos(hToolTip, HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);  //让气泡在最前面
        ti.cbSize := SizeOf(TToolInfo);
        ti.uFlags := TTF_IDISHWND or TTF_TRACK;
        ti.hInst := hInstance;
        ti.lpszText :=pchar(text);
        SendMessage(hToolTip, TTM_ADDTOOL, 0, Integer(@ti));
        if (IconType > 3) or (IconType < 0) then IconType:=0;
        SendMessage(hToolTip,WM_USER + 32,IconType,Integer(pchar(cap)));
        GetWindowRect(H,R);             //获取指定控件的坐标,R.Right 、R.Left、R.Bottom、R.Top
        r.Left:=r.Left-left;
        r.Top:=r.Top-top;

     // 定义气泡位置
        SendMessage(hToolTip,TTM_TRACKPOSITION, 0, MAKELONG((r.Right - r.Left) div 2 + r.Left, (r.Bottom - r.Top) div 2 + r.Top));            SendMessage(hToolTip, TTM_TRACKACTIVATE, Integer(True), Integer(@ti));
        Sleep(t);
        DestroyWindow(hToolTip);
     end;
    end;

    结果如下所示:

  • 相关阅读:
    $.extend用法详解(一)
    JQuery中$.each 和$(selector).each()的区别详解
    span元素和div元素的浮动效果
    $.ajax中contentType: “application/json” 的用法
    JS中获取URL的参数的方法
    移动端的touch事件(一)
    JS运算的优先级
    关于更新发布CSS和JS文件的缓存问题
    small标签
    DP:三角形的最小路径和
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/10020809.html
Copyright © 2011-2022 走看看