microsoft navision nav 2009,radiobutton的选择

时间:2016-01-19 10:21:56

标签: microsoft-dynamics

我正在使用树辐射按钮。但是不会选择第三个选项'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

谢谢

1 个答案:

答案 0 :(得分:1)

你的optionstring中的,,,会占用一个值,因此& Terug naar overzicht是3号和'命令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

END;

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