Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2008, 16:53   #1
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию inputbox ***

Такой вопросик.
Есть такая конструкция
if inputbox('Введите пароль', 'Password', '')='123' then ....
Так вот при наборе пароля в диалоговом окне (выводится функцией inputbox) набираемый текст виден. Хотелось бы чтоб вместо текста были ***. Кто знает как "обмануть" inputbox, напишите буду признателен.
Как сотворить модальную форму и изменить в Edit свойство PasswordChar я и сам знаю.
ЗЫ. Если ктото скажет не бери дурного в голову я не обижусь А может у когото чтото и проклюнется
Gorychev вне форума Ответить с цитированием
Старый 04.05.2008, 18:27   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

inputBox/InputQuery (dialogs.pas) - обычное создание формы с добавлением к ней необходимых компонентов и вызов ShowModal. Все переменные локальные для этой процедуры, т.е. прямого доступа нет.

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

see also
LoginDialog (dbLogDlg.dcu)
PasswordDialog (dbPWDlg)
alexBlack вне форума Ответить с цитированием
Старый 04.05.2008, 19:17   #3
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 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;
...................

Так и должно быть или где Спасибо за совет
Gorychev вне форума Ответить с цитированием
Старый 04.05.2008, 21:22   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Gorychev Посмотреть сообщение
А обязательно исходник функции править в своем модуле?
Если править в Source\VCL\, придется скомпилировать заново всю библиотеку VCL, т.к. модули взаимосвязаны и при линковке проверяется их дата создания. Один dialogs.pas перекомпилировать не получится.

Проще сделать свой unit - например dialogsEx.pas, вынести туда нужный код и использовать этот модуль:

if DialogEx.InputQuery(...
alexBlack вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как у Inputbox узнать, что была нажата кнопка Сancel? Artem Компоненты Delphi 2 02.04.2011 23:31