当文本框没有输入内容且输入焦点不在文本框时,显示提示文字:“请输入帐号”
当文本框得到输入焦点时提示文字不显示

unit SkinHintEdit;  

interface  

uses
Windows,Classes,Controls,SysUtils,Messages,StdCtrls,Forms,
Graphics; const
//提示文字颜色
CONST_DEF_HELPTEXT_FONTCOLOR=clGray;
CONST_DEF_HELPTEXT_FONTNAME='Tahoma';
CONST_DEF_HELPTEXT_FONTSIZE=9;
CONST_DEF_HELPTEXT_FONTSTYLE=[]; type
TSkinHintEdit=class(TCustomEdit)
private
FHelpText: WideString;
FHelpTextFont: TFont;
procedure SetHelpText(const Value: WideString);
procedure SetHelpTextFont(const Value: TFont);
protected
procedure WMPaint(var Message:TMessage);message WM_PAINT;
public
constructor Create(AOwner:TComponent);override;
destructor Destroy;override;
published
///////////////自定义扩展属性/////////////////
//指导性文字字体颜色
property HelpTextFont:TFont read FHelpTextFont write SetHelpTextFont;
//指导性文字
property HelpText:WideString read FHelpText write SetHelpText;
///////////////默认文本框自带属性////////////
property Align;
property Alignment;
property Anchors;
property AutoSelect;
property AutoSize;
property BevelEdges;
property BevelInner;
property BevelKind default bkNone;
property BevelOuter;
property BevelWidth;
property BiDiMode;
property BorderStyle;
property CharCase;
property Color;
property Constraints;
property Ctl3D;
property DoubleBuffered;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property Font;
property HideSelection;
property ImeMode;
property ImeName;
property MaxLength;
property NumbersOnly;
property OEMConvert;
property ParentBiDiMode;
property ParentColor;
property ParentCtl3D;
property ParentDoubleBuffered;
property ParentFont;
property ParentShowHint;
property PasswordChar;
property PopupMenu;
property ReadOnly;
property ShowHint;
property TabOrder;
property TabStop;
property Text;
property TextHint;
property Touch;
property Visible;
property OnChange;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnGesture;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseActivate;
property OnMouseDown;
property OnMouseEnter;
property OnMouseLeave;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
end; procedure Register; implementation procedure Register;
begin
RegisterComponents('SkinEngine',[TSkinHintEdit]);
end; { TSkinHintEdit } constructor TSkinHintEdit.Create(AOwner: TComponent);
begin
FHelpText:='';
//提示文字颜色
FHelpTextFont:=TFont.Create;
FHelpTextFont.Color:=CONST_DEF_HELPTEXT_FONTCOLOR;
FHelpTextFont.Name:=CONST_DEF_HELPTEXT_FONTNAME;
FHelpTextFont.Size:=CONST_DEF_HELPTEXT_FONTSIZE;
FHelpTextFont.Style:=CONST_DEF_HELPTEXT_FONTSTYLE;
inherited Create(AOwner);
end; destructor TSkinHintEdit.Destroy;
begin
FreeAndNil(FHelpTextFont);
inherited;
end; procedure TSkinHintEdit.SetHelpText(const Value: WideString);
begin
FHelpText := Value;
end; procedure TSkinHintEdit.SetHelpTextFont(const Value: TFont);
begin
FHelpTextFont.Assign(Value);
Invalidate;
end; procedure TSkinHintEdit.WMPaint(var Message: TMessage);
var
ClientDC:HDC;
ClientCanvas:TCanvas;
HelpTextDrawLeft,
HelpTextDrawTop:Integer;
begin
Inherited;
if Not Focused and (Text='') and (HelpText<>'') then
begin
ClientDC:=GetDC(Handle);
Try
ClientCanvas:=TCanvas.Create;
ClientCanvas.Handle:=ClientDC;
ClientCanvas.Font.Assign(FHelpTextFont);
HelpTextDrawLeft:=0;
HelpTextDrawTop:=(Height-ClientCanvas.TextHeight(FHelpText) ) div 2-2;
ClientCanvas.TextOut(HelpTextDrawLeft,HelpTextDrawTop,FHelpText);
Finally
ReleaseDC(Handle,ClientDC);
ClientCanvas.Free;
End;
end;
end; end.

