我先前曾修改过TEDIT,使其数据右对齐,可是每次我都要输入一次,然后跳到其他文本框后,再回来之后才可以正常有对齐(开始运行初期都是默认对齐方式).还有我在设计登录窗口的时候,想开始'登录'按钮不可用,每次我都要输入一次,还是不可用,再输入一次才正常显示,这是怎么回事!

解决方案 »

  1.   

    设计登录窗口的时候,想开始'登录'按钮不可用,每次我都要输入一次,还是不可用,再输入一次才正常显示,这是怎么回事!
    ================================================================================
    那要看你自己是怎么控制按钮的Enabled属性的,又是在哪个事件中控制的。
      

  2.   

    简单例子,设计时设按钮
    Botton.Enabled := False;//在TEdit的OnChange事件判断
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
      Button1.Enabled := Edit1.Text <> '';
    end;
      

  3.   

    我的程序是这样的
    procedure tform1.edit1change(sender:tobject);
    begin
    if(trim(edit1.text)<>'')and(trim(edit2.text)<>'')then
    bitbtn1.enabled:=true
    else
    bitbtn1.enabled:=false;
    end;
      

  4.   

    我知道了,你把2个Edit的OnChange都指向一个方法。
      

  5.   

    Edit1和Edit2共用一个事件方法就行了
      

  6.   

    阿发伯正解!如果你只是在edit1的Onchange事件中注入这些代码,那只能是在edit1的内容发生变化时才会触发,而在edit2中是不行的!
      

  7.   

    procedure TForm3.Edit1Change(Sender: TObject);
    var 
    lStyle:Integer;
    begin
      lStyle:=GetWindowLong(edit1.Handle,GWL_STYLE);
      SetWindowLong(edit1.Handle, GWL_STYLE,lStyle or ES_RIGHT );
    end;那上面的问题是,文本框内容居右对齐,开始时还是左对齐,后来从别的文本框条回来之后,才可以右对齐是怎么回事!非常感谢!
      

  8.   

    你把上述代码放到FormCreate事件中就行了
      

  9.   

    果然厉害!谢谢阿发伯,我还有一点问题,就是我所有的edit都要在FORMCREATE里面吗?
      

  10.   

    果然厉害!谢谢阿发伯,我还有一点问题,就是我所有的edit都要在FORMCREATE里面吗
    ==================================================================================
    是啊,如果Edit太多,可以做个循环for I := 0 to ComponentCount - 1 do
      if Components[I] is TEdit then
      with Components[I] as TEdit do
      begin
        lStyle:=GetWindowLong(Handle,GWL_STYLE);
        SetWindowLong(Handle, GWL_STYLE,lStyle or ES_RIGHT );
      end;