首页 > 代码库 > Delphi 右下角弹出提示框

Delphi 右下角弹出提示框

制作从屏幕右下角逐渐弹出的消息提示框_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 = http://www.mamicode.com/{ 07544269746D6170EE010000424DEE010000000000006E000000280000003900 00000C000000010004000000000080010000120B0000120B00000E0000000E00 0000D79D8B00A83A1700F8E6D600C9775E00F6DFCB00FAEDE200F4D7BE00F5DA C200EAD2BF00FCF5EE00FEFBF800BE796B00FFFFFF0000000000BBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB000D0D0888888888888 888888888888888888888888888888888888888888888000BBBB666666666666 6666666666666666666666666666666666666666666660008888777777777777 777777777777777777777777777777777777777777777000666644CC44CC44CC 44CC44CC44CC44CC44CC44CC44CC44CC44CC44CC44CC40007777231C231C231C 231C231C231C231C231C231C231C231C231C231C231C200044CC503550355035 503550355035503550355035503550355035503550355000231C999999999999 9999999999999999999999999999999999999999999990005035AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0009999CCCCCCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC000AAAABBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB000CCCCBBBBBBBBBBBB BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB000BBBB} onm ouseDown = imgTitleBarMouseDown onm ouseMove = 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 onm ouseDown = Label11MouseDown onm ouseMove = Label11MouseMove end object Label12: TLabel Left = 0 Top = 12 Width = 3 Height = 153 Cursor = crSizeWE Align = alLeft AutoSize = False Transparent = True onm ouseDown = Label12MouseDown end object Label13: TLabel Left = 340 Top = 12 Width = 3 Height = 153 Cursor = crSizeWE Align = alRight AutoSize = False Transparent = True onm ouseDown = 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 Height0 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 以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

Delphi 右下角弹出提示框