![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Участник клуба
Регистрация: 08.03.2008
Сообщений: 1,537
|
![]()
Такой вопросик.
Есть такая конструкция if inputbox('Введите пароль', 'Password', '')='123' then .... Так вот при наборе пароля в диалоговом окне (выводится функцией inputbox) набираемый текст виден. Хотелось бы чтоб вместо текста были ***. Кто знает как "обмануть" inputbox, напишите буду признателен. Как сотворить модальную форму и изменить в Edit свойство PasswordChar я и сам знаю. ЗЫ. Если ктото скажет не бери дурного в голову я не обижусь ![]() ![]() |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
inputBox/InputQuery (dialogs.pas) - обычное создание формы с добавлением к ней необходимых компонентов и вызов ShowModal. Все переменные локальные для этой процедуры, т.е. прямого доступа нет.
Вариант решения - взять ее исходный код в Ваш модуль и подправить где нужно. see also LoginDialog (dbLogDlg.dcu) PasswordDialog (dbPWDlg) |
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 08.03.2008
Сообщений: 1,537
|
![]()
А обязательно исходник функции править в своем модуле?
Пробовал добавить строчечку в dialogs.pas и перезапустить Delphi не помогло часть текста из dialogs.pas: function InputQuery(const ACaption, APrompt: string; var Value: string): Boolean; var Form: TForm; Prompt: TLabel; Edit: TEdit; DialogUnits: TPoint; ButtonTop, ButtonWidth, ButtonHeight: Integer; begin ........ Edit := TEdit.Create(Form); with Edit do begin Parent := Form; Left := Prompt.Left; Top := MulDiv(19, DialogUnits.Y, 8); Width := MulDiv(164, DialogUnits.X, 4); MaxLength := 255; // Добавил PasswordChar := #42; // Пробовал PasswordChar := '*'; не помогло Text := Value; SelectAll; end; ................... Так и должно быть или где ![]() |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
![]()
Если править в Source\VCL\, придется скомпилировать заново всю библиотеку VCL, т.к. модули взаимосвязаны и при линковке проверяется их дата создания. Один dialogs.pas перекомпилировать не получится.
Проще сделать свой unit - например dialogsEx.pas, вынести туда нужный код и использовать этот модуль: if DialogEx.InputQuery(... |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как у Inputbox узнать, что была нажата кнопка Сancel? | Artem | Компоненты Delphi | 2 | 02.04.2011 23:31 |