自定义对话框

Gle*_*rse 1 delphi

尝试使用按钮名称weapon1,weapon2和cancel来使用自定义对话框.但是,当我尝试编译它时,使用此代码将结果显示为未定义错误消息是

[DCC错误] ssClientHost.pas(760):E2003未声明的标识符:'结果'

代码是:

      with CreateMessageDialog('Pick What Weapon', mtConfirmation,mbYesNoCancel) do
       try
           TButton(FindComponent('Yes')).Caption := Weapon1;
           TButton(FindComponent('No')).Caption := Weapon2;
           Position := poScreenCenter;
           Result := ShowModal;
        finally
     Free;
   end;
     if buttonSelected = mrYes    then ShowMessage('Weapon 1 pressed');
     if buttonSelected = mrAll    then ShowMessage('Weapon 2 pressed');
     if buttonSelected = mrCancel then ShowMessage('Cancel pressed');
Run Code Online (Sandbox Code Playgroud)

And*_*and 6

上面发布的代码有很多错误,除非有部分内容没有向我们展示.一方面,如果没有字符串变量Weapon1和Weapon2,那么你就不能引用这些变量!其次,如果没有Result变量(例如,如果代码在函数内部),那么这也是一个错误.此外,在上面的代码中,buttonSelected是一个变量,您可能也忘记了它.最后,第一你谈Yes和No,那么请您谈一下Yes和Yes to all.

以下代码有效(独立):

with CreateMessageDialog('Please pick a weapon:', mtConfirmation, mbYesNoCancel) do
  try
    TButton(FindComponent('Yes')).Caption := 'Weapon1';
    TButton(FindComponent('No')).Caption := 'Weapon2';
    case ShowModal of
      mrYes: ShowMessage('Weapon 1 selected.');
      mrNo: ShowMessage('Weapon 2 selected.');
      mrCancel: ShowMessage('Cancel pressed.')
    end;
finally
  Free;
end;
Run Code Online (Sandbox Code Playgroud)

免责声明:这个答案的作者不喜欢武器.

  • 我喜欢免责声明;-). (9认同)