Основное меню
Главная
Написать мне
Гостевая
Новости сайта

Статьи
О Языках программирования
Delphi
Visual Basic
JavaScript
VBScript

Мои программы
CLOCK
CD-organizer
Delphi. MessageBox

Delphi. MessageBox


Рано или поздно программеру необходимо "общаться" с пользователем... Вот приведу пример, зайдите в "блокнот", напишите там "bla-bla-bla" без ковычек, теперь закройте быстро(а то не дай бог привыкните :) ), И видите что там появилось? Нет? Да вам типа пора обратиться к окулисту :) ! Посмотрите по-внимательней, вот уже кое чего видно(да ты теперь кул-кодер номер 1 в мире :) ), там написано что типа изменён текс и всё такое, дак вот это то, что вылезло называется... Блин, ну как-же оно называется? :) Пусть будет сообщение :). Дык во-о-о-о-от, мы сейчас научимся мутить такие-же в дельфи... А юзать мы будем ф-цию MessageBox, с её помощью делается всё очень быстро! Причём, надписи на кнопках будут соответствовать языку виндосы... т.е. если вы юзаете японскую версию оси, то и надписи, там да, отмена будут на японском!!!

MessageBox(Handle,Текст,Заголовок,Дополнения);

Handle - этот параметр указывает на окно владельца сообщения. оставте как есть, это значит что владелец это то окно из которого вызывается сообщение.

Текст - а это, сам текст сообщения, т.е. типа "Вы хотите сохранить", там или "Внимание! Чё-нибуть":) Причём тип сообщения PChar, а это значит что надо писать так:

PChar('ТЕКСТ СООБЩЕНИЯ')

Заголовок - ну а это текст заголовка, тоже типа PChar
Дополнения -ето уже по-сложнее будет! Значит та-а-а-ак что у нас входит в дополнения, а КНОПКИ, ИКОНКА

Иконки

MB_ICONWARNING
MB_ICONINFORMATION
MB_ICONASTERISK
MB_ICONQUESTION
MB_ICONSTOP
MB_ICONERROR

Кнопки

MB_OK Одна кнопка ОК
MB_OKCANCEL ОК, Отмена
MB_YESNO Да, Нет
MB_YESNOCANCEL Да, Нет, Отмена
MB_RETRYCANCEL Повторить, Отмена
MB_ABORTRETRYIGNORE Прервать, Повтор, Пропустить

Есть ещё др. параметры, например какая кнопка будет выделена по умолчанию - MB_DEFBUTTONx, где х номер кнопки слева на право. Т.е. если у нас параметр кнопок MB_YESNOCANSEL и MB_DEFBUTTON2 - то будет выделена кнопка НЕТ по умолчанию... во-о-о-о-от. А вот ещё если несколько параметров то их следует разделять плюсами:

MessageBox(handle, PChar('текст'),PChar('заголовок'), MB_ICONSTOP+MB_YESNOCANCEL+MB_DEFBUTTON2);

Пример использования

Создай новый проект, сохрани, и на форме создай кнопку с текстом Closeи напиши при клике на кнопку(ну или на событии OnClose формы) след. код:

MessageBox(handle, PChar('Are you want exit?'), PChar('Think please :)'),(MB_YESNO+MB_ICONQUESTION));

Ну, что компиль... Скомпилил? Открой, нажми на кнопку, нажми в сообщении Да - Отлично! Выходит! Теперь опять открой, нажми на кнопку, нажми в сообшении Нет - отстой не робит... Ну дак! :) Надо замуть чтоб робило!!!! Теперь пиши вот что:
procedure TForm1.Button1Click(Sender: TObject);
var
 temp:Word;
begin
temp:=MessageBox(handle, PChar('Are you want exit?'), PChar('Think please :)'), MB_YESNO+MB_ICONQUESTION);
case temp of
 idyes:Application.Terminate;// выключаем прогу
end;
end;
Ну а теперь? :) Робит? Отлично!
Просто поясню что мы проверяли "значение" нажатой кнопки. "значения"(ну я просто не знаю как правельно писать :)) кнопки это id+имя кнопки. Т.е. "значение" кнопки No - idno, retry - idretry

Как видишь кодить на дельфи очень просто! Удачи