4D View proでExcelシートを作成、ドロップダウンリストを作る

行ごとにドロップダウンリストを挿入したい。次のメソッドを行数分だけ実行する。

  //JCL_vp_ComboBox_TwoChoices
  //20220201 wat
  //リストを備えたコンボボックス型 JavaScript

C_TEXT($1;$vpObjName)
$vpObjName:=$1
C_LONGINT($2;$col)
$col:=$2
C_LONGINT($3;$row)
$row:=$3
C_TEXT($4;$option1)
$option1:=$4
C_TEXT($5;$option2)
$option2:=$5
C_OBJECT($0;$result)
C_TEXT($source)

  //シートに行を追加 JavaScript
$source:="sheet=Utils.spread.getActiveSheet();"
$source:=$source+"dv1=new GC.Spread.Sheets.DataValidation.createListValidator('"+$option1+","+$option2+"');"
$source:=$source+"sheet.setDataValidator("+String($row)+", "+String($col)+", dv1);"

$result:=WA Evaluate JavaScript(*;$vpObjName;$source;Is object)

$0:=$result

  //https://www.grapecity.com/spreadjs/docs/v13/online/datavalidate.html
  //var dv1=new GC.Spread.Sheets.DataValidation.createListValidator('Fruit,Vegetable,Food');
  //dv1.inputTitle('Please choose a category:');
  //dv1.inputMessage('Fruit, Vegetable, Food');
  //sheet.setDataValidator(1,1, dv1);

セルタイプでも実装可能だが、Excelへの書き出しで無視されてしまうため、Excelでいうところの「入力規則」(GC.Spread.Sheets.DataValidation.createListValidator)をセルにセットしている。

次のように使う。

	  //プルダウンリスト
	$col:=0
	$row:=$i
	JCL_vp_ComboBox_TwoChoices ($vpObjName;$col;$row;"済";"未")