Здравствуйте!
Синхронную подсветку строки в нескольких таблицах можно реализовать двумя способами:
- для таблиц с полосой прокрутки изменением цвета ячеек. Скрипт по событию "Пользователь кликнул ячейку":
const nTables = 4; // число таблиц с однотипными последовательно нумеруемыми именами
var i, j, k, l: integer;
begin
i := Cell.Row; // индекс новой строки
j := Table1.Tag; // индекс подсвеченной строки. Начальное значение -1
if i = j then exit;
Table1.Tag := i; // хранение индекса подсвеченной строки (можно и в виртуальной переменной).
for l := 1 to nTables do
with GetTableByName('Table' + IntToStr(l)) as TM_Table do begin
if j >= 0 then for k := 0 to ColumnsCount - 1 do GetCell(k, j).Color := $6D6D6D; // удалить подсветку
for k := 0 to ColumnsCount - 1 do GetCell(k, i).Color := clMediumTurquoise; // подсветить
end;
end.
В данной реализации теряется исходная информация о цвете ячейки. Есть несколько вариантов восстановления цвета - вычисление по индексам, подсветка части ячеек и т.д.
- для таблиц без полосы прокрутки - позиционированием подсвечивающего объекта над/под таблицей. Скрипт для двух таблиц:
const Y5 = 128; Y6 = 176; // Y-координаты верхней строки таблиц (Свойство Y у обоих таблиц = 88 ! )
var i: integer;
begin
i := Cell.Row; // индекс новой строки
Text1.Y := Y5 + i * Table5.RowHeight;
Text2.Y := Y6 + i * Table6.RowHeight;
end.
Объект над таблицей блокирует доступ к таблице, под - требует наличие прозрачности у таблицы (либо торчащие "уши" объекта шире таблицы).
Для выделения строки контуром можно применить объект "Линия" над таблицей.
Примеры во вложении.
Предложения - см.
Замечания и пожелания по результатам использования объекта "Таблица":
Раз уж зашла речь о таблице, то могу добавить следующие пожелания (некритично, обходится посредством скриптов, но лучше перевести эти действия в Simple-Scada):
1. Добавить свойство смещение, определяющее сдвиг между началом данных и первой строкой экранной формы таблицы.
Запись смещения заново отображает таблицу на экране со строки смещения.
Сейчас реализовано посредством скрипта и "короткой" экранной таблицы, но возни много - периодическая перезапись из БД или из буферной таблицы.
2. Форматирование "вправо, ..." для строк, выходящих за размер соответствующего столбца.
Условно, урезанием строки слева, но несколько проблематично для не моноширинного шрифта.