BookmarkSubscribeRSS Feed
Choose Language Hide Translation Bar
WendyLou315

Community Trekker

Joined:

Apr 13, 2017

Combined and Connected Number Edit Box and Slider Box

I am producing a JSL script which displays a window with a list of tests for a user to select from to produce charts for those selected.  Each chart needs to have an interval set by the user.  Since this example can allow for 1 to 5 tests for which to produce charts, how do I refer to the Number Edit Boxes to get the correct value for the associated test given the Number Edit Boxes are not named?  Where I stumble is the question in MakeCharts = expr().  Is there a way to uniquely name each Number Edit Box in this type of scenario?

 

//Create a list of all tests represented in this Data Table to be displayed as vertical check boxes
cbAllTests = Check Box( {"Test1", "Test2", "Test3", "Test4", "Test5"} );

//User Interface for selecting desired test results and charts
New Window( "Enter Capability", << Modal,
	//Window Header
	H Center Box(
		H List Box(
			tbAddCap = Text Box( "Select Tests to Average" ),
			tbAddCap << Set Font( "Arial", 14, "Bold" )
		)
	),
	//Test List Header
	Spacer Box( Size( 10, 20 ) ),
	H List Box(
		Spacer Box( Size( 35, 20 ) ),
		tbCap = Text Box( "Test"),
		tbCap << Set Font( "Arial", 12, "Bold" )
	),
	//List of tests from this STR or list of STRs to select from
	H List Box( 
		Spacer Box( Size( 10, 10 ) ),
		cbTest = cbAllTests( i ) 
	),
	Spacer Box( Size( 10, 20 ) ),	
	//Display new window listing tests selected for Capability Data Entry
	H Center Box( Button Box( "OK", GetChkBoxes ) ) 
);

//Window to Display Number Edit Boxes to enter values for only the tests being requested
CapWindow = New Window( "Enter Capability", 
	//Window Header
	H Center Box(
		H List Box( 
			tbEntVal = Text Box( "Enter Capability Values*" ),
			tbEntVAl << Set Font( "Arial", 14, "Bold" )
		)
	),
	//List of tests requested for Capability Value entry
	H List Box(
		vlbTests = V List Box()
	),
	H Center Box( Button Box( "OK", MakeCharts ) ) //WJL - Add procedure to collect values and add selected charts
);

if( N Items( CapTests ) >=1,
	For( i = 1, i <= N Items( CapTests), i++,
		Eval( 
			Expr(
				vlbTests << Append( 
				H List Box(
					Lineup Box( N Col(4),
						tbTest = Text Box( CapTests[i] ),
						tbTest << Set Width( 150 ),
						tbPlMin = Text Box( "+/-" ),
						tbPlMin << Set Font( "Arial", 10 ),
						nebCap = Number Edit Box(0),  
						nebCap << Set Font( "Arial", 10 ),
						tbUnits = Text Box( " %  " ),
						tbUnits << Set Font( "Arial", 10 )
						)
					)
				)
			)
		)
	)
);


GetChkBoxes = Expr(
CapTests =  cbTest << Get Selected();
print( CapTests );
);

MakeCharts = Expr(
	//This is where I need to collect the values in each Number Edit Box
	//How do I reference when they are not uniquely named in the script?
);
1 REPLY 1
Highlighted
txnelson

Super User

Joined:

Jun 22, 2012

Re: Combined and Connected Number Edit Box and Slider Box

Here is one way to handle the issue.  The pointer to the Number Edit Box is placed into a list, and then the element from the list is used to point back to the specific Number Edit Box.

//Create a list of all tests represented in this Data Table to be displayed as vertical check boxes
cbAllTests = Check Box( {"Test1", "Test2", "Test3", "Test4", "Test5"} );

// This code needs to be processed before it is called
GetChkBoxes = Expr(
CapTests =  cbTest << Get Selected();
print( CapTests );
);

//User Interface for selecting desired test results and charts
New Window( "Enter Capability", << Modal,
	//Window Header
	H Center Box(
		H List Box(
			tbAddCap = Text Box( "Select Tests to Average" ),
			tbAddCap << Set Font( "Arial", 14, "Bold" )
		)
	),
	//Test List Header
	Spacer Box( Size( 10, 20 ) ),
	H List Box(
		Spacer Box( Size( 35, 20 ) ),
		tbCap = Text Box( "Test"),
		tbCap << Set Font( "Arial", 12, "Bold" )
	),
	//List of tests from this STR or list of STRs to select from
	H List Box( 
		Spacer Box( Size( 10, 10 ) ),
		cbTest = cbAllTests( i ) 
	),
	Spacer Box( Size( 10, 20 ) ),	
	//Display new window listing tests selected for Capability Data Entry
	H Center Box( Button Box( "OK", GetChkBoxes ) ) 
);

//Window to Display Number Edit Boxes to enter values for only the tests being requested
CapWindow = New Window( "Enter Capability", 
	//Window Header
	H Center Box(
		H List Box( 
			tbEntVal = Text Box( "Enter Capability Values*" ),
			tbEntVAl << Set Font( "Arial", 14, "Bold" )
		)
	),
	//List of tests requested for Capability Value entry
	H List Box(
		vlbTests = V List Box()
	),
	H Center Box( Button Box( "OK", MakeCharts ) ) //WJL - Add procedure to collect values and add selected charts
);

// create a list to hold the pointers to the different Number Edit Boxes
nebCapList = {};

if( N Items( CapTests ) >=1,
	For( i = 1, i <= N Items( CapTests), i++,
		//Eval( 
			//Expr(
				vlbTests << Append( 
				H List Box(
					Lineup Box( N Col(4),
						tbTest = Text Box( CapTests[i] ),
						tbTest << Set Width( 150 ),
						tbPlMin = Text Box( "+/-" ),
						tbPlMin << Set Font( "Arial", 10 ),
						nebCap = Number Edit Box(0),  
						nebCap << Set Font( "Arial", 10 ),
						tbUnits = Text Box( " %  " ),
						tbUnits << Set Font( "Arial", 10 )
						)
					)
				);
				// add the pointer to the Number Edit Box, to the list
				insert into(nebCapList,nebCap);
			)
		//)
	//)
);

nebCapList[1] << set(55);

MakeCharts = Expr(
	//This is where I need to collect the values in each Number Edit Box
	//How do I reference when they are not uniquely named in the script?
);
Jim