luaforwindows/files/examples/iup/olecontrol_luacom.wlua

74 lines
1.6 KiB
Lua

-- IpuOle and LuaCom example contributed by Kommit <kommit@gmail.com>
require "iuplua"
require "iupluaole"
require "luacom"
local control = iup.olecontrol{"MsComCtlLib.ListViewCtrl"}
-- Connect it to LuaCOM
control:CreateLuaCOM()
-- Sets production mode
control.designmode= "NO"
control.bgcolor = "255 255 255"
-- Create a dialog containing the OLE control
local dlg = iup.dialog{
title="IupOle",
size="150x80",
iup.vbox{
control,
}
}
control.com.View = 3 -- Report View
control.com.FullRowSelect = 1
control.com.ColumnHeaders:Add(nil, nil, "Name")
control.com.ColumnHeaders:Add(nil, nil, "Score")
-- First column
control.com.ListItems:Add(nil, nil, "Daimon")
control.com.ListItems:Add(nil, nil, "Andy")
control.com.ListItems:Add(nil, nil, "Chris")
control.com.ListItems:Add(nil, nil, "Billy")
-- Second column
control.com.ListItems:Item(1).ListSubItems:Add(nil, nil, 16)
control.com.ListItems:Item(2).ListSubItems:Add(nil, nil, 17)
control.com.ListItems:Item(3).ListSubItems:Add(nil, nil, 24)
control.com.ListItems:Item(4).ListSubItems:Add(nil, nil, 11)
-- Add events to to the control
list_events = {}
-- Callback function
function list_events:ColumnClick(column)
control.com.Sorted = 1
iCur = column.Index - 1
if iCur == iLast then
if control.com.SortOrder == 0 then
control.com.SortOrder = 1
else
control.com.SortOrder = 0
end
end
control.com.SortKey = iCur
iLast = iCur
end
luacom.Connect(control.com, list_events)
-- Show the dialog and run the main loop
dlg:show()
if (not iup.MainLoopLevel or iup.MainLoopLevel()==0) then
iup.MainLoop()
end