Может быть я плохо искал, но в 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;
|
Автор: http://vingrad.ru/@mrB1n Источник: http://forum.vingrad.ru/index.php?show_type=&showtopic= |