|
Вопрос # 1 051/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты! Как создать сообщение со строкой для ввода?
 |
Вопрос задал: 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 (статус: Бакалавр), 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)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|