フリーソフト

« [BCB] ListViewで行毎に背景色を変える | トップページ | [Delphi] ListViewのHeaderに画像を表示する »

[BCB] CheckBox付きのMessageDialog

TModalResult CheckMessageDialog(AnsiString Message, AnsiString Caption,
  AnsiString CheckBoxCaption, bool &Checked,
  TMsgDlgType DlgType, TMsgDlgButtons Buttons)
{
   TForm *Dialog=CreateMessageDialog(Message, DlgType, Buttons);
   if (!Caption.IsEmpty()) Dialog->Caption = Caption;

   int LeftEdge=Dialog->ClientWidth;
   int TopEdge =Dialog->ClientHeight;
   if (Dialog->ControlCount>0) {
     for (int i = 1; i < Dialog->ControlCount; i++) {
       TControl *Ctrl=Dialog->Controls[i];
       if (Ctrl->Left < LeftEdge) LeftEdge=Ctrl->Left;
       if (Ctrl->Top  < TopEdge)  TopEdge =Ctrl->Top;
     }
   } else {
     LeftEdge=20;
     TopEdge=20;
   }

   TCheckBox * CheckBox = new TCheckBox(Dialog);
   CheckBox->Parent  = Dialog;
   CheckBox->Caption = CheckBoxCaption;
   CheckBox->Checked = Checked;
   CheckBox->Left    = LeftEdge;
   CheckBox->Top     = Dialog->ClientHeight;
   CheckBox->Width   = Dialog->Canvas->TextWidth(CheckBox->Caption)+30;

   Dialog->ClientHeight = Dialog->ClientHeight + CheckBox->Height + TopEdge;

   if (CheckBox->Width + LeftEdge*2 > Dialog->ClientWidth)
     Dialog->ClientWidth = CheckBox->Width + LeftEdge*2;

   TModalResult Result = Dialog->ShowModal();
   Checked = CheckBox->Checked;

   delete Dialog;
   Dialog=NULL;
   
   return Result;
}

使い方
  bool Checked=false;
   CheckMessageDialog("本当に削除してもよろしいですか ?\r\nC:\\tmp\\*.*",
      "確認","今後は確認しない", Checked,
      mtConfirmation, (TMsgDlgButtons() << mbYes << mbNo << mbHelp));

« [BCB] ListViewで行毎に背景色を変える | トップページ | [Delphi] ListViewのHeaderに画像を表示する »

C++Builder」カテゴリの記事

フォーム・ダイアログ関連」カテゴリの記事