From: Andre A. <ar...@ki...> - 2012-06-23 12:49:15
|
-- try this read the code look at which events are pass which are not -- note the casting to make connectKeyUpEvent work -- click on the various elements and type to see which one gets the events -- I will be gone for a while frm = wx.wxFrame( wx.NULL, wx.wxID_ANY, "Testing") pnl = wx.wxPanel(frm, wx.wxID_ANY) mainSizer = wx.wxBoxSizer( wx.wxVERTICAL) hsizer = wx.wxBoxSizer( wx.wxHORIZONTAL) but = wx.wxButton(pnl, wx.wxID_ANY, 'name') st1 = wxstc.wxStyledTextCtrl(pnl, wx.wxID_ANY) st2 = wxstc.wxStyledTextCtrl(pnl, wx.wxID_ANY) but:Connect(wx.wxID_ANY, wx.wxEVT_CHAR, function(event) print('char but ', event.KeyCode) event:Skip() end) but:Connect(wx.wxID_ANY, wx.wxEVT_CHAR_HOOK, function(event) print('hook but ', event.KeyCode) event:Skip() end) st1:Connect(wx.wxID_ANY, wx.wxEVT_CHAR, function(event) print('char st1 ', event.KeyCode) event:Skip() end) st1:Connect(wx.wxID_ANY, wx.wxEVT_CHAR_HOOK, function(event) print('hook st1 ', event.KeyCode) event:Skip() end) st2:Connect(wx.wxID_ANY, wx.wxEVT_CHAR, function(event) print('char st2 ', event.KeyCode) event:Skip() end) st2:Connect(wx.wxID_ANY, wx.wxEVT_CHAR_HOOK, function(event) print('hook st2 ', event.KeyCode) event:Skip() end) pnl:Connect(wx.wxID_ANY, wx.wxEVT_CHAR, function(event) print('char pnl ', event.KeyCode) event:Skip() end) pnl:Connect(wx.wxID_ANY, wx.wxEVT_CHAR_HOOK, function(event) print('char pnl ', event.KeyCode) event:Skip() end) frm:Connect(wx.wxID_ANY, wx.wxEVT_CHAR, function(event) print('char frm ', event.KeyCode) event:Skip() end) frm:Connect(wx.wxID_ANY, wx.wxEVT_CHAR_HOOK, function(event) print('hook frm ', event.KeyCode) event:Skip() end) pnl:SetSizer(mainSizer) hsizer:Add(st1, 0, wx.wxLEFT) hsizer:Add(st2, 0, wx.wxRIGHT) mainSizer:Add(but) mainSizer:Add(hsizer) mainSizer:SetSizeHints(pnl) function CharKeyEvent(event) print('up', event.KeyCode) event:Skip() end function connectKeyUpEvent(win) if win then win = win:DynamicCast('wxWindow') win:Connect(wx.wxID_ANY, wx.wxEVT_KEY_UP, CharKeyEvent) local childNode = win:GetChildren():GetFirst() while childNode do connectKeyUpEvent(childNode:GetData()) childNode = childNode:GetNext() end end end connectKeyUpEvent(frm) frm:Show(true) Andre |