DBEditEh/Edit 文本框内容空白时加上提示文字,输入内容时提示文字不显示的更多相关文章

  1. jQuery—— jQuery get方法+一般处理程序处理文本框内容

    网上常常看到这种交互方式,当去一个站点注冊username的时候,假设文本框内没有输入数据,或者数据输入的内容格式不正确.就会将文本框变成红色来提示你输入的内容有误. 自己将这个文本框验证的方式改变了 ...

  2. c#文本框限制输入内容

         //限制输入不能为中文和全角         private void zhbh_KeyPress(object sender, KeyPressEventArgs e)         { ...

  3. Python Tkinter Entry(文本框)

    Python学习记录--关于Tkinter Entry(文本框)的选项.方法说明,以及一些示例. 属性(Options) background(bg) borderwidth(bd) cursor e ...

  4. 文本框的onchange事件,如何兼容各大浏览器

    在项目中经常会遇到对用户输入的数据进行实时校验,而不是等文本框失去焦点或用户手动点击校验. 首先分析下在哪些情况下文本框会产生change事件. 1.用户通过键盘入正常字符时: 2.用户通过键盘输入非 ...

  5. 第三百九十五节,Django+Xadmin打造上线标准的在线教育平台—Xadmin集成富文本框

    第三百九十五节,Django+Xadmin打造上线标准的在线教育平台—Xadmin集成富文本框 首先安装DjangoUeditor3模块 Ueditor HTML编辑器是百度开源的HTML编辑器 下载 ...

  6. tkinter学习-文本框

    阅读目录 Entry 输入框 Text 文本框 Entry: 说明:输入控件,用于显示简单的文本内容 属性:在输入框中用代码添加和删除内容,同样也是用insert()和delete()方法 from ...

  7. 【cl】测试用例【文本框-电子邮箱】

    电子邮箱控件用例: 1.只输入字母,如:abc 2.只输入数字,如:123 3.空白.空格或回车等 4.特殊的字符,如:¥,$等 5.上述四种的组合 6.不正确的邮箱组合: ①.abc@sohucom ...

  8. Jquery / js 判断数据类型方法(限制文本框类型输入)

    当想要判断文本框中的值是否为自己想要的类型时,可以通过一些方法作出判断,这里对于光标离开文本框时判断文本框中输入的是否是数值类型,如果不是,做出提示 $("#WORKYEARS") ...

  9. java 24 - 6 GUI之 创建只能输入数字的文本框

    需求: 创建一个含有标签和文本框的窗体,其中文本框只能输入数字 步骤:(大致上) 创建窗体对象 创建标签对象 创建文本框对象 把组件添加到窗体中 设置标签的监听事件,对键盘按下的数据进行监听 设置窗体 ...

  10. JS给文本框赋值后,在页面后台取不到文本框值的解决方法

    转自:http://www.cnblogs.com/qiaohd/archive/2012/03/23/2413660.html (ReadOnly.disabled 都有可能造成取值取不到) 开发一 ...

随机推荐

  1. python获取当前运行函数名

    两种方式: #!/usr/bin/env python3#coding:utf-8 import sys, inspectdef test_a(): print('func name: ', sys. ...

  2. studiostyl.es网站scheme文件无法下载

    原因网站引用Google的服务 解决方法:查看网页源码.选择选取页面中的元素,选择download按钮,如下图所示 downloadExisting后面的数字代表主题的ID. 在网站中输入https: ...

  3. 权昌TSC条码打印机终极使用教程与开发版本代码大全

    本教程使用的打印机型号:TSC TTP-244 Plus 官方文档 一.TSC打印机安装 1.机器安装 根据官方快速安装指南安装打印机,此处不详细说明,也可以看视频教程,唯一需要注意的地方就是碳带的方 ...

  4. 【C++复习】第八章 多态性(1)(多态类型、运算符重载)

    1.多态性 1.1 什么是多态? 多态是指相同消息被不同对象接收后导致不同的行为,所谓消息是指对类成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数. 消息在C++编程中指的是对类的成员 ...

  5. Java-面向对象基础 this& 重载

    1.this表示当前对象 获取当前对象的属性 使用this调用当前属性 2.重载 如果两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载

  6. Promise的几个方法解析

    Promise.all 此方法在集合多个 promise 的返回结果时很有用. 输入的promise中只要有一个reject,即进入reject,否则会进入then 完成(Fulfillment):在 ...

  7. Vue 更改数组中的值,页面不刷新问题。解决方法+原理说明

    一.Vue 更改数组中的值,页面不刷新问题 data{ hobby:["打游戏","想静静","发呆"] } 1.错误写法(页面不刷新): ...

  8. (转).Net Web开发技术栈

    作者:小曾出处:http://www.cnblogs.com/1996V/p/7700087.html 有很多朋友有的因为兴趣,有的因为生计而走向了.Net中,有很多朋友想学,但是又不知道怎么学,学什 ...

  9. 手把手教你用Typora自动上传到picgo图床【教程与排坑】

    手把手教你用Typora自动上传到picgo图床[教程与排坑] 参考链接: 1. https://blog.csdn.net/disILLL/article/details/104944710?utm ...

  10. Django和DRF的区别

    Django和DRF的区别 一.Django REST Framwork 和 Django 1.两者的概念: Django REST Framwork: 将数据库的东西通过ORM的映射取出来,通过vi ...