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));