[제목 ] InputQuery에 PasswordChar 적용
[출처 ]
http://www.delphikorea.com/board2007/bbs/view.php?id=lecture&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=1044
[개요]
간단한 text입력이 필요할때 InputQuery를 이용해서 받을수 있습니다.
하지만 password를 입력받을땐 VCL에서 InputQuery처럼 지원하는 함수가 없는걸로 알고있습니다.
그래서 InputQuery에 PasswordChar를 적용하여 사용하면 편리할것 같습니다.
아래코드는 위사이트에 Delphi로 된 코드를 C++Builder로 변환한것입니다.
[코드]
// Input Query도 Form이기 때문에 Form에서 특정컨트롤을 찾아서 PasswordChar를 먹인다
void __fastcall TForm1::WMInputQuery(TMessage &message )
{
for( int i = 0 ; iFormCount ;i++ )
{
if( Screen->Forms[i]->Caption == "암호" )
{
for(int j =0 ;j< Screen->Forms[i]->ControlCount;j++ )
{
String sClsName=Screen->Forms[i]->Controls[j]->ClassName();
if ( sClsName == "TEdit" )
{
((TEdit*)Screen->Forms[i]->Controls[j])->PasswordChar = '*';
((TEdit*)Screen->Forms[i]->Controls[j])->SelectAll();
return;
}
}
}
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String PassWord;
PostMessageA(Handle, CM_PASSWORD, 0, 0); // 메시지 날리기
if(InputQuery("암호", "암호를 입력 하세요. ", PassWord))
{
ShowMessage(PassWord);
}
}
//---------------------------------------------------------------------------
//======================================================
//---------------------------------------------------------------------------
#define CM_PASSWORD WM_USER + 10
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void __fastcall TForm1::WMInputQuery(TMessage &message );
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_PASSWORD,TMessage,WMInputQuery)
END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
|