![]() |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Delphi-Quellcode:
Oder habe ich auf die schnelle etwas übersehen? (geht sicherlich auch schöner)
var
Ein,PW : ShortString; procedure TForm86.Edit1Change(Sender: TObject); begin Ein := Edit1.Text; Timer1.Enabled := true; end; procedure TForm86.Timer1Timer(Sender: TObject); var i : integer; begin Timer1.Enabled := false; for i:=1 to length(Ein) do if (Ein[i] <> '*') and (Length(Ein) > Length(PW)) then PW := PW + Ein[i]; PW[0] := Ein[0]; for i:=1 to length(Ein) do Ein[i] := '*'; Edit1.Text := Ein; Edit1.SelStart := Length(Ein); end; |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
@Mavarik Sage mal, du schaltest den Timer vor dem zu verarbeitenden Code aus, ist das gut so? Ich weiß der Code wird abgearbeitet, aber ich hatte immer bedenken bei sowas...
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Ich möchte doch nicht, dass die ganze Zeit der Timer in 250ms feuert... |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Im OnTimer-Event schaltet man doch immer den Timer aus. Oder habe ich etwas verpasst?
Sherlock |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
Wenn ich einen zyklischen Timer brauche schalte ich Ihn doch nicht ab... Wenn ich den Timer refreshen will dann ein
Delphi-Quellcode:
OK... Oder meine Routine dauert länger als das Interval des Timers (Ich hoffe nicht)... dann auch...
Timer1.Enabled := false;
Timer1.Enabled := true; |
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Wenn der Benutzer gar nicht in das Feld klicken können soll und in dem Feld selber keine Eingabe vornehmen soll, warum nimmt man dann überhaupt ein
Delphi-Quellcode:
? :gruebel:
TEdit
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Zitat:
|
AW: Passworteingabe, wie mit Sternchen verstecken, aber nicht das letzte Zeichen?
Oder einfach so
Delphi-Quellcode:
Und falls nun doch die Tastatur zugelassen werden soll, dann erreicht man das ganz simpel mit
unit Forms.MainForm;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons; type TMainForm = class( TForm ) PasswordLabel: TLabel; Num0Button: TSpeedButton; {OnClick -> NumButtonClick} Num1Button: TSpeedButton; {OnClick -> NumButtonClick} Num2Button: TSpeedButton; {OnClick -> NumButtonClick} Num3Button: TSpeedButton; {OnClick -> NumButtonClick} Num4Button: TSpeedButton; {OnClick -> NumButtonClick} Num5Button: TSpeedButton; {OnClick -> NumButtonClick} Num6Button: TSpeedButton; {OnClick -> NumButtonClick} Num7Button: TSpeedButton; {OnClick -> NumButtonClick} Num8Button: TSpeedButton; {OnClick -> NumButtonClick} Num9Button: TSpeedButton; {OnClick -> NumButtonClick} ClearButton: TSpeedButton; {OnClick -> ClearButtonClick} BackspaceButton: TSpeedButton; {OnClick -> BackspaceButtonCLick} Timer1: TTimer; procedure Timer1Timer( Sender: TObject ); procedure FormShow( Sender: TObject ); procedure NumButtonClick( Sender: TObject ); procedure BackspaceButtonClick( Sender: TObject ); procedure ClearButtonClick( Sender: TObject ); private FPassword: string; procedure AddKey( const AChar: Char ); procedure ClearPassword; procedure PresentPassword; public property Password: string read FPassword; end; var MainForm: TMainForm; implementation {$R *.dfm} uses System.StrUtils; { TMainForm } procedure TMainForm.AddKey( const AChar: Char ); begin case AChar of #8: begin if Length( FPassword ) > 0 then begin SetLength( FPassword, Length( FPassword ) - 1 ); PasswordLabel.Caption := DupeString( '*', Length( FPassword ) ); end; end; '0' .. '9': begin Timer1.Enabled := False; PasswordLabel.Caption := DupeString( '*', Length( FPassword ) ) + AChar; FPassword := FPassword + AChar; Timer1.Enabled := True; end; end; end; procedure TMainForm.BackspaceButtonClick( Sender: TObject ); begin AddKey( #8 ); end; procedure TMainForm.ClearButtonClick( Sender: TObject ); begin ClearPassword; end; procedure TMainForm.ClearPassword; begin FPassword := ''; PasswordLabel.Caption := ''; end; procedure TMainForm.FormShow( Sender: TObject ); begin PresentPassword; end; procedure TMainForm.NumButtonClick( Sender: TObject ); var Button: TComponent absolute Sender; begin AddKey( Button.Name[ 4 ] ); // Ich bin halt faul ;o) end; procedure TMainForm.PresentPassword; begin PasswordLabel.Caption := DupeString( '*', Length( FPassword ) ); end; procedure TMainForm.Timer1Timer( Sender: TObject ); begin TTimer( Sender ).Enabled := False; PresentPassword; end; end.
Delphi-Quellcode:
procedure TMainForm.FormKeyPress( Sender: TObject; var Key: Char );
begin AddKey( Key ); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz