Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TEdtit and ES_PASSWORD


lilo ©   (2005-07-16 19:01:00) 

я знаю, что во многих программах, в XP, в окнах с паролями вместо звёздочек применяют своего рода чёрные кружки, ну символы такие.
попытки применить такие же в своём проекте приводит к краху всей идеи. нет, сразу скажу, что удалось, но... фигня какая-то.
сделал так, просто у меня есть наследник TEdita и я такое приписал

procedure TMyEdit.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.Style := Params.Style or ES_PASSWORD;
end;


и всё шоколадно, показывает то, что нужно, но! он это всегда показывает, а как мне сделать такую штуку, только в том случае, когда мне нужно спрятать пароль, а потом допустим показать, вернув исходное положение?
пробовал: if passwordchar <> #0 then "это самое"^^ , но что-то не получается.. =(
что посоветуете?


Amido   (2005-07-25 12:39:00) [1]

2lilo

Всё, что Вам нужно, на сколько я понимаю - это получить номер символа ● и присвоить его свойству PasswordChar.

Производите банальную операцию:
1) кидаете на форму Button1, Memo1, Edit1;
2) пишите:

procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 for i := 0 to 255 do
   Memo1.Lines.Add(Inttostr(i)+ ' ' +char(i))
end;

3) в Мемо1 получаете:
...
146 ’
147 “
148 ”
149 •
150 –
151 —
...
Вот он, Ваш родимый кружечек под номером 149 =]
4) Далее в Object Inspector для Edit1.PasswordChar прописываете #149или же программно, как описал default © - ставите и убираете... ставите и убираете...

P.S. Не ищите сложных решений =]
...Params.Style := Params.Style or ES_PASSWORD;... мда %)


lilo   (2005-07-18 10:32:00) [2]

всё клёво, но я так и не догнал, как мне вместо допустим звёздочек * впихнуть круглые символы, кругляшки как во всех окнах с пассами в XP. я в ужасе, перепробовал всё что мог..


default   (2005-07-16 19:37:00) [3]


procedure TForm1.Button1Click(Sender: TObject);
begin
 Edit1.PasswordChar := #0
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 Edit1.PasswordChar := #65 // #X, X<>0
end;


просто работай со свойством PasswordChar


begin...end   (2005-07-16 19:32:00) [4]

> lilo   (16.07.05 19:01)

Если наследник был создан только для управления режимом показа пароля, то он (наследник) не нужен. Если у стандартного TEdit установить свойство PasswordChar не равным #0, то стиль ES_PASSWORD добавится (при создании экземпляра) автоматически. Чтобы менять режим показа, можно использовать сообщение EM_SETPASSWORDCHAR. Посмотрите в модуле StdCtrls реализацию метода TCustomEdit.SetPasswordChar.


Наверх

Титульная страница Поиск, карта сайта Написать письмо