A Lua programozási nyelv

Készítők

GUI alkalmazsok

A Lua nyelvben is lehetsgnk van grafikus interfsszel rendelkez alkalmazsokat fejleszteni, ehhez tbb knyvtr is a rendelkezsnkre ll. Ezek ltalban valami egyb nyelven rott grafikus knyvtrhoz nyjtanak hozzfrst. Nhny ilyen knyvtr:

LuaInterface

A LauInterface a Windows Forms eszkztrt teszi elrhetv Lua programjainkban. Kzvetlenl a .NET keretrendszerbl pldnyostja ket, annak CLR (Common Language Runtime) szolgltatsn keresztl. Elrhet benne a Windows Forms minden osztlya, esemnykezelse, s intzi, hogy kompatibilis legyen a Lua beptett tpusaival.

load_assembly:

Betlti a megadott .NET assemblyt. Egy string paramterben vrja az assembly nevt, pl. System.Windows.Forms.

import_type:

Betlti a megadott .NET tpust, s visszaadja. Egy string paramterben vrja a tpus teljes nevt a namespace-el egytt. A visszaadott objektumot a tpus objektumainak pldnyostsra lehet hasznlni, fggvnyknt kell meghvni, mindig megprblja rilleszteni a kapott paramtereket egy ltez konstruktor szignatrjra.

get_constructor_bysig:

Ha az elzben emltett automatikus konstruktor illeszts nem elg, akkor ezzel a metdussal egy konkrt konstruktort lehet pldnyostani szignatra alapjn. Tetszleges szm .NET tpust vr paramterknt, az els azt a tpust adja meg, aminek a konstruktort keressk, a tbbi pedig a kvnt paramterek tpust.

get_method_bysig:

Az elzhz hasonlan itt is nem egyrtelm paramterezs esetn lehet a konkrt szignatra alapjn megkeresni metdusokat. Paramterknt a metdust tartalmaz objektumot, a metdus nevt, s a paramterek tpusait vrja, s visszaadja a konkrt metdust, amit ezutn meg lehet hvni.

Az elzek segtsgvel pldnyostott .NET objektumok rendelkeznek a szoksos tagjaikkal s metdusaikkal. Hasznlatuk ugyangy trtnik mint C#-ban vagy brmely egyb .NET-es nyelvben.

Esemnykezels:

Az esemnykezelshez egyszeren az adott objektum esemny tagjn kell egy Add vagy Remove metdust meghvni, paramterknt pedig egy Lua fggvnyt kell megadni. Ez automatikusan kezeli a delegate-eket, stb.

Plda:

require 'luanet'

luanet.load_assembly("System.Windows.Forms")

Form = luanet.import_type("System.Windows.Forms.Form")

FlowLayoutPanel = luanet.import_type("System.Windows.Forms.FlowLayoutPanel")

TextBox = luanet.import_type("System.Windows.Forms.TextBox")

Button = luanet.import_type("System.Windows.Forms.Button")

MessageBox = luanet.import_type("System.Windows.Forms.MessageBox")

layout = FlowLayoutPanel()

textbox = TextBox()

button = Button()

button.Text = "OK"

function onClick(sender, args)

MessageBox.Show(textbox.Text)

end

button.MouseUp:Add(onClick)

layout.Controls:Add(textbox)

layout.Controls:Add(button)

window = Form()

window.Controls:Add(layout)

window.Text = "Example"

window:ShowDialog()