其实就是这样的,我有几个EDIT,我希望的是,edit就像一些网页上的,没点击时提示你改填什么,点击后就把提示的文字消除,如果没填在其他控件了,就显示提示。但是个个控件的提示文字不一样,没弄个控件就要花费不少时间,有没什么重载的方法,把EDIT的onclick \ onexit 事件中添加一个STRING得形参,然后就能用省了不少代码~请知道的好人答一下,虽然是刚学,但是我相信DELPHI会教会我很多东西。

解决方案 »

  1.   

    onenter  和onexit 事件能满足你的需求。
      

  2.   

    hilt这个个属性的,你把鼠标放上去就可以了出现提示
      

  3.   

    我知道这些事件能处理我的问题,但是我想如果没个EDIT都要这么个设置的话,那真的是重复工作,只是提示不一样而已。至于hint,我不是要那种效果。希望有人帮手~
      

  4.   

    那就继承tedit,然后改写里面的函数吧
      

  5.   

    不知道我的理解是不是正确   首先 你将所有的edit控件的hit 设置成你想显示的值(你的要求也需要给每一个edit设置值才可以)然后 选择一个edit 写 enter和exit事件  
    如下procedure TForm1.Edit1Enter(Sender: TObject);
    begin
     TEdit(Sender).Text:=TEdit(sender).Hint;
    end;procedure TForm1.Edit1Exit(Sender: TObject);
    begin
    TEdit(Sender).Text:='';
    end;
    然后再将所有的edit的enter和exit事件指向edit1的enter和exit事件 
      

  6.   

    property  OnEnter:TNotifyevent read FEnter write FEnter;{定义事件} procedure TForm.Enter(Sender: TObject); 
    begin 
    //实现你要的功能TEdit(Sender).Text:= 
    end; //页面初始化时 
    for i := 0 to Self.ComponentCount - 1 do 
    begin 
        if Self.Components[i] is TEdit then 
        begin 
          TEdit (Self.Components[i]).OnEnter := Enter; 
           //其他事件也在这里赋值比如Exit
        end; 
    end;
      

  7.   

    用CreateWindowEx函数可以满足你的要求。就像你网线没插好时任务栏右下角的那个提示一样。如果你需要写出完整的代码,希望你能再加点分。
      

  8.   

    可以从TEdit继承,新建一个公开的DefaultValue属性和一个内部管理的Changed属性,重载Change属性。
    想要简单的话,也可以放一个一模一样的Edit控件叠在原来的Edit控件上,以达到类似的效果。
    可以把相关的代码放在自己的新Class下(这里只是一个大致的代码):
      TSuperEdit= class
      protected
        F_Owner: TEdit;
        F_Mask: TEdit;
        procedure OwnerExit(Sender:TObject);
        procedure MaskEnter(Sender: TObject);
      public
        constructor Create(Owner: TEdit; DefaultValue: String);
        destructor Destroy;
      end ;...
    constructor TSuperEdit.Create(Owner: TEdit; DefaultValue: String);
    var
      r,r1: TRect;
    begin
      Owner.Text := '';
      F_Owner := Owner;
      F_Mask := TEdit.Create(Owner.Owner);
      F_Mask.Parent := Owner.Parent;
      F_Mask.Visible := False;
      F_Mask.Text := DefaultValue;
      F_Mask.BorderStyle := Owner.BorderStyle ;
      self.F_Mask.Font.Color := clGray;
      r:= Owner.ClientRect;
      F_Mask.SetBounds(F_Owner.Left, F_Owner.Top, F_Owner.Width , F_Owner.Height);
      F_Mask.BringToFront;
      F_Mask.Visible := True;
      F_Mask.OnEnter := MaskEnter;
      F_Owner.OnExit := OwnerExit;
    end;destructor TSuperEdit.Destroy;
    begin
      F_Mask.OnEnter := nil;
      F_Owner.OnExit := nil;
      F_Owner.Free ;
    end;procedure TSuperEdit.MaskEnter(Sender: TObject);
    begin
      F_Owner.SetFocus ;
      F_Mask.SendToBack ;
      F_Mask.Visible := False;
    end;procedure TSuperEdit.OwnerExit(Sender: TObject);
    begin
      if F_Owner.Text = '' then
      begin
        F_Mask.BringToFront ;
        F_Mask.Visible := True;
      end ;
    end;
    ...最后使用时可以用以下代码
    ...
      superEdit: TSuperEdit;
    ...
      SuperEdit := TSuperEdit.Create(YourEditComponent, 'Please Input Value');
      

  9.   

    用onchange事件,判断当前edit的text是否为空,作出你要的操作就可以了