Экспертная система 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)
Текущее время: 22 февраля 2025, 11:53
Выполнено за 0.03 сек.