title: set TEdit.PasswordChar property in TEdit.onEnter event causes TEdit can not show selection and cursor in Delphi XE seattle
body: <p>I placed a TEdit control on a form, for a password. My aim is, let the TEdit control show asterisks when it's not focused, to avoid other people seeing it, and reveal the password to allow editing when focused. </p>
  
  <p>To achieve this, I added OnEnter and OnExit handler to set PasswordChar property to #0 and '*' accordingly. </p>
  
  <p>This worked well in Delphi 7, but went wrong in Delphi XE seattle, the TEdit control went into a strange state that it didn't show the blinking edit cursor, nor the highlighted blue backgrounded selection after the OnEnter event triggered (in which the PasswordChar is set to #0).</p>
  
  <p>I stepped into the TEdit control source code in debug mode, and found the TEdit control will recreate its some handle (I don't know much of Windows API) when setting PasswordChar. I guess this caused the problem, but not sure, and don't know how to avoid it.</p>
  
  <p>Please help me out of this, I've tried a lot and didn't find a way.</p>
  
  <p>Here is the simplest test program:</p>
  
  <pre><code>type
    TTestForm = class(TForm)
      Edit1: TEdit;
      Edit2: TEdit;
      procedure Edit1Enter(Sender: TObject);
      procedure Edit1Exit(Sender: TObject);
    private
      { Private declarations }
    public
      { Public declarations }
    end;
  
  var
    TestForm: TTestForm;
  
  implementation
  
  {$R *.dfm}
  
  procedure TTestForm.Edit1Enter(Sender: TObject);
  begin
    Edit1.PasswordChar := #0;
  end;
  
  procedure TTestForm.Edit1Exit(Sender: TObject);
  begin
    Edit1.PasswordChar := '*';
  end;
  
  end.
  </code></pre>
  
  <p>dfm:</p>
  
  <pre><code>object TestForm: TTestForm
    Left = 0
    Top = 0
    Caption = 'TestForm'
    ClientHeight = 242
    ClientWidth = 472
    Color = clBtnFace
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -11
    Font.Name = 'Tahoma'
    Font.Style = []
    OldCreateOrder = False
    PixelsPerInch = 96
    TextHeight = 13
    object Edit1: TEdit
      Left = 72
      Top = 48
      Width = 225
      Height = 21
      PasswordChar = '*'
      TabOrder = 0
      Text = 'You can not see text selection'
      OnEnter = Edit1Enter
      OnExit = Edit1Exit
    end
    object Edit2: TEdit
      Left = 72
      Top = 75
      Width = 225
      Height = 21
      TabOrder = 1
      Text = 'Click this control to trigger TEdit1.OnExit'
    end
  end
  </code></pre>