Oh stimmt, ich hatte es nicht in OnEnter drin, das ist auch das Problem.
Einfacher Workaround:
Delphi-Quellcode:
const
WM_ENTERED = WM_APP + 1292;
type
TForm21 =
class(TForm)
Edit1: TEdit;
Edit2: TEdit;
procedure Edit1Enter(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
protected
procedure WMENTERED(
var Message: TMessage);
message WM_ENTERED;
end;
var
Form21: TForm21;
implementation
{$R *.dfm}
procedure TForm21.Edit1Enter(Sender: TObject);
begin
PostMessage(
Handle, WM_ENTERED, NativeUInt(Pointer(Sender)), 0);
end;
procedure TForm21.Edit1Exit(Sender: TObject);
begin
(Sender
as TEdit).PasswordChar := '
*';
end;
procedure TForm21.WMENTERED(
var Message: TMessage);
begin
TEdit(
Message.WParam).PasswordChar := #0;
end;
// EDIT:
Ach so:
Hintergrund ist, dass durch das Vorgehen im OnEnter das
Handle des Editfenster zerstört und neu erzeugt wird. Mit dem Postmessage passiert das erst danach.