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

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

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

ART63

  • Постоялец
  • ***
  • Сообщений: 148
    • Просмотр профиля
Работа с таблицами
« : 13 Апреля 2022, 08:59:51 »
Добрый день!

Заполняю таблицу данными из БД. Одна колонка видимая, остальные скрытые. По клику на ячейку надо написать скрипт, который в зависимости от значений из скрытых колонок будет выполнять какое-то действие. И столкнулся с проблемой - как получить данные из этих ячеек. Я не нашел у TM_Cell ссылки на объект TM_Table. В итоге пришлось написать скрипт для каждой таблицы с явным указанием ее наименования. Универсальный не получился. Можно ли все же его написать каким-то образом?
Код
var
  sResult: string;
  lCell: TM_TableCell;
  lSubpage: TM_Subpage;
begin
  lCell:=tbMTS1.GetCell(Cell.Col+1,Cell.Row);
  sResult:='spg' + lCell.Text;
  lSubpage:=GetSubpageByName(sResult);
  if lSubpage <> nil then
    begin
      AddMessage(Now,mkMessage,'Выполнен переход на подстраницу ' + sResult,false,true);
      lSubpage.GoToSubpageClient(GetClientName);
    end;
end.

И второй вопрос: в списке свойств объекта TM_Cell есть WorkWith, на который я не нашел описание. Подскажите, пожалуйста, его назначение.

pan2000

  • Постоялец
  • ***
  • Сообщений: 170
    • Просмотр профиля
Re: Работа с таблицами
« Ответ #1 : 14 Апреля 2022, 13:12:35 »
    Здравствуйте.

  Поскольку видимый столбец только один - его индекс известен, то для перехода можно воспользоваться скриптом по одиночному нажатию ЛКМ.
Индекс столбца может передаваться в скрипт через свойство таблицы Tag. В случае, если видимости столбцов определяются значениями их ширины, можно вычислить индекс видимого столбца по максимальной (или пороговой) ширине.
Для таблицы с повторяющейся структурой столбцов, например "видимый"-"скрытый параметр (один или несколько)", индекс видимого  столбца вычисляется при перелистывании столбцов.
Во вложении пример для таблиц в 4 и 5 пар столбцов.

ART63

  • Постоялец
  • ***
  • Сообщений: 148
    • Просмотр профиля
Re: Работа с таблицами
« Ответ #2 : 15 Апреля 2022, 08:45:07 »
Добрый день!

Спасибо!
Я понял разницу в принципе работы: вы обрабатываете клик на таблицу, я на ячейку. В вашем варианте получается универсальный скрипт. Это здорово!
И все же мне кажется, что добавить в TM_TableCell свойство Parent: TM_Table или метод GetParentTable несложно, а возможности по работе с таблицами расширятся.
Также при создании локальной переменной в списке типов не появляется тип TM_TableCell (см. вложение).

Цитировать
И второй вопрос: в списке свойств объекта TM_Cell есть WorkWith, на который я не нашел описание. Подскажите, пожалуйста, его назначение.
И ответьте, пожалуйста, на этот вопрос.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 2996
    • Просмотр профиля
    • Simple-Scada
Re: Работа с таблицами
« Ответ #3 : 15 Апреля 2022, 10:42:45 »
Здравствуйте.

Добавили свойства OwnerTable и OwnerCol ячейкам таблицы в обновлении 2.6.0.0. С их помощью можно сделать Ваш скрипт универсальным.

Цитировать
И второй вопрос: в списке свойств объекта TM_Cell есть WorkWith, на который я не нашел описание. Подскажите, пожалуйста, его назначение.
Это свойство "Работать с", которое указывает с каким значением должна работать ячейка. Описание доступно по ссылке. Аналогичное свойство есть у компонента "Поле".

Цитировать
Также при создании локальной переменной в списке типов не появляется тип TM_TableCell (см. вложение).
Добавим тип TM_TableCell в список в след. обновлении.

ART63

  • Постоялец
  • ***
  • Сообщений: 148
    • Просмотр профиля
Re: Работа с таблицами
« Ответ #4 : 18 Апреля 2022, 14:45:47 »
Добрый день!

Не могу поменять цвет шрифта отдельной ячейки таблицы. Цвет ячеек меняется только настройкой в параметрах таблицы, но для всех.
При этом фон ячейки меняется. Что я делаю не так?
В моем примере цвет фиксированных ячеек синий, а шрифт белый. Для остальных должна быть инверсия - белый, синий.

Simple Scada

  • Глобальный модератор
  • *****
  • Сообщений: 153
    • Просмотр профиля
    • Simple-Scada
Re: Работа с таблицами
« Ответ #5 : 18 Апреля 2022, 15:06:57 »
Здравствуйте.

Не могу поменять цвет шрифта отдельной ячейки таблицы. Цвет ячеек меняется только настройкой в параметрах таблицы, но для всех. При этом фон ячейки меняется. Что я делаю не так?
См. опцию колонки/ячейки "Шрифт". По-умолчанию она = "как у таблицы", т.е. размер шрифта, прозрачность, цвет и остальные свойства шрифта наследуются от аналогичных свойств шрифта таблицы. Если нужно настроить уникальный шрифт для колонки/ячейки, то в свойстве шрифт выберите требуемый размер шрифта и измените другие необходимые свойства.

ART63

  • Постоялец
  • ***
  • Сообщений: 148
    • Просмотр профиля
Re: Работа с таблицами
« Ответ #6 : 18 Апреля 2022, 15:16:57 »
Очень неоднозначный интерфейс. Если по шрифту написано, что "как у таблицы" или "как у колонки" , то цвет дает возможность выбирать. Тогда и по цвету надо писать "как у ...". Трудно понять, что "как у ..." относится ко всем параметрам шрифта. А так получается, что выбираешь цвет шрифта, а он не соответствует настройкам. Или при выставленном "как у ..." не давать возможности изменять остальные параметры шрифта.
Еще было бы здорово дать возможность задавать цвет шрифта фиксированных колонок.