![]() |
Inputbox mit Passwordchar
Hallo Leute!
Ich suche eine Komponente wie das Inputquery, in der ich den Text als "*" darstellen kann. Oder gibt es vll eine Möglichkeit das bei einem Inputquery einzustellen, da es ja nicht im OI aufgeführt wird. MfG Damaster |
Re: Inputbox mit Passwordchar
Ich weiß zwar nicht, was du mit Inputquery meinst, aber du kannst doch im OnKeyDown-Event das Sternchen setzen und dir die eigentliche Eingabe merken.
Oder du benutzt ein gleich eine Komponente, die deine Anforderungen erfüllt. |
Re: Inputbox mit Passwordchar
TEdit kann das auch... Musst nur PasswortChar (oder wie das heißt^^) auf * setzem
|
Re: Inputbox mit Passwordchar
Das ist soweit ja auch klar.
Ein Inputquery ist ein Popup-Dialog, in dem der Benutzer eine Eingabe tätigen kann. Also ein Dialog, der aus einem "Editfeld" und 2 Buttons besteht. Das Problem ist das man ihn wie eine Funktion aufruft. Also kann ich da nirgends Passwordchar einstellen. Trotzdem Danke für die schnellen Antworten. |
Re: Inputbox mit Passwordchar
Dann seh ich im Moment keine andere Möglichkeit als dieses Inputquery selbst nachzubilden und nicht auf die vorgefertigte Funktion zuzugreifen.
|
Re: Inputbox mit Passwordchar
ok, das werde ich dann wohl heute Abend mal tun.
Trotzdem Danke! |
Re: Inputbox mit Passwordchar
|
Re: Inputbox mit Passwordchar
Und wenn Du InputQuery unbedingt ohne Änderung nutzen willst, kannst Du die eingesparte Zeit wieder vergeuden indem Du z.B. einen Thread erstellst, der Dir das Edit für die Passworteingabe patcht ;)
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TSetPasswordCharThread = class(TThread) private FWindowTitle : string; FSecondsToWait : extended; FPasswordChar : char; public constructor Create(AWindowTitle : string); procedure Execute; override; end; TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses dateutils; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var APassword : string; begin APassword := StringOfChar(#32, 10); // Suche nach dem Fenster über den Titel und Edits mit Passwordchar patchen TSetPasswordCharThread.Create('Authentifizierung'); InputQuery('Authentifizierung', 'Passwort', APassword); end; { TSetPasswordCharThread } function EnumChildProc(Wnd: hWnd; PwdChar : Longint): BOOL; stdcall; var szFull: array[0..MAX_PATH] of Char; begin Result := Wnd <> 0; if Result then begin GetClassName(Wnd, szFull, SizeOf(szFull)); if AnsiUppercase(szFull) = 'TEDIT' then SendMessage(Wnd, EM_SETPASSWORDCHAR, PwdChar, 0); EnumChildWindows(Wnd, @EnumChildProc, PwdChar); end; end; constructor TSetPasswordCharThread.Create(AWindowTitle : string); begin inherited Create(True); FreeOnTerminate := true; FWindowTitle := AWindowTitle; FSecondsToWait := 3; FPasswordChar := '*'; Resume; end; procedure TSetPasswordCharThread.Execute; var StartTime : TDateTime; HPwdWindow : HWnd; begin StartTime := now; while not Terminated do begin sleep(50); if (SecondsBetween(now, StartTime) > FSecondsToWait) then Terminate; HPwdWindow := FindWindow(nil, PAnsiChar(FWindowTitle)); if HPwdWindow > 0 then begin EnumChildWindows(HPwdWindow, @EnumChildProc, Ord(FPasswordChar)); Terminate; end; end; end; end. |
Re: Inputbox mit Passwordchar
Hallo Damaster,
mir hat das: ![]() MfG Kutter111 |
AW: Inputbox mit Passwordchar
Eine Lösung für Delphi XE und aufwärts besteht darin, dem InputQuery() Aufruf im zweiten Parameter ein #31 voranzustellen.
Code:
Grußif InputQuery('Caption', #31 + 'Bitte geben Sie das Passwort ein', strIrgendEineVariable ) then begin // Rückgabe prüfen.... if strIrgendEineVariable = '' then // Was auch immer end; Christian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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