توسيع للأمر MessageDlg ليصبح قادر على تحديد من هو الزر الذي سيكون مفعل افتراضيا
وذلك بإضافة البارامتر FocusBtn لمجموعة البارامترات الواجب تمريرها إليه
قم بتعريف هذا التابع :
var ButtonNames: array[TMsgDlgBtn] of string = ( 'Yes', 'No', 'OK', 'Cancel', 'Abort', 'Retry', 'Ignore', 'All', 'NoToAll', 'YesToAll', 'Help'); function MessageDlgWithFocus(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; FocusBtn: TMsgDlgBtn; HelpCtx: Longint): Integer; var Btn: TComponent; begin with CreateMessageDialog(Msg, DlgType, Buttons) do try HelpContext := HelpCtx; Position := poScreenCenter; Btn := FindComponent( ButtonNames[FocusBtn] ); if (Btn <> nil) and (Btn is TWinControl) then ActiveControl := Btn as TWinControl; Result := ShowModal; finally Free; end; end;
وللأستخدام :
procedure TForm3.Button1Click(Sender: TObject);
begin
MessageDlgWithFocus('hhh',mtWarning,[mbYes,mbNo],mbno,0);
end;..
لاحظ إمكانية تغيير أسماء الأزرار بما يوافق اللغة العربية