文档章节

Delphi 右下角弹出提示框

vga
 vga
发布于 2014/09/11 20:30
字数 1870
阅读 1014
收藏 1

制作从屏幕右下角逐渐弹出的消息提示框_delphi教程 作者:网友供稿 点击:0     西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金! 文章页数:[1]   微软的每一个产品,无论功能还是界面设计都会带给我们一定的惊喜,比如OfficeXP、Office2003、Messenger的界面设计,早已成为众多软件竞相模仿的对象,就拿Messenger来说,我就见过好几套网络视频会议的软件都借鉴了它的界面风格。  前段时间因为要在原来的软件上增加一个快捷键提示窗体,这个提示窗要求在显示的时候比较醒目美观能引起用户注意,显示后不影响用户操作,能够关掉。很自然的就想到了Messenger那个从屏幕右下角逐渐弹出的消息提示窗体,不过相对Messenger我更喜欢QQ2004奥运版的配色风格,反正都是偷就多偷点吧,下面快捷键提示窗的最终效果:       这个窗体有以下几个特点:  1、显示的时候是从屏幕右下角逐渐弹出的;  2、它是个无标题窗体,但它必须允许用户移动和改变大小,因此要用到无标题窗体拖动、改变大小的技术;  3、它是个不规则的窗体,主要是左上角和右上角是圆形导角,因此要为窗体创建外形,且窗体改变大小时必须重建;  4、它标题和内容显示区都有渐层色,标题还有几个小点点,在实现时使用取巧的方法,直接利用截图进行填充。   当然界面可以偷,代码就得老老实实的写的了,下面是界面设计图和实现代码:      界面formPSHotKey.frm内容 [内容较长,请点击此处找开/折叠] object frmPSHotKey: TfrmPSHotKey  Left = 192  Top = 107  BorderStyle = bsNone  Caption = 快捷键提示  ClientHeight = 168  ClientWidth = 343  Color = clWhite  Constraints.MinWidth = 350  Font.Charset = GB2312_CHARSET  Font.Color = clWindowText  Font.Height = -12  Font.Name = 宋体  Font.Style = []  FormStyle = fsStayOnTop  OldCreateOrder = False  OnCreate = FormCreate  OnPaint = FormPaint  OnResize = FormResize  DesignSize = (    343    168)  PixelsPerInch = 96  TextHeight = 12  object imgTitleBar: TImage    Left = 0    Top = 0    Width = 343    Height = 12    Cursor = crSizeAll    Align = alTop    AutoSize = True    Center = True    Picture.Data = {      07544269746D6170EE010000424DEE010000000000006E000000280000003900      00000C000000010004000000000080010000120B0000120B00000E0000000E00      0000D79D8B00A83A1700F8E6D600C9775E00F6DFCB00FAEDE200F4D7BE00F5DA      C200EAD2BF00FCF5EE00FEFBF800BE796B00FFFFFF0000000000BBBBBBBBBBBB      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB000D0D0888888888888      888888888888888888888888888888888888888888888000BBBB666666666666      6666666666666666666666666666666666666666666660008888777777777777      777777777777777777777777777777777777777777777000666644CC44CC44CC      44CC44CC44CC44CC44CC44CC44CC44CC44CC44CC44CC40007777231C231C231C      231C231C231C231C231C231C231C231C231C231C231C200044CC503550355035      503550355035503550355035503550355035503550355000231C999999999999      9999999999999999999999999999999999999999999990005035AAAAAAAAAAAA      AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0009999CCCCCCCCCCCC      CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC000AAAABBBBBBBBBBBB      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB000CCCCBBBBBBBBBBBB      BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB000BBBB}    OnMouseDown = imgTitleBarMouseDown    OnMouseMove = imgTitleBarMouseMove  end  object imgTitleBarBG: TImage    Left = 248    Top = 32    Width = 7    Height = 12    AutoSize = True    Picture.Data = {      07544269746D617092000000424D920000000000000062000000280000000700      00000C000000010004000000000030000000120B0000120B00000B0000000B00      0000F4D7BE00F8E6D600F6DFCB00F5DAC200EAD2BF00FCF5EE00FEFBF800FAED      E200BE796B00FFFFFF0000000000888888804444444000000000333333302222      222011111110777777705555555066666660999999908888888088888880}    Visible = False  end  object imgShapeBG: TImage    Left = 280    Top = 48    Width = 3    Height = 56    AutoSize = True    Picture.Data = {      07544269746D6170DA010000424DDA01000000000000FA000000280000000300      0000380000000100080000000000E0000000120B0000120B0000310000003100      000000000000FFFFFF00FFFCFC00FFFDFD00FFF9F800FFFAF900FFFBFA00FFF6      F300FFF7F400FFF9F700FFFCFB00FFF0EA00FFF3EE00FFF5F100FFFAF800FFE5      D900FFE7DC00FFE9DF00FFEBE200FFEDE500FFEEE600FFEFE800FFF0E900FFF2      EC00FFF4EF00FFF6F200FFF8F500FFE5D800FFE6D900FFE6DA00FFE7DB00FFE8      DC00FFE8DD00FFE9DE00FFEAE000FFEBE100FFECE300FFEDE400FFEFE700FFF1      EA00FFF3ED00FFF5F000FFF7F300FFF9F600FFFBF900FFFDFC00FFE9DD00FFEC      E200FFF2EB001B1B1B000F0F0F001C1C1C001D1D1D001D1D1D001E1E1E001E1E      1E00101010001F1F1F00202020002E2E2E002121210011111100222222002222      220023232300121212002F2F2F00242424002525250013131300141414001414      14002626260015151500161616000B0B0B002727270030303000171717002828      28000C0C0C001818180018181800292929000D0D0D0019191900070707002A2A      2A00080808001A1A1A001A1A1A002B2B2B0009090900040404000E0E0E000505      05002C2C2C0006060600060606000A0A0A000A0A0A00020202002D2D2D000303      030003030300}    Visible = False  end  object SpeedButton1: TSpeedButton    Left = 323    Top = 16    Width = 14    Height = 14    Anchors = [akTop, akRight]    Flat = True    Glyph.Data = {      8A000000424D8A00000000000000420000002800000009000000090000000100      04000000000048000000120B0000120B00000300000003000000BE604200FFFF      FF00000000001111111110000200100111001000111110001000100010011100      0001100010001110001110001100110000011000111010001000100011001001      1100100010001111111110001001}    OnClick = SpeedButton1Click  end  object Label1: TLabel    Left = 16    Top = 24    Width = 60    Height = 12    Caption = 快捷键提示    Font.Charset = GB2312_CHARSET    Font.Color = clWindowText    Font.Height = -12    Font.Name = 宋体    Font.Style = []    ParentFont = False    Transparent = True  end  object Label2: TLabel    Left = 16    Top = 99    Width = 294    Height = 12    Caption = A:光标在“编号”列时,切换数据类型为“步骤类型”    Transparent = True  end  object Label3: TLabel    Left = 16    Top = 118    Width = 318    Height = 12    Caption = B:光标在“编号”列时,切换数据类型为“工艺要求类型”    Transparent = True  end  object Label4: TLabel    Left = 16    Top = 138    Width = 294    Height = 12    Caption = C:光标在“编号”列时,切换数据类型为“用料类型”    Transparent = True  end  object Label5: TLabel    Left = 16    Top = 42    Width = 132    Height = 12    Caption = Alt+↓:打开下拉列表框    Transparent = True  end  object Label6: TLabel    Left = 16    Top = 61    Width = 108    Height = 12    Caption = Ctrl+Ins:插入一行    Transparent = True  end  object Label7: TLabel    Left = 16    Top = 80    Width = 120    Height = 12    Caption = Ctrl+Del:删除当前行    Transparent = True  end  object Label8: TLabel    Left = 174    Top = 42    Width = 138    Height = 12    Caption = Ins:打开“工艺名称表”    Transparent = True  end  object Label9: TLabel    Left = 174    Top = 61    Width = 90    Height = 12    Caption = F11:插入“℃”    Transparent = True  end  object Label10: TLabel    Left = 174    Top = 80    Width = 90    Height = 12    Caption = F12:插入“′”    Transparent = True  end  object Label11: TLabel    Left = 0    Top = 165    Width = 343    Height = 3    Cursor = crSizeNS    Align = alBottom    AutoSize = False    Transparent = True    OnMouseDown = Label11MouseDown    OnMouseMove = Label11MouseMove  end  object Label12: TLabel    Left = 0    Top = 12    Width = 3    Height = 153    Cursor = crSizeWE    Align = alLeft    AutoSize = False    Transparent = True    OnMouseDown = Label12MouseDown  end  object Label13: TLabel    Left = 340    Top = 12    Width = 3    Height = 153    Cursor = crSizeWE    Align = alRight    AutoSize = False    Transparent = True    OnMouseDown = Label13MouseDown  end end  代码formPSHotKey.pas内容   unit formPSHotKey; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, ExtCtrls, StdCtrls, Buttons; {========================================================================  DESIGN BY :  彭国辉  DATE:        2004-10-28  SITE:        http://kacarton.yeah.net/  BLOG:        http://blog.csdn.net/nhconch  EMAIL:       kacarton@sohu.com  文章为作者原创,转载前请先与本人联系,转载请注明文章出处、保留作者信息,谢谢支持! =========================================================================} type  TfrmPSHotKey = class(TForm)    imgTitleBar: TImage;    imgTitleBarBG: TImage;    imgShapeBG: TImage;    SpeedButton1: TSpeedButton;    Label1: TLabel;    Label2: TLabel;    Label3: TLabel;    Label4: TLabel;    Label5: TLabel;    Label6: TLabel;    Label7: TLabel;    Label8: TLabel;    Label9: TLabel;    Label10: TLabel;    Label11: TLabel;    Label12: TLabel;    Label13: TLabel;    procedure FormPaint(Sender: TObject);    procedure imgTitleBarMouseDown(Sender: TObject; Button: TMouseButton;      Shift: TShiftState; X, Y: Integer);    procedure FormCreate(Sender: TObject);    procedure SpeedButton1Click(Sender: TObject);    procedure Label11MouseDown(Sender: TObject; Button: TMouseButton;      Shift: TShiftState; X, Y: Integer);    procedure FormResize(Sender: TObject);    procedure Label12MouseDown(Sender: TObject; Button: TMouseButton;      Shift: TShiftState; X, Y: Integer);    procedure Label13MouseDown(Sender: TObject; Button: TMouseButton;      Shift: TShiftState; X, Y: Integer);    procedure imgTitleBarMouseMove(Sender: TObject; Shift: TShiftState; X,      Y: Integer);    procedure Label11MouseMove(Sender: TObject; Shift: TShiftState; X,      Y: Integer);  private    { Private declarations }  public    { Public declarations }  end; var  frmPSHotKey: TfrmPSHotKey; implementation {$R *.dfm} procedure TfrmPSHotKey.FormCreate(Sender: TObject); begin    Tag := Height;    Height := 16;    //定位到屏幕右下角    Top := Screen.Height - 40;    Left := Screen.Width - Width - 2;    Show;    //从屏幕右下角逐渐弹出    while Height<Tag do begin        Height := Height + 5;        Top := Top - 5;        Update;        Application.ProcessMessages;        Sleep(10);    end;    Height := Tag;    Tag := 0;    Color := $F4BA9D;    FormResize(Sender); end; procedure TfrmPSHotKey.FormPaint(Sender: TObject); var    i: integer;    rgn: HRGN;    r: TRect; begin    with Canvas do begin        //利用imgTitleBarBG绘制标题背景        for i:=0 to ClientWidth div imgTitleBarBG.Width do            Draw(i*imgTitleBarBG.Width, 0, imgTitleBarBG.Picture.Bitmap);        if Tag<>0 then Exit;  //如果窗体正在弹出状态,不绘制内容面板背景        //绘制内容面板背景        SetRect(r, 5, 15, Width-5, Height-5);        StretchDraw(r, imgShapeBG.Picture.Bitmap);        Pen.Color := $C97F55;        Brush.Style := bsClear;        RoundRect(r.Left, r.Top, r.Right, r.Bottom, 6, 6);        //绘制窗体边框        rgn := CreateRectRgn(0,0,0,0);        GetWindowRgn(Self.Handle, rgn);        Brush.Color := $BE796B;        windows.FrameRgn(Handle, rgn, Brush.Handle, 2, 2);        DeleteObject(rgn);    end; end; procedure TfrmPSHotKey.imgTitleBarMouseDown(Sender: TObject;  Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin    //在标题按下鼠标键时,允许移动窗体或改变窗体大小    ReleaseCapture;    if X < 5 then Perform(WM_SYSCOMMAND, $F004, 0)    else if X > Width - 5 then Perform(WM_SYSCOMMAND, $F005, 0)    else if Y < 3 then Perform(WM_SYSCOMMAND, $F003, 0)    else Perform(WM_SYSCOMMAND, $F012, 0); end; procedure TfrmPSHotKey.FormResize(Sender: TObject); var    rgn, rgn2: HRGN; begin    if Tag<>0 then Exit;    //窗体改变大小时重建Rgn    rgn := CreateRoundRectRgn(0, 0, Width+1, Height, 4, 4);    rgn2 := CreateRectRgn(0, 11, Width, Height);    CombineRgn(rgn, rgn, rgn2, RGN_OR);    SetWindowRgn(Handle, rgn, True);    DeleteObject(rgn);    DeleteObject(rgn2);    Invalidate; end; procedure TfrmPSHotKey.SpeedButton1Click(Sender: TObject); begin    Close; end; //以下几个Label用来改变窗体大小 procedure TfrmPSHotKey.Label11MouseDown(Sender: TObject;  Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin    ReleaseCapture;    if X < 5 then Perform(WM_SYSCOMMAND, $F007, 0)    else if X > Width - 5 then Perform(WM_SYSCOMMAND, $F008, 0)    else Perform(WM_SYSCOMMAND, $F006, 0); end; procedure TfrmPSHotKey.Label12MouseDown(Sender: TObject;  Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin    ReleaseCapture;    Perform(WM_SYSCOMMAND, $F001, 0); end; procedure TfrmPSHotKey.Label13MouseDown(Sender: TObject;  Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin    ReleaseCapture;    Perform(WM_SYSCOMMAND, $F002, 0); end; //下面代码判断鼠标所在位置,并改变鼠标光标,提示用户可以拖动窗体或改变大小 procedure TfrmPSHotKey.imgTitleBarMouseMove(Sender: TObject;  Shift: TShiftState; X, Y: Integer); begin    if X < 5 then imgTitleBar.Cursor := crSizeNWSE    else if X > Width - 5 then imgTitleBar.Cursor := crSizeNESW    else if Y < 3 then imgTitleBar.Cursor := crSizeNS    else imgTitleBar.Cursor := crSizeAll; end; procedure TfrmPSHotKey.Label11MouseMove(Sender: TObject;  Shift: TShiftState; X, Y: Integer); begin    if X < 5 then Label11.Cursor := crSizeNESW    else if X > Width - 5 then Label11.Cursor := crSizeNWSE    else Label11.Cursor := crSizeNS; end; end. 文章整理:西部数码--专业提供域名注册、虚拟主机服务 http://www.west263.com 以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

本文转载自:http://www.west263.com/www/info/57858-1.htm

vga

vga

粉丝 23
博文 371
码字总数 26854
作品 0
佳木斯
私信 提问
jquery easyui 弹出消息框

<html> <head> <!-- 导入easyui插件的js和css样式; --> <link rel="stylesheet" type="text/css" href="/EasyuiDemo/scripts/jquery-easyui-1.1.1/themes/default/easyui.css"> <link rel="s......

一念三千
2012/11/01
2.8K
0
仿QQ、MSN消息提示窗口的实现(C#)

前言:我们在QQ、MSN、飞信等即时通信软件中经常看到消息弹出提示,即屏幕右下角弹出一个消息提示框,然后过一段时间隐去(有时候也不隐去,比如一个艰难的决定)。这种提示方式在消息通信中...

Shawphy
2011/03/17
3.1K
0
winform版弹框操作

公共弹框帮助类操作手册 1.说明 封装了对于winform操作的一些提示框,包括数据加载耗时的时候,提示数据正在加载,请稍后的提示窗体,动态提示给用户一些有用的信息。例如网吧里面续费提醒等...

我只是一只小小鸟
2016/07/27
186
0
android studio 如何设置代码提示

图上内容比较多,我直接按区域划分成6块区域来说吧: 区域1:这个选项是关于提示的时候如何进行匹配,即按照什么条件来进行提示内容的搜索。 All:选择这个的话,意思就是要和你输入的字符进行...

张裕轩
2017/04/25
0
0
移动web开发-input与手机软键盘的关系

最近在做项目登录注册页面的时候一直在思考一个问题,如何让输入表单的时候,手机软键盘显示“下一步”而非“前往”,随着了解的深入,就顺便总结一下input各类型和手机软键盘的关系。 1.ty...

hyh2015
2016/08/17
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中ToBeAppliedRequestProcessor解析

ToBeAppliedRequestProcessor在Leader中 在已处理事务和最后处理事务处理器之间,处理器链上下一个是FinalRequestProcessor public void processRequest(Request request) throws RequestPro...

writeademo
7分钟前
1
0
Allegro快捷键设置-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
8分钟前
1
0
idea maven web项目启动build时报错java.lang.NullPointerException

之前还好好的,重启一下idea就报这个错了,大概率是tomcat没杀掉端口被占用了,在tomcat配置中更换一下sever端口就好了

宇辰OSC
12分钟前
1
0
weed3-2.3.1.查询之输出

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。 今天先...

刘之西东
12分钟前
1
0
【Android JetPack系列】数据绑定:DataBinding

参考MVVM

Agnes2017
20分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部