Frage

Eingabefeld:

answer:=Inputbox('a','b','c');

Funktioniert gut, aber ich suche eine maskierte, wie ein Passwortbox, in dem Sie nur kleine Sterne anstelle der getippten Zeichen sehen.

War es hilfreich?

Lösung

Sie können eine Windows -Nachricht an das von der Bearbeitungssteuerung erstellte Bearbeitungssteuerung senden InputBox, Dies wird die Bearbeitungssteuerung für den Passworteintrag markieren. Code unten genommen von genommen von http://www.swissdelphicenter.ch/en/showcode.php?id=1208:

const
   InputBoxMessage = WM_USER + 200;

type
   TForm1 = class(TForm)
     Button1: TButton;
     procedure Button1Click(Sender: TObject);
   private
     procedure InputBoxSetPasswordChar(var Msg: TMessage); message InputBoxMessage;
   public
   end;

var
   Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.InputBoxSetPasswordChar(var Msg: TMessage);
var
   hInputForm, hEdit, hButton: HWND;
begin
   hInputForm := Screen.Forms[0].Handle;
   if (hInputForm <> 0) then
   begin
     hEdit := FindWindowEx(hInputForm, 0, 'TEdit', nil);
     {
       // Change button text:
       hButton := FindWindowEx(hInputForm, 0, 'TButton', nil);
       SendMessage(hButton, WM_SETTEXT, 0, Integer(PChar('Cancel')));
     }
     SendMessage(hEdit, EM_SETPASSWORDCHAR, Ord('*'), 0);
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   InputString: string;
begin
   PostMessage(Handle, InputBoxMessage, 0, 0);
   InputString := InputBox('Input Box', 'Please Enter a Password', '');
end;

Andere Tipps

In xe2, InputBox() und InputQuery() wurden aktualisiert, um die Maskierung der Maskierung nativ zu unterstützen TEdit Eingabe, obwohl diese Funktion noch nicht dokumentiert wurde. Wenn der erste Charakter der APrompt Der Parameter wird auf jeden Wert eingestellt #32 dann ist die TEdit.PasswordChar wird eingestellt auf *, z.B:

answer := InputBox('a', #31'b', 'c');

Die InputBox ruft die Eingabequeritätsfunktion in Dialogen auf, wodurch das Formular dynamisch erstellt wird. Sie können jederzeit eine Kopie dieser Funktion erstellen und die Passwort -chictary -Eigenschaft des Tedit ändern.

Ich glaube nicht, dass Delphi so etwas aus der Schachtel enthält. Vielleicht finden Sie einen bei http://www.torry.net/ oder anderswo im Netz. Ansonsten schreibe einfach selbst eine selbst - sollte nicht so schwer sein. :-) Sie können sich sogar den Quellcode ansehen, wenn Sie eine "groß genug" Delphi-Version haben.

Uli.

Sie können InputQuery anstelle von InputBox verwenden. Wenn das wahre Argument festgelegt ist, wird das Kennwortfeld maskiert.

InputQuery('Authenticate', 'Password:',TRUE, value);     

Einige Ressourcen hier; http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputquery.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top