Страница 1 из 1

скрыть пароль звездочками

Добавлено: 25 авг 2005, 21:35
Duncon
Люди, как при вводе пороля скрыть его звездочками????

test.dpr

Код: Выделить всё

program X;
{%File 'ModelSupport\Unit1\Unit1.txvpck'}
{%File 'ModelSupport\default.txvpck'}
uses
  Forms,
  Dialogs,
  Controls,
  Unit1 in 'Unit1.pas' {Form1},
{$R *.res}
var
  Passwrd: String;
begin
  if InputQuery(' Duncon','введи пароль', Passwrd) then
    if Passwrd = 'k' then
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end
   else
      MessageDlg('Неправильный пароль, приложение будет закрыто.', mtError, [mbok], 0);
end.

Добавлено: 26 авг 2005, 00:36
Игорь Акопян
а что мешает своять свою формочку и запустить её самой первой?
все наследники TCustomEdit имеют свойство PasswordChar, который, будучи установлен в ненулевое значение (#0), рисует при вводе указанный символ

Добавлено: 26 авг 2005, 11:34
Duncon
Ну это можно только не интересно, хочеться именно этот скрипт замучить...

Добавлено: 29 авг 2005, 11:12
Игорь Акопян
в InputQuery не скроешь. Могу предложить создать формочку о которой я писал выше в рунтайме - но это изврат, имхо ;)

Добавлено: 29 авг 2005, 14:21
Duncon

Код: Выделить всё

 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);
     { 
      hButton := FindWindowEx(hInputForm, 0, 'TButton', nil); 
      SendMessage(hButton, WM_SETTEXT, 0, Integer(PChar('Cancel'))); 
    }
     SendMessage(hEdit, EM_SETPASSWORDCHAR, Ord('*'), 0);
   end;
 end;
 procedure TForm1.Create(Sender: TObject);
 var
   InputString: string;
 begin
   PostMessage(Handle, InputBoxMessage, 0, 0);
   InputString := InputBox('Input Box', 'Please Enter a Password', '');
 end;
Говорю же не интересно...

Добавлено: 23 сен 2005, 07:26
Dimas
Пример в котором компоненту класса TEdit или Edit с координатами Pos маска ввода устанавливается в '*'.

Код: Выделить всё

procedure SetEditMask(pos: TPoint);
var
  Wnd : HWND;
  a: LongBool;
  lpClassName: array [0..$FF] of Char;
begin
  Wnd := WindowFromPoint(pos);
   //Получаем ссылку на компонент находящийся на координатах
  GetClassName (Wnd, lpClassName, $FF);
   //Получаем класс компонента
  if ((strpas(lpClassName) = 'TEdit') or (strpas(lpClassName) = 'EDIT')) then
   //Если это TEdit или Edit
    PostMessage (Wnd, EM_SETPASSWORDCHAR, 42, 0);
   //Посылаем сообщение PASSWORDCHAR := 42 (код звёздочки)
  InvalidateRect(Wnd,nil,a);
   //Перерисуем окно
end;
Нет ни чего ни возможного, бывает только очень сложно.

Добавлено: 12 июл 2006, 16:11
Madshall
У компонента TEdit есть поле PasswordChar. Ставишь там хоть звездочку, хот пимпочку-пофиг, будет закрывать твой пароль.

Добавлено: 12 июл 2006, 19:19
Duncon
Я уже не помню чем я страдал 2 года назад, но вопрос здесь явно стоял конкретно по представленному примеру (1 пост)...

зы Закройте или убейте тему...