Я пытался раскрыть дело. Примечание: я сделал это, используя CE Lua Script для 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