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