Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Windows XP-Passwortfelder


AXMD - So 03.08.03 18:43
Titel: Windows XP-Passwortfelder
Hi,

trotz XP-Manifest bringe ich in meinem Programm keine anständigen Passwortfelder im XP-Style zustande. Welche Eigenschaft muss die PasswordChar-Property des Edits haben damit ich Passwortfelder im XP-Style sehe?

AXMD


Aya - So 03.08.03 18:49

Hi,

versuch es mal hiermit -> • (per Copy&Paste)

Au'revoir,
Aya~


AXMD - So 03.08.03 18:51

THX, auf das hätt ich auch selbst kommen können ;)

AXMD


AXMD - Fr 15.08.03 12:38

Habs gerade ausprobiert (hatte vorher keine Zeit): funzt nicht :(

AXMD


TimonWorld - Fr 15.08.03 12:56

Gib in den MaskEdit als PasswortChar #149 ein! PS.: Du musst als Font nehmen: Verdana!!!


Delete - Fr 15.08.03 13:06

Problem erkannt, Gefahr gebannt:
http://www.delphipraxis.net/topic7442.html&start=30#53149

:)


Tino - Mo 18.08.03 08:12

MathiasSimmack hat folgendes geschrieben:
Problem erkannt, Gefahr gebannt

Hier die entsprechende Antwort:
MathiasSimmack hat folgendes geschrieben:
Illuminator-23-5 hat folgendes geschrieben:
also bei mir kommen bei * als pwChar keine punkte raus!


silent hat folgendes geschrieben:
also ich benutze die XP Manifest von delphi 7...und wenn ich sterne als char eingebe sind es auch welche...


Chewie hat folgendes geschrieben:
Hm, dann hab ich die Erklärung im PSDK falsch verstanden.

Die Erklärung im PSDK sagt doch nur aus, dass üblicherweise das Sternchen benutzt wird, wenn man ein Editfeld mit dem Stil ES_PASSWORD erstellt. Spendiert man seinem Programm dann für XP ein Manifest, benutzt Windows stattdessen den Punkt.

Das Stilattribut hat aber nichts mit dem Zeichen zu tun, das ihr im Objektinspektor von Delphi angebt. Im Gegenteil: dieses Zeichen sorgt für nur die Ausführung der Message EM_SETPASSWORDCHAR, womit auch klar wird, warum ein Sternchen (im OI) auch mit XP-Manifest ein Sternchen bleibt. Wenn ihr ein Sternchen eintippt, warum sollte es ein Punkt werden? :)

Mit Hilfe des API-Weges lässt sich das auch beweisen: Wer hat, schaut sich Luckies Edit-Demo aus den Tutorials an und gibt einem der Controls das ES_PASSWORD-Attribut. Und dann sieht man auch, dass das bearbeitete Edit-Control die Punkte benutzt. Entfernt man das Manifest aus den Ressourcen, dann ist es wieder das Sternchen.
(Auch wenn ich in Luckies-Supportforum was anderes gesagt habe: es liegt tatsächlich am eingebundenen Manifest, dass ein paar der Demos bei aktivem XP-Theme nichts anzeigen. Um das Problem zu lösen, bindet man einfach die CommCtrl-Unit ein und ruft "InitCommonControls" auf. Das war´s, dann funktionieren die Demos wieder.)

Im Prinzip fehlt dieser Schritt (Passwortstil ein- und ausschalten) bei den VCL-Edits. Dazu müsste es im Objektinspektor bspw. eine Bool-Eigenschaft geben, mit der man das o.g. Attribut ein- bzw. ausschalten kann. Aber mit dem Zeichen für das Passwort hat das nichts zu tun.

Gruß


Delete - Mo 18.08.03 08:49

Richtig. :oops: Ich war halt faul ...

Als Ergänzung: Wer will und sich damit auskennt, erstellt eine neue Komponente auf der Basis von TEdit. Dann wird für den Objektinspektor eine neue Eigenschaft (EnablePwdMode, ...) geschrieben, die nichts weiter macht, als den Stil ES_PASSWORD zu setzen oder zu entfernen. Unabhängig vom PasswordChar!

Dann wird -mit XP-Manifest!- das Sternchen zum Punkt, wenn man den Modus aktiviert.

Grüße.