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.