Практика
Усовершенствование стандартного Message Dialog'a

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика


Данная статья будет небольшой, так как материал достаточно легкий. Воспользуемся функцией CreateMessageDialog для создания диалога, и будем добавлять любые компоненты (в примере два компонента - ColorBox и Label) по своему усмотрению. Диалог вызывается как ShowModal.

В данном примере нет ничего сложного, если вы умеете создавать компоненты динамически (во время работы программы). Если это вызывает у вас трудности, то вам будет полезно почитать об этом, например у меня на сайте в разделе Практика, статья называется Создание компонентов в RunTime. В этой статье рассказано практически то же самое - динамическое создание формы и компонентов на ней.

procedure TForm1.Button1Click(Sender: TObject);
var
  MyMsgDialog: TForm;
  i: integer;
  MyLabel: TLabel;
  MyColorBox: TColorBox;
begin
   // Создаем диалог
   MyMsgDialog := CreateMessageDialog( '   Выберите цвет   ', mtInformation, [mbYes,mbNo] );

   // Создаем компоненты
   MyColorBox := TColorBox.Create( MyMsgDialog );
   MyLabel := TLabel.Create( MyMsgDialog );

   with MyMsgDialog do
   begin
      // Руссифицируем кнопки диалога
      for i := 0 to MyMsgDialog.ComponentCount-1 do
         if MyMsgDialog.Components[i] is TButton then
            if ( MyMsgDialog.Components[i] as TButton ).Caption = '&Yes' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Да'
            else
            if ( MyMsgDialog.Components[i] as TButton ).Caption = '&No' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Нет'
            else
            if ( MyMsgDialog.Components[i] as TButton ).Caption = 'OK' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Да'
            else
            if ( MyMsgDialog.Components[i] as TButton ).Caption = 'Cancel' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Отмена'
            else
            if ( MyMsgDialog.Components[i] as TButton ).Caption = '&Abort' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Прервать'
            else
            if ( MyMsgDialog.Components[i] as TButton ).Caption = '&Retry' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Повтор'
            else
            if ( MyMsgDialog.Components[i] as TButton ).Caption = '&Ignore' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Дальше'
            else
            if ( MyMsgDialog.Components[i] as TButton ).Caption = '&All' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Все'
            else
            if ( MyMsgDialog.Components[i] as TButton ).Caption = 'N&o to All' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Нет всем'
            else
            if ( MyMsgDialog.Components[i] as TButton ).Caption = 'Yes to &All' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Да всем'
            else
            if ( MyMsgDialog.Components[i] as TButton ).Caption = '&Help' then
               ( MyMsgDialog.Components[i] as TButton ).Caption := 'Помощь';

      try
         Caption := 'Выбор цвета для формы';
         Height := 170;
         // Инициализируем MyLabel
         with MyLabel do
         begin
            Parent := MyMsgDialog;
            AutoSize := true;
            Top := 95;
            Left := 12;
            Caption := 'Цвет';
         end;
         // Инициализируем MyColorBox
         with MyColorBox do
         begin
            Parent := MyMsgDialog;
            Width := 150;
            Top := 111;
            Left := 10;
            ItemIndex := 0;
         end;
         // Показываем окно как модальное
         case ShowModal of
            // Обрабатываем кнопки
            ID_YES: Form1.Color := MyColorBox.Colors[MyColorBox.ItemIndex];
            ID_NO: ;
         end;
      finally
         // Освобождаем переменные
         MyColorBox.Free;
         MyLabel.Free;
         Free;
      end;
   end;
end;

Как видите, все до безобразия просто. Удачи вам в программировании.

.: Пример к данной статье :.


При использовании материала - ссылка на сайт обязательна