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。
我正在使用树形单选按钮。但是第三个选项'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。