Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MessageDlg c дополнительным чекбоксом, "Непоказывать, больше, это, окно" 
:(
    Опции темы
Alexeis
Дата 20.5.2008, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Может быть я плохо искал, но в DRKB ненашёл, и думаю было бы полезно добавить. Код MessageDlg с чекбоксом внизу (к примеры галка "Непоказывать больше это окно"). Функция разработана не мной, я просто портировал код C++, который нашёл на http://raz-soft.com/c-builder/message-box-with-check-box/. По этой-же ссылочке есть и скриншот как это окошко выглядит.

Код

function CheckMessageDlg(const Msg, Caption, CheckBoxCaption: string;
  var Checked: boolean; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons{;
  DefaultButton: TMsgDlgBtn}): TModalResult;
var
  Dialog: TForm;
  LeftEdge, TopEdge: Integer;
  i: Integer;
  Ctrl: TControl;
  CheckBox: TCheckBox;
begin
  Dialog:= CreateMessageDialog(Msg, DlgType, Buttons{, DefaultButton});

  if not (Caption = '') then
    Dialog.Caption:= Caption;

  LeftEdge:= Dialog.ClientWidth;
  TopEdge:= Dialog.ClientHeight;
  if Dialog.ControlCount > 0 then
    for i := 1 to Dialog.ControlCount - 1 do
    begin
      Ctrl:= Dialog.Controls[i];
      if Ctrl.Left < LeftEdge then LeftEdge:= Ctrl.Left;
      if Ctrl.Top < TopEdge then TopEdge:= Ctrl.Top;
    end
  else
  begin
    LeftEdge:= 10;
    TopEdge:= 10;
  end;

  CheckBox:= TCheckBox.Create(Dialog);
  with CheckBox do
  begin
    Parent:= Dialog;
    Caption:= CheckBoxCaption;
    Checked:= Checked;
    Left:= LeftEdge;
    Top:= Dialog.ClientHeight;
    Width:= Dialog.Canvas.TextWidth(CheckBox.Caption) + 30;
  end;

  Dialog.ClientHeight:= Dialog.ClientHeight + CheckBox.Height + TopEdge;

  if (CheckBox.Width + LeftEdge * 2) > Dialog.ClientWidth then
    Dialog.ClientWidth:= CheckBox.Width + LeftEdge * 2;

  Result:= Dialog.ShowModal;
  Checked:= CheckBox.Checked;

  Dialog.Free;
end;

Автор: mrB1n Источник: Vingrad


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0571 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.