读书人

Edit如何添加提示输入的文字和图片

发布时间: 2012-05-23 13:44:13 作者: rapoo

Edit怎么添加提示输入的文字和图片?
打开窗体时Edit是这样的:

如何点击Edit后这样了:

没输入任何内容,鼠标离开(Edit失去焦点)后又恢复了:

很多搜索框都有上面类似功能的,就是不知大家是怎么实现的,所有发帖求提示求方法
(我想到一个比较麻烦的办法是在Edit上加个Label,当鼠标点击进入时就隐藏label,当鼠标离开时判断是否有输入内容,没时就显示label)

[解决办法]
放一个图片和两个重叠的文本框,获得焦点的时候,把图片和有文字的文本框隐藏掉,失去焦点则把他show出来
[解决办法]
借助edit的tag属性,tag属性默认为0,当输入文字后,tag :=1,鼠标离开时,如果没有内容,判断tag :=0,然后显示默认文字
[解决办法]
edit的事件
OnEnter时判断是否是你的提示信息 是则显示空
OnExit时判断是否空 空则继续显示你的提示信息
[解决办法]

探讨
放一个图片和两个重叠的文本框,获得焦点的时候,把图片和有文字的文本框隐藏掉,失去焦点则把他show出来

[解决办法]
用一个image和一个edit,image和edit大小一致,并重叠。
初始状态:
image.Visible:=True;
edit.Visible:=False;
在image的onClick事件中:
edit.Visible:=True;
image.Visible:=False;
edit.SetFocus;
在edit的OnExit事件中:
if Trim(edit.Text)='' then
begin
edit.Visible:=False;
image.Visible:=True;
end;

[解决办法]
用onEnter,onExit事件

Delphi(Pascal) code
const strHint='请输入关键字查找...';Form1的onCreate:  Edit1.Text=strHintEdit1的onEnter:  if Edit1.Text=strHint then     Edit1.Text:='';  Edit1.Font.Color:= clWindowText;Edit1的onExit:  if Edit1.Text='' then     Edit1.Text:=strHint;  if Edit1.Text=strHint then     Edit1.Font.Color:= clGrayText;
[解决办法]
自己派生一个新类出来。如果是 DELPHI XE的话,本身有这个组件 TButtonedEdit

Delphi(Pascal) code
  TCustomButtonedEdit = class(TCustomEdit)  private    FCanvas: TControlCanvas;    FImages: TCustomImageList;    FImageChangeLink: TChangeLink;    FLeftButton: TEditButton;    FRightButton: TEditButton;    function AdjustTextHint(Margin: Integer; const Value: string): string;    procedure ImageListChange(Sender: TObject);    procedure SetImages(const Value: TCustomImageList);    function GetOnLeftButtonClick: TNotifyEvent;    function GetOnRightButtonClick: TNotifyEvent;    procedure SetLeftButton(const Value: TEditButton);    procedure SetOnLeftButtonClick(const Value: TNotifyEvent);    procedure SetOnRightButtonClick(const Value: TNotifyEvent);    procedure SetRightButton(const Value: TEditButton);  protected    procedure DoSetTextHint(const Value: string); override;    function GetEditButtonClass: TEditButtonClass; dynamic;    procedure Notification(AComponent: TComponent; Operation: TOperation); override;    procedure UpdateEditMargins; dynamic;    procedure WndProc(var Message: TMessage); override;  public    constructor Create(AOwner: TComponent); override;    destructor Destroy; override;    procedure DefaultHandler(var Message); override;    property Images: TCustomImageList read FImages write SetImages;    property LeftButton: TEditButton read FLeftButton write SetLeftButton;    property RightButton: TEditButton read FRightButton write SetRightButton;    property OnLeftButtonClick: TNotifyEvent read GetOnLeftButtonClick write SetOnLeftButtonClick;    property OnRightButtonClick: TNotifyEvent read GetOnRightButtonClick write SetOnRightButtonClick;  end;
[解决办法]
图片可以放在Edit的前边 里边的文字可以在进入和退出事情中处理

读书人网 >.NET

热点推荐