Re: Визуальный интерфейс QVCLua: обсуждения, замечания, предложения
Пробую просто создать отдельное пустое приложение и вставить ваш код. Не срабатывает, даёт ошибку
attempt to call method 'SetText' (a nil value)
С GetText аналогичная ситуация.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
QUIK -> DDE → Lua: визуальные библиотеки → Визуальный интерфейс QVCLua: обсуждения, замечания, предложения
Пробую просто создать отдельное пустое приложение и вставить ваш код. Не срабатывает, даёт ошибку
attempt to call method 'SetText' (a nil value)
С GetText аналогичная ситуация.
Пробую просто создать отдельное пустое приложение и вставить ваш код. Не срабатывает, даёт ошибку
attempt to call method 'SetText' (a nil value)
С GetText аналогичная ситуация.
Чей "ваш"? swerg не давал Вам такой код. ))
Эти методы посоветовал sam063rus, никто кроме него не знает откуда они взялись, где живут, и как с ними работать применительно к qvclua. Попробуйте уточнить именно у него. )
Повторю - для Memo НЕТ встроенных в библиотеку методов вывода в файл.
Если Вам ну очень-очень это нужно, выхода у Вас как минимум два:
1. Дописать на Делфи в исходники библиотеки в Memo эти методы, например по образцу SaveToFile из StringGrig.
2. Сохраняйте значение контрола в файл функцией в синтаксисе Lua
Друзья! не надо ссориться!
Я всех рад здесь видеть, будьте, пожалуйста, взаимовежливы, как говорят в автобусах и метро.
Пишу для QVCLua (т.е. для VCLua 0.5, в ней автор сильно переделал обращение к разным методам/свойствам, теперь всё более "по дельфовому"
-- установить полностью новый текст в Memo
logMemo.Lines.Text = "12345"
-- прочитать полностью текст из Memo
message(logMemo.Lines.Text)
Методов SaveFromFile() и LoadFromFile() у TMemo - нет совсем. Постараюсь не забыть добавить, если кому-то надо.
В общем с данной проблемой уже справился другими методами.
swerg, Вы писали что пользуетесь уже другой более удобной библиотекой, был бы очень благодарен если бы Вы выложили её.
Возникла следующая потребность, какие функции отвечают за "клики" по таблице? Ну т.е я хочу сделать в приводе активный стакан, при клике на который, ставится заявка. Нет ли у кого-либо примеров ?
И еще один вопрос. Решил часть для удобства работы вынести в отдельные модули и отдельно их сохранить. В этих модулях вроде тоже всё прописываю, они работают, но при этом русские буквы приходят в основную программу и в квик в виде иероглифов
Вот текст модуля полный
require "qvcl"
VCL = vcl
function delete_order(a_num)
if a_num=="" then
message("активных заявок нет ",1)
estz=false
return
end
UNIQ_TRANS_ID = UNIQ_TRANS_ID + 1
EditSlku17.Text=tostring(UNIQ_TRANS_ID)
Log(1,"Текущий TRANS_ID" ,EditSlku17.Text)
t = {
["CLASSCODE"]=CLASS,
["SECCODE"]=SEC,
["ACTION"]="KILL_ORDER",
["ACCOUNT"]=ACCOUNT,
["TRANS_ID"] = tostring(UNIQ_TRANS_ID),
["ORDER_KEY"]=tostring(a_num)
}
res=sendTransaction(t)
p_file:write(os.date().." Снятие заявки номер "..tostring(a_num).." \n")
message("Удаляем заявку: сообщение "..tostring(res).."; номер "..a_num,1)
a_num=""
estz=false
end
Вы хотите сказать, что то, что у вас выводится через message() отображается кракозябрами?
Не верю, ибо оно ж у вас просто вот в файле Lua в виде констант текстовых написано и, как мы видим - читабельно.
Ну либо проверьте в какой кодировке у вас эти файлы сохранены - откройте их через стандартный виндовый Блокнот, например.
Вы хотите сказать, что то, что у вас выводится через message() отображается кракозябрами?
Не верю, ибо оно ж у вас просто вот в файле Lua в виде констант текстовых написано и, как мы видим - читабельно.
Ну либо проверьте в какой кодировке у вас эти файлы сохранены - откройте их через стандартный виндовый Блокнот, например.
Если все функции сложить с основной файл MaxTrade.Lua то всё будет на русском.
Если функция будет лежать в дочернем MaxTradeHandl.Lua то вот такие крокозябры.
Блокнотом открывается, всё ок.
Я понял: у вас файлы в UTF-8, да еще и с сигнатурой в первых двух байтах) - вот блокнот и отображает их хорошо.
Пересохраните файлы через "Save As..." с явным указанием кодировки (обычно выбирается внизу диалога сохранения), укажите кодировку "Windows 1251"
Я понял: у вас файлы в UTF-8, да еще и с сигнатурой в первых двух байтах) - вот блокнот и отображает их хорошо.
Пересохраните файлы через "Save As..." с явным указанием кодировки (обычно выбирается внизу диалога сохранения), укажите кодировку "Windows 1251"
нету такой кодировки (
ANSI
Unicode
UTF-8 вот варианты которые предлагаются
ANSI
Спасибо! помогло!
sam063rus, вы сейчас говорите о выводе сообщений куда?
Ради интереса выполните простой скрипт в QUIK из одной строчки, сохранив файл в кодировке UTFw/oBOM, и расскажите результат.
message("Привет")
sam063rus,
Вы же видите, что файл у вас в кодировке Windows-1251. А я просил сохранить в UTF и запустить.
В библиотеке же vclua 0.3.5.- вообще не надо ничего делать - прото сохранить в utf8-w/oBOM и нормально показывает русские буквы.
А вот здесь вы говорите истинную правду: в оригинальной vclua все строки надо в самом деле передавать в UFT-8 кодировке.
Поясните пожалуйста, как в данной библиотеке выглядит следующая функция: при клике два раза левой кнопкой мышки по ячейке таблицы, взять цену из этой ячейки и передать её в edit?
Или как в Lazarus найти подобные вещи?
function GetSelectedCell(L: Plua_State): Integer; cdecl;
как я понимаю это оно? Но пока не могу понять как пользоваться....
Можно ли изменить высоту строки в StringGrid?
Можно ли изменить высоту строки в StringGrid?
Нашёл:
for i = 1, 6 do hGrid:SetRowHeight(i, 18) end
А можно ли задать высоту для всех строк при создании StringGrid?
Можно ли задать, чтобы ширина колонки автоматически подбиралась под содержимое?
А можно ли задать высоту для всех строк при создании StringGrid?
hGrid.DefaultRowHeight = 10
Вероятно свойство надо задать до добавления строк.
Можно ли задать, чтобы ширина колонки автоматически подбиралась под содержимое?
В лазарусе у грида есть методы AutoSizeColumn(aCol: Integer) и AutoSizeColumns
Похоже, в VCLua они не доступны. Надо будет добавить, возможно полезные.
Так кто нибудь подскажет как клики мышкой по ячейкам таблицы обрабатывать?
hGrid.DefaultRowHeight = 10
Вероятно свойство надо задать до добавления строк.
Это свойство я как-то не заметил. Спасибо.
Кстати, свойство Height для некоторых элементов (ComboBox, FileNameEdit, SpinEdit...) не работает.
В лазарусе у грида есть методы AutoSizeColumn(aCol: Integer) и AutoSizeColumns
Похоже, в VCLua они не доступны. Надо будет добавить, возможно полезные.
А есть свойство, которое позволяет изменять ширину колонок пользователем вручную?
Есть задача очистить таблицу. Т.е., не просто очистить значения в ячейках, а удалить колонки или таблицу целиком. Как это можно сделать?
Есть такой метод DeleteColRow(isColumn, index), но я не могу понять, как его использовать.
Поясните пожалуйста, как в данной библиотеке выглядит следующая функция: при клике два раза левой кнопкой мышки по ячейке таблицы, взять цену из этой ячейки и передать её в edit?
Так кто нибудь подскажет как клики мышкой по ячейкам таблицы обрабатывать?
-- кликаем правой кнопкой мыши на ячейку -> -1
-- кликаем левой кнопкой мыши на ячейку -> -1
-- двойной клик -> переносится текст в Edit (параллельно значение "накручивается", конечно)
VCL = require "qvcl"
mainForm = VCL.Form( {
Height = 400, Width = 500, Caption = "Grid cell click",
Position = "poDefaultPosOnly",
OnClose = function (sender) is_run=false sender:Release() end
} )
edit = VCL.Edit( mainForm, { top=0, left=0 } )
edit.Text = ""
grid = VCL.StringGrid(mainForm, {
top=20, left=0, Height = 300, Width = 400,
RowCount = 3, AutoEdit = False, FixedCols = 1, FixedRows = 1, Flat = True,
OnDblClick = function(sender)
edit.Text = grid:GetCell(grid:SelectedCell())
end,
OnMouseDown = function (Sender, Button, Shift, x, y)
local delta
if Button == "mbLeft" then
delta = 1
elseif Button == "mbRight" then
delta = -1
end
local c,r = grid:MouseToCell(x, y)
grid:SetCell(c, r, tostring(grid:GetCell(c,r) + delta))
end
} )
grid:SetColParams({
{Width=100, Alignment="taRightJustify", Title={Caption="Col1", Alignment="taCenter"}},
{Width=100, Alignment="taRightJustify", Title={Caption="Col2", Alignment="taCenter"}},
{Width=100, Alignment="taRightJustify", Title={Caption="Col3", Alignment="taCenter"}},
})
for c = 1,grid.ColCount-1 do
for r = 1,grid.RowCount-1 do
grid:SetCell(c,r,tostring(r*100 + c))
end
end
mainForm:Show()
is_run = true
function main()
while is_run do
sleep(50)
end
end
function OnStop()
is_run = false
mainForm:Release()
end
Есть задача очистить таблицу. Т.е., не просто очистить значения в ячейках, а удалить колонки или таблицу целиком. Как это можно сделать?
Вот нашёл то, что нужно: для удаления элемента целиком используется метод :Free()
:Free() - это именно уничтожение объекта.
При этом - важно - Lua переменная не уничтожается, но обращение к ней вызовет падение терминала.
Если честно - то мне не очень понятна задача, по которой таблицу надо создать - а потом полностью удалить. Может достаточно скрыть ее, т.е. сделать невидимой, а потом при надобности опять отобразить?
Можно поподробнее задачу рассказать?
В зависимости от настроенных параметров (чекбоксов и пр.) таблица должна иметь определённое количество колонок. Причём изменение параметров приводит к изменению вида таблицы (количества колонок, заголовков, значений ячеек).
Можно было бы просто очищать ячейки и удалять/добавлять колонки, но я не разобрался, как это сделать.
Но, в любом случае, метод :Free() мне пригодится.
А есть свойство, которое позволяет изменять ширину колонок пользователем вручную?
grid.Options = grid.Options .. "goColSizing" -- позволяет пользователю менять ширину колонок при наличии FixedRows
grid.Options = grid.Options .. "goRowSizing" -- позволяет пользователю менять высоту строк при наличии FixedCols
Если оба свойства хочется добавить - писать надо отдельными строками добавление каждого свойства.
QUIK -> DDE → Lua: визуальные библиотеки → Визуальный интерфейс QVCLua: обсуждения, замечания, предложения
Форум работает на PunBB, при поддержке Informer Technologies, Inc