Обмен данными между формами в Delphi

В предыдущей статье мы создали немодаль­ное окно для пункта меню Сохранить. Немного изменим вид окна, добавив на него строку ввода и две кнопки:  Закрыть и Отмена (рис. 9.12).

Обмен данными между формами в Delphi

Теперь посмотрим на очень интересное свой­ство кнопок— ModalResult. В этом свойстве можно задавать значение, возвра­щаемое при закрытии окна. Давайте выберем здесь mrok. Если теперь мы покажем окно как модальное и потом закроем его кнопкой Закрыть, то функция showModal вернет нам значение mrok.

Реально значения mrok и другие, которые вы можете увидеть в ниспадающем списке свойства ModalResult, — это числа, но для того, чтобы с ними удобно было работать, этим числам были поставлены в соответствие имена (константы). Первые две буквы mr — это сокращение от слова ModalResult. Остальное — это символь­ное представление результата. Получается, что, глядя на эту константу, мы можем сразу сказать, что она отображает нажатие кнопки ОК модального окна.

Мы еще добавили на форму кнопку Отмена. Для нее свойство ModalResult ус­тановим в mrCancel. Кстати, теперь вы должны очистить обработчики событий onclick для кнопок. Когда вы указали в свойстве ModalResult возвращаемое зна­чение, кнопка уже автоматически умела закрывать окно и не нужно было создавать для нее обработчик onclick для того, чтобы написать в нем метод close. Это со­бытие можно обрабатывать для других целей и даже можно написать этот метод, но это уже лишнее. Зачем делать то, что работает автоматически.

В связи с этим предлагаю изменить обработчик события onclick для пункта меню Сохранить:

procedure TForm1.SaveClick(Sender: TObject);

begin

if NonModalForm.Shovyiodal=mrOK then

Application.MessageBox(PChar (NonModalForm.Editl.Text) , 'Ты ввел:’, MB_OKCANCEL)

end;

Теперь построчно рассмотрим код. В первой строке вызывается модальное окно и сразу проверяется возвращаемое значение. Если оно равно mrок, то выполняем следующее действие.

Вторая строка показывает стандартное окно диалога. Это делается с помощью метода MessageBox объекта Application. У метода три параметра:

  • строка, которая будет показана внутри окна;
  • строка заголовка окна;
  • кнопки, которые будут на окне:
    • мв_ок — кнопка ОК;
    • мв_оксancel — кнопки ОК и Отмена;
    • mb_retrycancel — кнопки Повторить и Отмена;
    • mb_yesno — кнопки Да и Нет;
    • mb_yesnocancel — кнопки Да, Нет и Отмена.

В качестве текста сообщения в окне выводится текст, введенный в строку ввода нашего модального окна (NonModalForm.Edit1.Text). Если вы не поняли, как полу­чается этот текст, то еще раз посмотрите на эту строку. Вначале идет имя формы, по­том имя компонента и интересующее свойство. Мы обращаемся к элементу управле­ния другой формы, поэтому вначале просто необходимо указывать имя формы.

Теперь если пользователь нажмет в модальном окне кнопку Закрыть, то поя­вится окно с введенным текстом. Иначе ничего не произойдет.

 

dle

Помоги проекту! Расскажи друзьям об этом сайте: