Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Работа с таблицами  (Прочитано 2177 раз)

Vladilen

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Работа с таблицами
« : 12 Октября 2021, 14:28:55 »
Здравствуйте!
Помогите разобраться. При работе со строками таблицы скады меняю цвет выбранной строки ' Cell.Color := RGB(0, 100, 0); ' в событии ' _OnCellClick ' таблицы. Как написать возврат цвета при выборе другой строки?

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3224
    • Просмотр профиля
    • Simple-Scada
Re: Работа с таблицами
« Ответ #1 : 12 Октября 2021, 19:34:06 »
Здравствуйте.

Цитировать
Как написать возврат цвета
Присвоить цвет clNone (без цвета):
Код
Cell.Color := clNone;
Если Вы таким способом реализуете собственное выделение, то учитывайте, что выделение увидят все подключенные к проекту клиенты. Т.е. один клиент нажмёт на строку, строка выделится в соответствии с созданным Вами скриптом и это выделение увидят все клиенты, даже те, которые ничего не выделяли в таблице.
« Изменён: 12 Октября 2021, 19:37:59 от Simple-Scada »

Vladilen

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Работа с таблицами
« Ответ #2 : 13 Октября 2021, 05:50:06 »
Здравствуйте!
Этот метод не работает, т.к. в этот момент Cell.Color ссылается уже на другую строку.

pan2000

  • Постоялец
  • ***
  • Сообщений: 229
    • Просмотр профиля
Re: Работа с таблицами
« Ответ #3 : 13 Октября 2021, 10:12:13 »
 Здравствуйте.

Нужно запоминать координаты предыдущей ячейки, например в свойстве Tag таблицы (или отдельной переменной):
Код: (delphi)
begin
  with Table1 do begin
    if Tag >= 0 then                                               // для первого клика начальное значение Tag = -1 (нет предыдущей)
      GetCell(Tag div RowCount,Tag mod RowCount).Color := clNone;  // восстановить цвет предыдущей выбранной ячейки
    Tag := Cell.Col * RowCount + Cell.Row;                         // координаты текущей ячейки
    Cell.Color := RGB(0, 100, 0);                                  // изменить цвет выбранной
  end;
end.
Во вложении пример для подсветки отдельной ячейки и всей строки.

Vladilen

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Работа с таблицами
« Ответ #4 : 13 Октября 2021, 12:06:57 »
Спасибо!