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

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

Как в EditBox заменить символ для ввода пароля?


nester ©   (2005-10-28 11:44:00) 

Есть EditBox. У него установлено eoPassword. По умолчанию вместо вводимых символов выводится палочка | . Как заменить на свой символ - в часности обычную звездочку?
Пробовал перерисовывать ручками таким образом

procedure DrawAsterisks(c: integer; Canvas: PCanvas);
var
s: string;
i: integer;
begin
Canvas.FillRect(Canvas.ClipRect);
if (c > 0) then
begin
 s:= '';
 for i:= 1 to c do
  s:= s + '*';
 Canvas.TextOut(3,1, s+' ');
end;
end;

Это вызывалось с кавасом нужного эдита и числом звездочек.
Вызываю это на onPaint, onChange, onMouseMove, onMouseUp, onMouseDown.

Все выглядит очень хорошо, до тех пор пока пользователь не пытается выделить несколько символов сразу - тогда получается борода, - само выделение не видно, и проскакивают снова палочки.
Посоветуйте пожалуйста правильный способ.


Neutrin0   (2006-03-06 13:59:00) [1]

у кого есть исходники AST test? пожауйста поделитесь. icq 229559


nester   (2005-11-03 19:23:00) [2]

Решение нашел сам случайно.
Чтобы звездочки в теме XP не смещались нужно просто не ставить eoPassword а просто сделать
EditBox1.Perform(EM_SETPASSWORDCHAR ,Integer('*'),0);
при создании формы, тогда все работает и отступа не появляется.
Считаю дискуссию закрытой:)


nester   (2005-11-03 11:22:00) [3]

Да, на инициализацию модуля ставлю InitCommonControls.
Балалайку. Не помогло. А можно какнибудь ручками сказать отступ нулевой?
Чтото вроде EM_SETINDENT нет?
Для чистоты эксперимента:
http://195.5.17.55/asttest.zip
Тут лежит пустой проект с манифестом и с екзешником. 24Кб.
В нем все наглядно видно.
Глюк наблюдается только если выставлена схема ХР.
Если манифест стереть - глюк исчезает.


Vladimir Kladov   (2005-11-02 20:10:00) [4]

InitCommonControls ?


nester   (2005-11-02 19:26:00) [5]

Да, я проверил, этот глюк появляется при добавлении манифеста XP.
Даже если я создаю его как файл project1.exe.manifest
Вот сам манифест:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
 version="1.0.0.0"
 processorArchitecture="X86"
 name="CompanyName.ProductName.YourApp"
 type="win32"
/>
<description>Your application description here.</description>
<dependency>
 <dependentAssembly>
  <assemblyIdentity
   type="win32"
   name="Microsoft.Windows.Common-Controls"

version="6.0.0.0"
   processorArchitecture="X86"
   publicKeyToken="6595b64144ccf1df"
   language="*"
  />
 </dependentAssembly>
</dependency>
</assembly>

При этом пароль получается с отступом, а обычный текст без. Ктонибудь вышел из этой ситуации?


nester   (2005-11-02 18:57:00) [6]

Проблемма нашел в чем, она в   KOLXPMan.Если добовляю манифест - тогда появляется сдвиг вправо. Щас попробую прикрутить другой манифест


ECM   (2005-11-02 15:01:00) [7]

У меня такой эффект не проявляется....KOL2.19+D6+W2K3
Вышлите минимальный проект, где это проявляется мне на мыло...


nester   (2005-11-02 13:30:00) [8]

Спасииибо. Заработало, но с небольшим глюком.
Если положить два Эдита один под одним с одинаковыми настройками и у одного из них поставить в свойствах eoPassword, а за тем написать в обоих эдитах что-то то в парольном эдите звездочки будут заметно смещены правее, в отличии от обычного текста, никто не знает как это пофиксить?


ECM   (2005-10-28 12:40:00) [9]

procedure TxxxForm.xxxFormCreate(Sender: PObj);
...
 EditBox1.Perform(EM_SETPASSWORDCHAR ,Integer('*'),0);


Наверх

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