Разумеется, в квиковской справке ничего этого нет, ведь это сторонняя библиотека для Lua, с QUIK она никак не связана.
Как известно, сделана VCLua в среде Lazarus (это этакая кросс-платформенная реализация языка Pascal на основе компилятора Freepascal плюс библиотека визуальных компонент, сделанная по мотивам штатной библиотеки VCL из Delphi). [url=http://www.lazarus.freepascal.org/]Lazarus этот запросто можно установить[/url] на Linux или Window машину.
Дальше идея в библиотеке VCLua простая: в нее перетянуты несколько компонент, доступных в этой самой Lazarus/Delphi.
Из Lua через эту библиотеку доступны все Published-свойства таких компонент (т.е. классов; Published - это такой тип видимости для мембер-свойств класса в Pascal), плюс доступны некоторые другие свойства, которые были специально добавлены разработчиками VCLua. При этом, т.к. исходники доступны - каждый легко может добавить любую отсебятину по вкусу.
Собственно потому, что свойства компонент, доступных в VCLua, совпадают с таковыми в Delphi/Lazarus - автор и не видел смысла делать хелп, так я думаю )
(не смотря на то, что у меня есть стойкое впечатление, что я хелп, хоть и весьма бестолковый, по VCLua видел, но что-то совершенно не попадается он мне сейчас; глюки?)
Но ближе к вопросу. На примере StringGrid покажу алгоритм как я ищу те или иные методы, доступные из Lua в библиотеке VCLua.
1. Что касается Published свойств и событий - то у меня просто установлена Lazarus, мне проще посмотреть там (бросив на форму компонент StringGrid и посмотрев какие есть свойства и события). Все Published-свойства и события как раз доступны и отображаются визуально. Кто пользовался Delphi - понимает о чем я.
Хорошая справка по всем свойствам/методам/событиям есть в Delphi, для Lazarus я что-то не нашел (хотя, вроде, видел). На сайте embarcadero (производителя Delphi) мне что-то тоже не попалось online-хелпа. Найдется ссылка - добавлю сюда.
В общем я просто смотрю прямо в Lazarus.
Например, нам нужно найти событие клика мыши. Смотрим список событий - понятно, что это OnClick. Там же смотрим его параметры и добавляем их в наш Lua-код для соответствующего назначенного на событие обработчика.
2. Второй источник инфы - это исходники VClua.
Какие методы, кроме тех, что в Lazarus/Delphi объявлены как Published, доступны для грида в VCLua?
В исходниках VCLua открываем файл LuaStringGrid.pas и в нем смотрим содержание функции ToTable(). Таковая есть во всех модулях. В ней вот в таком виде перечислены все свойства-методы, доступные в StringGrid в коде Lua из через библиотеки VClua помимо тех, которые имеют тип Published:
procedure ToTable(L:Plua_State; Index:Integer; Sender:TObject);
begin
SetDefaultMethods(L, Index, Sender);
SetAnchorMethods(L,Index,Sender);
LuaSetTableFunction(L, Index, 'GetCell', @CellsGet);
LuaSetTableFunction(L, Index, 'SetCell', @CellsSet);
LuaSetTableFunction(L, Index, 'SetCellColor', @SetCellColor);
LuaSetTableFunction(L, Index, 'ColToTable', @ColsGet);
// .........
LuaSetTableFunction(L, Index, 'MouseToCell', @GetMouseToCell);
// ......... здесь еще несколько вызовов для добавления разных "методов", опускаю для упрощения ......
// ......... а это стандартная концовка функции ToTable(), таким образом добавляются все те методы, которые объявлены как published, т.к. информация о них они доступна через RTTI ......
LuaSetMetaFunction(L, index, '__index', LuaGetProperty);
LuaSetMetaFunction(L, index, '__newindex', LuaSetProperty);
end;
Дуступные из Lua-названия методов те, что написаны в апострофах.
Там как раз видим ту самую MouseToCell, которая нужна нам, чтобы перевести текущие координаты мыши в момент клика в номер столбца/строки грида. Параметры опять же можно посмотреть по справке Delphi/Lazarus, плюс заглянуть в исходник функции GetMouseToCell чтобы увидеть какие и сколько параметров она принимает (первый параметр для любого метода - всегда сам компонент, т.е. здесь Grid, чтобы обеспечить синтаксис вида grid:Method! не забываем про это) и какие параметры, сколько и как именно возвращает. Соответственно видим, что принимается 3 параметра (грид, x, y) и возвращается 2:
function GetMouseToCell(L: Plua_State): Integer; cdecl;
var
lStringGrid:TLuaStringGrid;
X,Y,c,r :Integer;
begin
CheckArg(L, 3, 'GetMouseToCell');
lStringGrid := TLuaStringGrid(GetLuaObject(L, 1));
X := trunc(lua_tonumber(L,2));
Y := trunc(lua_tonumber(L,3));
lStringGrid.MouseToCell(X, Y, c, r);
lua_pushnumber(L,c);
lua_pushnumber(L,r);
Result := 2;
end;