에서 InputBox :암호 입력을위한 Delphi InputBox?
answer:=Inputbox('a','b','c');
잘 작동하지만, 당신은 작은 별 대신에 입력 된 문자를 참조 암호 상자처럼 마스크 하나를 찾고 있어요.
에서 InputBox :암호 입력을위한 Delphi InputBox?
answer:=Inputbox('a','b','c');
잘 작동하지만, 당신은 작은 별 대신에 입력 된 문자를 참조 암호 상자처럼 마스크 하나를 찾고 있어요.
InputBox
으로 작성된 편집 컨트롤에 Windows 메시지를 보내면 암호 입력 편집 컨트롤이 플래그로 표시됩니다. 코드는 다음과 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;
저는 델파이가 이런 것들을 포함하고 있다고 생각하지 않습니다. 어쩌면 http://www.torry.net/ 또는 인터넷의 다른 곳에서 찾을 수 있습니다. 그렇지 않으면 너 자신을 쓰십시오 - 그렇게 열심히해서는 안됩니다. :-) "충분히 큰"Delphi 버전을 가지고 있다면 소스 코드를 볼 수도 있습니다.
울리.
InputBox는 Dialogs에서 InputQuery 함수를 호출하여 대화 상자를 동적으로 만듭니다. 이 함수의 복사본을 만들고 TEdit의 PasswordChar 속성을 변경할 수 있습니다.
이 XE2에서 InputBox()
및 InputQuery()
는 기본적으로 TEdit
입력을 마스킹 지원하도록 업데이트되었다, 그 기능은 아직 문서화되지 않았지만. APrompt
매개 변수의 첫 번째 문자는 임의의 값으로 설정되어있는 경우 < #32
다음 TEdit.PasswordChar
는 *
로 설정됩니다 예 :
answer := InputBox('a', #31'b', 'c');
이제는 직관적입니다! –
그들은 다중 프롬프트와'OnCloseQuery' 콜백에 대한 새로운 매개 변수로'InputQuery()'(내부적으로'InputBox()'가 사용하는)를 확장하는 데 어려움을 겪었습니다. 그러나 그들은 새로운 매개 변수를 만들지는 않았습니다. 암호 마스킹을 지정 하시겠습니까? 다중 프롬프트는 프롬프트 당 마스킹을 지원하지만 인터페이스를보다 직관적으로 만들 수 있습니다. 특수 선두 문자가있는 문자열 배열을 사용하는 대신 문자열/마스크 쌍을 포함하는 레코드 배열을 사용해야합니다. 그러면 TEdit 컨트롤을보다 세밀하게 제어하기 위해 미래의 필드를 추가 할 수있게되었습니다. 그러나. –
와우! 실행을 연기하는 우아한 방법 :-) –