假设我有2个组合框。第一个组合框用于一个类别,另一个组合框用于单位。我做了这样的数组表:
Table1 = {
Cat = 'Angle',
Unit = {'Degree','Gradian','Radian'}}
Table2 = {
Cat = 'Area',
Unit = {'Acres','Hectares','Square centimeter','Square feet','Square inch',
'Square kilometer','Square meter','Square mile','Square milimeter',
'Square Yard'}}
Table3 = {
Cat = 'Energy',
Unit = {'British Thermal Unit','Calorie','Electron-Volts','Food-Pound',
'Joule','Kilocalorie','Kilojoule'}}
Table4 = {
Cat = 'Length',
Unit = {'Angstrom','Centimeters','Chain','Phantom',
'Feed','Hand','Inch','Kilometers','Link','Meter','Microns','Mile',
'Milimemters','Nanometer','Nautical Mile','Pica','Rods','Span','Yard'}}
如何仅对cat元素(类别)将元素附加到第一组合框? 然后第二个组合框会根据组合框1上的类别自动添加单位吗?
谢谢
答案 0 :(得分:0)
只需将所有表放入一个数组即可。我不知道您如何需要组合框的数据,但是此示例应为您提供帮助。
local idx = 1 -- box index
local boxValues = {
{
Cat = 'Angle',
Unit = {'Degree','Gradian','Radian'}
}, {
Cat = 'Area',
Unit = {
'Acres','Hectares','Square centimeter','Square feet','Square inch',
'Square kilometer','Square meter','Square mile','Square milimeter',
'Square Yard'
}
}, {
Cat = 'Energy',
Unit = {
'British Thermal Unit','Calorie','Electron-Volts','Food-Pound',
'Joule','Kilocalorie','Kilojoule'
}
}, {
Cat = 'Length',
Unit = {
'Angstrom','Centimeters','Chain','Phantom',
'Feed','Hand','Inch','Kilometers','Link','Meter','Microns','Mile',
'Milimemters','Nanometer','Nautical Mile','Pica','Rods','Span','Yard'
}
}
}
local catBox, unitBox = boxValues[idx].Cat, boxValues[idx].Unit
在catBox
中选择一个值后,您必须更新idx
。
答案 1 :(得分:0)
我试图解决此案。注意:我是使用CE Lua Script for GUI等实现的。
form = createForm() -- create the form
cbCategory = createComboBox(form) -- Category Combobox
cbCategory.setPosition(10,10)
cbCategory.Style = 'csDropDownList'
cbUnitFrom = createComboBox(form) -- Source Unit Combobox
cbUnitFrom.setPosition(10,40)
cbUnitFrom.Style = 'csDropDownList'
cbUnitTo = createComboBox(form) -- Result Unit Combobox
cbUnitTo.setPosition(10,70)
cbUnitTo.Style = 'csDropDownList'
-- show the form
form.show()
Category = {'Angle','Area','Energy','Length','Power','Pressure','Temperature',
'Time','Velocity','Volume','Weight','Bytes'}
Angle = {'Degree','Gradian','Radian'}
Area = {'Acres','Hectares','Square centimeter','Square feet','Square inch',
'Square kilometer','Square meter','Square mile','Square milimeter',
'Square Yard'}
Energy = {'British Thermal Unit','Calorie','Electron-Volts','Food-Pound',
'Joule','Kilocalorie','Kilojoule'}
Length = {'Angstrom','Centimeters','Chain','Phantom',
'Feed','Hand','Inch','Kilometers','Link','Meter','Microns','Mile',
'Milimemters','Nanometer','Nautical Mile','Pica','Rods','Span','Yard'}
Power = {'BTU/Minute','Food-Pound/minute','Horse power','Kilowatt','Watt'}
Pressure = {'Atmosphere','Bar','Kilo Pascal','Millimeter of Mercury','Pascal',
'Pound per square inch/PSI'}
Temperature = {'Degree Celcius','Degree Farenheit','Degree Reaumur','Kelvin'}
Time = {'Year','Month','Week','Day','Hour','Minute','Second','Millisecond'}
Velocity = {'Centimeter per second','Feet per second','Kilometer per hour',
'Knots','Marc (at std.atm)','Meter per second','Miles per hour'}
Volume = {'Cubic centimeter','Cubic feet','Cubic inch','Cubic meter',
'Cubic yard','Fluid ounce (UK)','Fluid ounce (US)','Gallon (UK)',
'Gallon (US)','Liter','Pint (UK)','Pint (US)','Quart (UK)','Quart (US)'}
Weight = 'Carat','Centigram','Decigram','Dekagram','Gram','Hectogram','Kilogram',
'Long ton','Milligram','Ounce','Pound','Short ton','Stone','Tonne'}
Bytes = {'Exabyte','Petabyte','Terabyte','Gigabyte','Megabyte','Kilobyte','Byte'}
local itemsCB1 = cbCategory.Items
local itemsCB2 = cbUnitFrom.Items
local itemsCB3 = cbUnitTo.Items
----- Add items to Category combobox
for i,v in ipairs(Category) do
strings_add(itemsCB1, v)
end
cbCategory.ItemIndex = 0
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
function cbUnit()
local cat = cbCategory.ItemIndex
if cat == nil then return nil end
if cat == 0 then -- Angle
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Angle) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 1 then -- Area
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Area) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 2 then -- Energy
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Energy) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 3 then -- Length
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Length) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 4 then -- Power
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Power) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 5 then -- Pressure
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Pressure) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 6 then -- Temperature
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Temperature) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 7 then -- Time
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Time) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 8 then -- Velocity
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Velocity) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 9 then -- Volume
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Volume) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 10 then -- Weight
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Weight) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
elseif cat == 11 then -- Bytes
cbUnitFrom.Items.clear()
cbUnitTo.Items.clear()
for i,v in ipairs(Weight) do
strings_add(itemsCB2, v)
strings_add(itemsCB3, v)
end
cbUnitFrom.ItemIndex = 0
cbUnitTo.ItemIndex = 0
else
return nil
end
end
-- events handler
cbCategory.OnChange = cbUnit