Синтаксис
function RowIndex: Integer;
Описание
Возвращает индекс последней выделенной строки таблицы без привязки к клиенту. Возвращает "-1", если ни одна строка не выделена. Например, имеется три клиента, сначала на первом клиенте пользователь выделил первую строку, затем на втором выделили вторую, на третьем третью строку - в этом случае RowIndex вернет третью строку, т.к. она была выделена последней. Рекомендуется использовать функцию RowIndex по событию OnClick, тогда в скрипте гарантированно будет производиться работа с выделенной на текущем клиенте строкой.
Важно! Данная функция работает только в скриптах, к вызову которых приводят действия пользователя выполненные через клиент скады (или web-клиент). К ним относятся скрипты назначенные на следующие события:
•OnClick (пользователь кликнул объект),
•OnDblClick (пользователь дважды кликнул объект),
•OnMouseUp (пользователь отпустил ЛКМ),
•OnDoneInput (пользователь завершил ввод в поле),
•OnCellClick (пользователь кликнул ячейку таблицы),
•OnEnter (пользователь перешел на страницу),
•OnLeave (пользователь покинул страницу),
•OnSubpageEnter (пользователь перешел на подстраницу),
•OnSubpageLeave (пользователь покинул подстраницу),
•OnShow (окно было открыто на клиенте),
•OnClose (окно было закрыто на клиенте);
В таких скриптах точно известно, какой клиент их вызвал, поэтому в них функция RowIndex работает, возвращая индекс выделенной строки на этом клиенте. В других скриптах, которые выполняются сервером скады независимо от клиентов, она работать не будет. Например, в скриптах на события OnDataChange, OnDataChangeEx, OnDoneSQL, "Запуск проекта", "Остановка проекта", "Выполнен SQL-запрос", "Таймер", "Начало часа", "Отчет построен" и т.д. Для примера рассмотрим скрипт с типом события "Таймер". Такой скрипт выполняется сервером Simple-Scada через заданный в парамерах скрипта интервал, даже когда к проекту не подключен ни один клиент. Вызов RowIndex в этом скрипте будет всегда возвращать -1, т.к. сервер не знает, для какого именно клиента нужно вернуть имя (ведь клиентов может быть много и у каждого клиента может быть задано уникальное имя).
Пример кода
var
aIndex: Integer;
begin
// получить индекс выделенной строки в таблице "Table1"
aIndex := Table1.RowIndex;
end.