130 lines
3.4 KiB
ObjectPascal
130 lines
3.4 KiB
ObjectPascal
unit LuaCombobox;
|
|
|
|
{$mode delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, lua, lualib, lauxlib, controls, StdCtrls, ExtCtrls, LuaWinControl;
|
|
|
|
procedure initializeLuaCombobox;
|
|
|
|
implementation
|
|
|
|
uses luahandler, luaclass;
|
|
//combobox
|
|
function createComboBox(L: Plua_State): integer; cdecl;
|
|
var
|
|
ComboBox: TComboBox;
|
|
parameters: integer;
|
|
owner: TWincontrol;
|
|
begin
|
|
result:=0;
|
|
|
|
parameters:=lua_gettop(L);
|
|
if parameters>=1 then
|
|
owner:=lua_toceuserdata(L, -parameters)
|
|
else
|
|
owner:=nil;
|
|
|
|
lua_pop(L, lua_gettop(L));
|
|
|
|
|
|
ComboBox:=TComboBox.Create(owner);
|
|
if owner<>nil then
|
|
ComboBox.Parent:=owner;
|
|
|
|
luaclass_newClass(L, ComboBox);
|
|
result:=1;
|
|
end;
|
|
|
|
function combobox_clear(L: Plua_State): integer; cdecl;
|
|
var
|
|
combobox: tcustomcombobox;
|
|
begin
|
|
combobox:=luaclass_getClassObject(L);
|
|
combobox.clear;
|
|
result:=0;
|
|
end;
|
|
|
|
|
|
function combobox_getItems(L: PLua_State): integer; cdecl;
|
|
var
|
|
combobox: TCustomcombobox;
|
|
begin
|
|
combobox:=luaclass_getClassObject(L);
|
|
luaclass_newClass(L, combobox.items);
|
|
result:=1;
|
|
end;
|
|
|
|
function combobox_setItems(L: PLua_State): integer; cdecl;
|
|
var
|
|
combobox: TCustomcombobox;
|
|
begin
|
|
result:=0;
|
|
combobox:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)=1 then
|
|
combobox.Items:=tstrings(lua_ToCEUserData(L, 1));
|
|
end;
|
|
|
|
function combobox_getItemIndex(L: PLua_State): integer; cdecl;
|
|
var
|
|
combobox: TCustomcombobox;
|
|
begin
|
|
combobox:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, combobox.itemindex);
|
|
result:=1;
|
|
end;
|
|
|
|
function combobox_setItemIndex(L: PLua_State): integer; cdecl;
|
|
var
|
|
parameters: integer;
|
|
combobox: Tcustomcombobox;
|
|
a: integer;
|
|
begin
|
|
result:=0;
|
|
combobox:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
combobox.itemindex:=lua_tointeger(L,-1);
|
|
end;
|
|
|
|
|
|
function comboBox_getCanvas(L: PLua_State): integer; cdecl;
|
|
var
|
|
combobox: TCustomcombobox;
|
|
begin
|
|
combobox:=luaclass_getClassObject(L);
|
|
luaclass_newClass(L, combobox.canvas);
|
|
result:=1;
|
|
end;
|
|
|
|
procedure comboBox_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
begin
|
|
wincontrol_addMetaData(L, metatable, userdata);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'clear', combobox_clear);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setItems', combobox_setItems);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getItems', combobox_getItems);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getItemIndex', combobox_getItemIndex);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setItemIndex', combobox_setItemIndex);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getCanvas', combobox_getCanvas);
|
|
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Items', combobox_getItems, combobox_setItems);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'ItemIndex', combobox_getItemIndex, combobox_setItemIndex);
|
|
end;
|
|
|
|
procedure initializeLuaCombobox;
|
|
begin
|
|
lua_register(LuaVM, 'createComboBox', createComboBox);
|
|
lua_register(LuaVM, 'combobox_clear', combobox_clear);
|
|
lua_register(LuaVM, 'combobox_getItems', combobox_getItems);
|
|
lua_register(LuaVM, 'combobox_getItemIndex', combobox_getItemIndex);
|
|
lua_register(LuaVM, 'combobox_setItemIndex', combobox_setItemIndex);
|
|
lua_register(LuaVM, 'combobox_getCanvas', combobox_getCanvas);
|
|
end;
|
|
|
|
initialization
|
|
luaclass_register(tcustomcombobox, combobox_addmetadata);
|
|
end.
|
|
|