如何制作这种效果,鼠标点上去提示的内容就没了?
Edit控件里面输入要提示的内容,鼠标单击,提示内容消失?效果图“右上角的搜索框”
[解决办法]
设置Formcreate事件中改变Edit的Text属性,即初始文本
然后设置Edit的OnClick(鼠标点击)或OnEnter(获得焦点)事件,用Edit的Clear方法即可
下面是个OnEnter的例子,因为程序中只有Edit1,所以一开始就获得焦点,没有初始化的内容。
- Delphi(Pascal) code
interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure Edit1Enter(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin Edit1.Text:='初始化的内容';end;procedure TForm1.Edit1Enter(Sender: TObject);begin Edit1.Clear;end;end.
[解决办法]
http://blog.csdn.net/delphiteacher/article/details/6707470
- Delphi(Pascal) code
unit SkinHintEdit;interfaceuses 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: 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;implementationprocedure 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.