質問

入力ボックス:

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

うまく機能しますが、入力された文字の代わりに小さな星しか見えないパスワードボックスのように、マスクされたものを探しています。

役に立ちましたか?

解決

によって作成された編集コントロールにWindowsメッセージを送信できます InputBox, 、パスワードエントリの編集コントロールにフラグを立てます。以下のコードから取得 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;

他のヒント

xe2で、 InputBox()InputQuery() ネイティブにマスキングをサポートするために更新されました TEdit 入力は、その機能はまだ文書化されていません。の最初の文字の場合 APrompt パラメーターは任意の値に設定されます #32 そうして TEdit.PasswordChar に設定されます *, 、例:

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

入力ボックスは、ダイアログの入力Query関数を呼び出します。これにより、フォームが動的に作成されます。この関数のコピーをいつでも作成し、TeditのPasswordCharプロパティを変更できます。

Delphiにはそのようなものが含まれているとは思わない。たぶん、あなたはそれを見つけることができます http://www.torry.net/ またはネットの他の場所。そうでなければ、自分で書くだけです - それほど難しくないはずです。 :-)「十分な大きさの」Delphiバージョンがある場合は、ソースコードを見ることもできます。

ウリ。

入力ボックスの代わりに入力クエリを使用できます。真の引数が設定されると、パスワードフィールドがマスクされます。

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

ここでいくつかのリソース。 http://lazarus-ccr.sourceforge.net/docs/lcl/dialogs/inputquery.html

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top