microsoft navision nav 2009,单选按钮的选择

microsoft navision nav 2009, selection of radiobutton

我正在使用树形单选按钮。但是第三个选项'order maken'不会被选中。

我有这个作为代码:

END ELSE BEGIN
  IF CONFIRM('Er is te weinig voorraad voor een artikel, wilt u verder gaan?',TRUE) THEN 
  BEGIN

    Selection := STRMENU(Text000,3);
    IF Selection = 1 THEN BEGIN
      LocFrmQuoteInfo.FncSetFields(CodCounterUser,OptCounterDocType,CodCounterDocNo,RecCust);
      LocFrmQuoteInfo.RUNMODAL;
    END;
    IF Selection = 2 THEN
      EXIT;
    IF Selection = 3 THEN BEGIN
         Options := Text000;
    Selected := DIALOG.STRMENU(Options, 3, Text000);
    MESSAGE(Text000, Selected);
     // FncCreateOrder();
      //LocFrmQuoteInfo.RUNMODAL; 
     //EXIT;
  END;

并将其作为变量:

&Offerte maken,,&Terug naar overzicht,Order maken

谢谢

您的选项字符串中的 , 占用一个值,例如 &Terug naar overzicht,是第 3 位,'order maken' 实际上是列表中的第 4 位。

删除 , 应该使您的数字与代码的工作方式保持一致,但假设 , 应该在下面的代码中是要进行的直接更改:

END ELSE BEGIN
IF CONFIRM('Er is te weinig voorraad voor een artikel, wilt u verder gaan?',TRUE) THEN 
BEGIN

  Selection := STRMENU(Text000,3);
  IF Selection = 1 THEN BEGIN
        LocFrmQuoteInfo.FncSetFields(CodCounterUser,OptCounterDocType,CodCounterDocNo,RecCust);
    LocFrmQuoteInfo.RUNMODAL;
  END;
  IF Selection = 3 THEN //Updated to 3
    EXIT;
  IF Selection = 4 THEN BEGIN  //Updated to 4
       Options := Text000;
  Selected := DIALOG.STRMENU(Options, 3, Text000);
  MESSAGE(Text000, Selected);
   // FncCreateOrder();
    //LocFrmQuoteInfo.RUNMODAL; 
   //EXIT;
END;

您可能需要考虑使用 CASE 语句重构代码。

IF CONFIRM('Er is te weinig voorraad voor een artikel, wilt u verder gaan?',TRUE) THEN 
  BEGIN

CASE DIALOG.STRMENU(Text000,3) OF
  1: BEGIN
    //Work for Section 1
    //LocFrmQuoteInfo.FncSetFields(CodCounterUser,OptCounterDocType,CodCounterDocNo,RecCust);
    //LocFrmQuoteInfo.RUNMODAL;
    MESSAGE('&Offerte maken');
  END;
  3: BEGIN
    //Add Work for Section 2
    MESSAGE('&Terug naar overzicht');
    EXIT;
  END;
  4 : BEGIN
    //Add Work for option 4
    //FncCreateOrder();
    //LocFrmQuoteInfo.RUNMODAL;
    MESSAGE('Order maken')
  END;
  ELSE BEGIN
    //Catch anything Strange
    ERROR('Invalid Option Selected');
  END;
END; //CASE

结束;

我觉得这比您的代码有一些优势,它会使用默认大小写(底部的 ELSE)捕获任何异常或对字符串的修改。此外,只有特定的选择才会执行,因为您的代码没有 ELSE 语句,它将评估每个用户选择的所有 IF。