Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 051

Раздел: Delphi » Прочее
/ вопрос решён /

Здравствуйте, уважаемые эксперты! Как создать сообщение со строкой для ввода?

alone Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: alone (статус: Посетитель)
Вопрос отправлен: 29 октября 2007, 23:43
Состояние вопроса: решён, ответов: 2.

Ответ #1. Отвечает эксперт: Николай Рубан

Здравствуйте, Гадлевский Олег Вячеславович!

Есть стандартная функция InputBox, которая осуществляет отображение диалога с пользователем. В диалоговом окне необходимо ввести текстовый ответ.
После нажатия кнопки Ok будет возвращено значение, введённое в диалоговом окне. Если пользователь ничего не ввёл или нажал кнопку Cancel, то будет передана пустая строка.

function InputBox(const ACaption, APrompt, ADefault: string): string;
функция возвращает введенную строку символов (окно появляется в центре экрана).
Передаваемые параметры:
ACaption - заголовок окна;
APrompt - пояснение к вводимой строке;
· ADefault - строка возвращаемая по умолчанию.

Пример использования:
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
s:=InputBox('Input new text...','value','default string');
ShowMessage(s);
end;


Good Luck!!!

Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 30 октября 2007, 00:14
Оценка за ответ: 5

Комментарий к оценке: Ну вот, именно это я и спрашивал, спасибо большое!!!

Ответ #2. Отвечает эксперт: Feniks

Здравствуйте, Гадлевский Олег Вячеславович!
Диалоговые окна InputBox и InputQuery позволяют пользователю вводить данные.

Функция InputBox используется в том случае, когда не имеет значения что пользователь выбирает для закрытия диалогового окна - кнопку OK или кнопку Cancel (или нажатие клавиши Esc). Если вам необходимо знать какую кнопку нажал пользователь (OK или Cancel (или нажал клавишу Esc)), используйте функцию InputQuery.
procedure TForm1.Button1Click(Sender: TObject);
var
s, s1: string;
b: boolean;
begin
s := Trim(InputBox('Новый пароль', 'Пароль', 'masterkey'));
b := s <> '';
s1 := s;
if b then
b := InputQuery('Повторите пароль', 'Пароль', s1);
if not b or (s1 <> s) then
ShowMessage('Пароль неверен');
end;

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 30 октября 2007, 14:09
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 30 октября 2007, 14:19; участников в обсуждении: 2.
Вадим К

Вадим К (статус: Академик), 29 октября 2007, 23:53 [#1]:

а может просто форму создать?
Галочка "подтверждения прочтения" - вселенское зло.
Feniks

Feniks (статус: Бакалавр), 30 октября 2007, 14:19 [#2]:

InputBox для ввода пароля
const
InputBoxMessage = WM_USER + 200;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure InputBoxSetPasswordChar(var Msg: TMessage); message InputBoxMessage;
public
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

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);
{
// Change button text:
hButton := FindWindowEx(hInputForm, 0, 'TButton', nil);
SendMessage(hButton, WM_SETTEXT, 0, Integer(PChar('Cancel')));
}
SendMessage(hEdit, EM_SETPASSWORDCHAR, Ord('*'), 0);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
InputString: string;
begin
PostMessage(Handle, InputBoxMessage, 0, 0);
InputString := InputBox('Input Box', 'Please Enter a Password', '');
end;

31 января 2011, 19:29: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 сентября 2018, 10:07
Выполнено за 0.06 сек.
Рейтинг@Mail.ru