Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Delphi 2010 - TEdit PasswordChar = #0 Bug lässt Cursor verschwinden

  Alt 17. Aug 2017, 12:29
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (17. Aug 2017 um 12:33 Uhr)
  Mit Zitat antworten Zitat