Here, look at this code, it fixes your Frame and Panel issues, plus it aliens your sizer1 & 2.
Look toward the bottom for how to do the Panel/Frame fix. It will now run in a frame or a panel on your screen set
--Basic Empty Wizard
local frame = nil
local panel = nil
local inst = mc.mcGetInstance(mInst);
--Function sed to create widget ids
function GetNextID()
m_id = m_id+1;
return m_id;
end
function main()
-- create the wxFrame window
if (mcLuaPanelParent == nil) then
frame = wx.wxFrame( wx.NULL, -- no parent for toplevel windows
wx.wxID_ANY, -- wxWindow ID not require
"wxLua Basic Window", -- Frame Title
wx.wxDefaultPosition, -- let system place the frame
wx.wxDefaultSize, -- default frame size
wx.wxDEFAULT_FRAME_STYLE ) -- Use default frame style
-- create a single child window, wxWidgets will set the size to fill frame
panel = wx.wxPanel(frame, wx.wxID_ANY)
-- create a simple file menu
fileMenu = wx.wxMenu()
fileMenu:Append(wx.wxID_EXIT, "&Exit", "Quit the program")
-- create a simple help menu
helpMenu = wx.wxMenu()
helpMenu:Append(wx.wxID_ABOUT, "&About", "What is the version of wxLua and wx.widgets")
-- create a menu bar and append the file and help menus
menuBar = wx.wxMenuBar()
menuBar:Append(fileMenu, "&File")
menuBar:Append(helpMenu, "&Help")
-- attach the menu bar into the frame
frame:SetMenuBar(menuBar)
-- create a simple status bar
frame:CreateStatusBar(1)
frame:SetStatusText("Hello World")
-- connect the selection event of the exit menu item to an
-- event handler that closes the window
frame:Connect(wx.wxID_EXIT, wx.wxEVT_COMMAND_MENU_SELECTED,
function (event) frame:Close(true) end )
-- connect the selection event of the about menu item
frame:Connect(wx.wxID_ABOUT, wx.wxEVT_COMMAND_MENU_SELECTED,
function (event)
wx.wxMessageBox('Your are currently running '..
wxlua.wxLUA_VERSION_STRING..'\n built with '..wx.wxVERSION_STRING,
'About wxLua Basic Window',
wx.wxOK + wx.wxICON_INFORMATION,
frame)
end )
-- show the frame window
frame:Show(true)
else
panel = mcLuaPanelParent
local window = panel:GetParent();
local wsize = window:GetSize();
panel:SetSize(wsize);
panel:Connect( wx.wxEVT_CLOSE_WINDOW,
function (event)
event:Skip();
end
);
end
-----------------------------------------------------------------------
mainSizer = wx.wxStaticBoxSizer(wx.wxVERTICAL, panel, "MainSizer");
SubSizer1 = wx.wxStaticBoxSizer(wx.wxVERTICAL, panel, "SubSizer1");
SubSizer2 = wx.wxStaticBoxSizer(wx.wxVERTICAL, panel, "SubSizer2");
panel:SetBackgroundColour(wx.wxColour(0,255,128)); --default Mach4 230,230,230
local st1 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer1 Text 1");
local st2 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer1 Text 2");
local st3 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer1 Text 3");
local st4 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer1 Text 4");
local st5 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer1 Text 5");
local st6 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer1 Text 6");
Sizer = wx.wxFlexGridSizer( 2, 3, 0, 30 );--1 rows, 3 columns, no x/y spacing between
Sizer:Add(st1, 1);
Sizer:Add(st2, 1);
Sizer:Add(st3, 1);
Sizer:Add(st4, 1);
Sizer:Add(st5, 1);
Sizer:Add(st6, 1);
local st21 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer2 Text 1");
local st22 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer2 Text 2");
local st23 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer2 Text 3");
local st24 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer2 Text 4");
local st25 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer2 Text 5");
local st26 = wx.wxStaticText( panel, wx.wxID_ANY, "Sizer2 Text 6");
Sizer2 = wx.wxFlexGridSizer( 2, 3, 0, 30 );--1 rows, 3 columns, no x/y spacing between
Sizer2:Add(st21, 1);
Sizer2:Add(st22, 1);
Sizer2:Add(st23, 1);
Sizer2:Add(st24, 1);
Sizer2:Add(st25, 1);
Sizer2:Add(st26, 1);
-- Set up the frame to use that sizer to move/resize its children controls
SubSizer1:Add(Sizer, 0, wx.wxALIGN_LEFT+wx.wxRIGHT, 20);
SubSizer2:Add(Sizer2, 0, wx.wxALIGN_LEFT+wx.wxRIGHT, 20);
mainSizer:Add(SubSizer1, 0, wx.wxALIGN_CENTER, 20);
mainSizer:Add(SubSizer2, 0, wx.wxALIGN_CENTER, 20);--changed this to alien them both in center
panel:SetSizer(mainSizer); --this belongs here
panel:Fit();--this belongs here
-------------------------------------------------Add the below if/else statement
if(mcLuaPanelParent == nil) then
frame:Fit();
frame:Show(true);
else
local window = panel:GetParent();
window:Connect( wx.wxID_ANY, wx.wxEVT_SIZE,
function(event)
local wsize = event:GetSize();
panel:SetSize(wsize);
panel:FitInside();
end);
end
-----------------------------------------------------------------------
end
main();
wx.wxGetApp():MainLoop();
Scott