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

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Закрыто
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Люди, как при вводе пороля скрыть его звездочками????

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.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

а что мешает своять свою формочку и запустить её самой первой?
все наследники TCustomEdit имеют свойство PasswordChar, который, будучи установлен в ненулевое значение (#0), рисует при вводе указанный символ
Изображение
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Ну это можно только не интересно, хочеться именно этот скрипт замучить...
[syntax=Delphi] [/syntax]
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

в InputQuery не скроешь. Могу предложить создать формочку о которой я писал выше в рунтайме - но это изврат, имхо ;)
Изображение
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

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

 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;
Говорю же не интересно...
Dimas
Сообщения: 7
Зарегистрирован: 23 сен 2005, 06:40

Пример в котором компоненту класса 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;
Нет ни чего ни возможного, бывает только очень сложно.
Madshall
Сообщения: 19
Зарегистрирован: 21 июн 2006, 18:12

У компонента TEdit есть поле PasswordChar. Ставишь там хоть звездочку, хот пимпочку-пофиг, будет закрывать твой пароль.
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

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

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