| 
| 
 | Вопрос # 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) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |