Как добавить MessageDlg?!
Добавляю типы:
Пишу обработчик:
<span style='color:red'>"Could not convert variant of type (Array Variant) into type (Inteher)"</span>
Думаю, что как-то иначе надо указывать параметр с TMsgDlgButtons, но как?
...
AddEnum('TMsgDlgType', 'mtWarning, mtError, mtInformation, mtConfirmation, mtCustom');
AddEnum('TMsgDlgButtons', 'mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp');
AddMethod('function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer', CallMethod1, FCatOther);
Пишу обработчик:
function TFunctions.CallMethod1(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
Result := 0;
If MethodName = 'MESSAGEDLG' then begin
Result := MessageDlg(String(Params[0]),
TMsgDlgType(Integer(Params[1])),
TMsgDlgButtons([TMsgDlgBtn(Integer(Params[2]))]),
Integer(Params[3]));
end;
end;
Компилится отлично, но при вызове из скрипта функции MessageDlg ругается:<span style='color:red'>"Could not convert variant of type (Array Variant) into type (Inteher)"</span>
Думаю, что как-то иначе надо указывать параметр с TMsgDlgButtons, но как?
Комментарии
AddEnumSet('TMsgDlgButtons', 'mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbNoToAll, mbYesToAll, mbHelp');
В обработчике надо Integer(Params[2]) привести к типу TMsgDlgButtons, но не так, как у вас, а примерно так (пример с TLocateOptions):
И последнее, в скрипте вызов ф-и делать так:
MessageDlg('msg', mtError, mbYes + mbNo, 0)
Осталось только научиться угадывать вот такие тонкости: И вопросы начнут сами собой пропадать...