Das TEdit-Control von Delphi besitzt zwar die Eigenschaft "PasswordChar", jedoch ist es nur sehr schwer möglich, die von Windows XP gewohnten schwarzen Punkte nutzen zu können.
Die nachfolgende
Unit ist ein modifizierter Erbe des TEdit-Controls, das bei aktivierten Themes die schwarzen Punkte als Passwort-Zeichen verwendet. Sind die Themes deaktiviert, wird das altbekannte * als Passwort-Zeichen verwendet.
Delphi-Quellcode:
unit PasswordEdit;
interface
uses
Windows, Classes, Controls, StdCtrls;
type
TPasswordEdit =
class(TCustomEdit)
protected
procedure CreateParams(
var Params: TCreateParams);
override;
public
constructor Create(AOwner: TComponent);
override;
published
property AutoSelect;
property AutoSize;
property BiDiMode;
property BorderStyle;
property CharCase;
property Color;
property DragCursor;
property DragKind;
property DragMode;
property Enabled;
property HideSelection;
property ImeMode;
property ImeName;
property MaxLength;
property OEMConvert;
property ParentBiDiMode;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ReadOnly;
property ShowHint;
property TabOrder;
property TabStop;
property Text;
property Visible;
property OnChange;
property OnClick;
property OnContextPopup;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDock;
property OnEndDrag;
property OnEnter;
property OnExit;
property OnKeyDown;
property OnKeyPress;
property OnKeyUp;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
property OnStartDock;
property OnStartDrag;
property Anchors;
property Constraints;
end;
procedure Register;
implementation
uses
Forms;
procedure Register;
begin
RegisterComponents('
XP', [TPasswordEdit]);
end;
constructor TPasswordEdit.Create(AOwner: TComponent);
const
FavouredFonts:
array[0..2]
of String = ('
Tahoma', '
Arial', '
MS Sans Serif');
var
I: Integer;
begin
inherited;
I := Low(FavouredFonts);
while (I <= High(FavouredFonts))
and (Screen.Fonts.IndexOf(FavouredFonts[I]) < 0)
do
Inc(I);
if I <= High(FavouredFonts)
then
Font.
Name := FavouredFonts[I];
end;
procedure TPasswordEdit.CreateParams(
var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style
or ES_PASSWORD;
end;
end.