zoukankan      html  css  js  c++  java
  • DBEditEh/Edit 文本框内容空白时加上提示文字,输入内容时提示文字不显示

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

    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. 
  • 相关阅读:
    Web Control 开发系列(三) 解析IPostBackEventHandler和WebForm的事件机制
    Web Control 开发系列(一) 页面的生命周期
    异步导入滚动条
    前端复习之HTML5
    前端复习之jQuery大全
    前端复习之JavaScript(ECMAScript5)
    前端复习之DOM、BOM
    前端复习之Ajax,忘完了
    前端复习之css
    前端基础复习之HTML
  • 原文地址:https://www.cnblogs.com/wissly/p/15614616.html
Copyright © 2011-2022 走看看