Добрый день!

Подскажите, пожалуйста, как поменять цвет текста заголовка столбца реестра, и, соответственно, фон всего столбца?

Спасибо!

Нравится

4 комментария

цвет столбца
цвет заголовка?.. не думаю

Оп, действительно столбец легко менять, странно что не заметил.

А цвет текста заголовка может все-таки можно как-то программно поменять?

Добрый день, коллеги.

По столбцам менять цвет/шрифт объект грида не позволяет. Можно только по срокам и/или ячейкам.
Свойство Color интерфейса IDataGridColumn позволяет задавать цвет текста в ячейке по умолчанию, но доступа к изменению цвету заголовка таблицы, к сожалению, нет.

Все понял, спасибо!

Показать все комментарии

Возможно ли изменить цвет элемента формы NumericEdit?

Нравится

2 комментария

Да, об этом писал Лучкив Александр в своем блоге

ясно, значит обновляться надо

Показать все комментарии

Для того, чтобы на детали «Контакты» раздела «Контрагенты» основной контакт был выделен жирным шрифтом, Вам необходимо выполнить следующие действия:

1. Запустить TS Admin под пользователем с правами администратора;
2. Открыть сервис скрипта scr_ContactsInAccountGridArea;
3. Найти в этом скрипте функцию grdDataOnGetRowDrawInfo и добавить в нее фрагмент

         var dsAccount = Services.GetNewItemByUSI('ds_Account');
         var CurrentAccountID = BaseGridArea.GridDataset.Values('AccountID');
         ApplyDatasetFilter(dsAccount, 'ID', CurrentAccountID, true);
         dsAccount.Open();
         var MainContact = dsAccount.Values('PrimaryContactID');
         dsAccount.Close();
         if (MainContact == BaseGridArea.GridDataset.Values('ContactID')) {
                   Font.bold = true;
         }

как показано на скриншоте:

/system/files/3_18.png

Сохраните изменения.

4. Откройте сервис sq_ContactInAccount, установите фокус на колонку AccountID и установите флаг «Всегда выбирать в запросе»:

/system/files/4_13.png

Сохраните изменения.

Перезапустите TS Client для проверки функционала:

/system/files/fin.png

Нравится

Поделиться

0 комментариев
Показать все комментарии

Коллеги, многие из вас знают о моем увлечении пользовательскими интерфейсами.

Спешу сообщить вам о новых возможностях отображения элементов управления в версии 3.4.0.
В новой версии разработчику предоставлен свободный выбор цвета текста, цвета фона, шрифта и цвета заголовка элементов управления. Добавлены также возможности выделять другим шрифтом и цветом фона каждую вкладку PageControl.

Это дает возможность разработчику делать карточки (любые другие окна) более функциональными, выделяя важные элементы или реализуя дополнительную логику.
Кроме того, актуальными остаются возможности, описанные в моей предыдущей статье о возможностях кастомизации контролов

Давайте рассмотрим на примере.
Вот пример доработанной карточки Инцидента:
Карточка Инцидента

Как видим на скриншоте, одна из вкладок карточки и несколько полей ввода выделены для привлечения внимания пользователя.
Как это реализовано:

/* Сделаем поле "Признаки (Симптомы)" cо светло-зеленым фоном (свойство Color) и темно-зеленым цветом (свойство TextColor) текста */
  edtSynopsis.Color = clMoneyGreen;
  edtSynopsis.TextColor = clGreen;

/* Светло-голубой фон для поля "Контакт" */
  edtContact.Color = clSkyBlue;

/* Выделим поле "Продажа" */
  edtOpportunityID.Color = clYellow;
  edtOpportunityID.TextColor = clTeal;

/* Выделим вкладку "Разрешение и оценка" ActiveCaptionColor - цвет текста вкладки, когда она активна;
ActiveFont - шрифт вкладки, когда она активна */

  pgResolution.ActiveCaptionColor = clYellow;
  pgResolution.ActiveFont.Bold = true; 

/* HotCaptionColor - цвет текста вкладки, при наведении указателя мыши;
HotFont - шрифт вкладки, при наведении указателя мыши */
 
  pgResolution.HotCaptionColor = clWhite;      
  pgResolution.HotFont.Bold = true;
  pgResolution.HotFont.Underline = true;       

/* RegularCaptionColor - цвет текста вкладки в обычном режиме - она не активная в данный момент;
HotFont - шрифт вкладки в обычном режиме */

  pgResolution.RegularCaptionColor = clBlue;
  pgResolution.RegularFont.Bold = true;

Свойства по изменению фона поля ввода и цвета текста в поле ввода применимы ко всем элементам управления, которые содержат поле текстового ввода (Edit, ComboBox, EnumControl, Memo, LookupControl и др., а также соответствующие им Data-контролы).

Теперь вы ознакомлены с новыми возможностями контролов и вам решать как их можно использовать.

Приведу несколько возможных применений:
1. Выделение важных элементов карточки
2. Контроль ввода значений в обязательные поля. В примере ниже пользователю будет сразу видно какие из обязательных полей не заполнены (например выделить их красным) а какие заполнены неправильно (темно-оранжевым)
Выделение ошибок заполнения контролов

При вводе значений в такие поля можно сразу с помощью выделения цветом показывать пользователю корректно ли введена информация. Такой подход повсеместно используется в веб-интерфейсах.

Думаю многим будут полезны новые возможности.
Приятной разработки! :wink:

Нравится

Поделиться

5 комментариев

Один вопрос - когда же выйдет версия 3.4? :smile:

"Валерий Андрусик" написал:Один вопрос - когда же выйдет версия 3.4?

Вопрос Валерия весьма актуален.

Коллеги, версия 3.4 выйдет в 1-й половине июля

А можно поменять цвет поля и шрифта(серый) для поля, недоступного для редактирования?

Для поля, у которого в датасете установлено свойство Read Only можно переопределить цвет шрифта (начиная с версии 3.4.1 в окне свойств компонента окна, в версиях ниже - скриптом). Для контрола, у которого установлено свойство IsEnabled = false - переопределить цвет нет возможности.

Показать все комментарии

Есть большое желание раскрасить серую жизнь, но не знаю где взять коды цветов.
К примеру занести в CaptionColor.

Нравится

8 комментариев

Интересно, а что Вы красить хотите?

FloatDataControl.CaptionColor - реквизит в форме окна

Подбирайте нужный цвет в любом графическом редакторе, скажем паинт или фотошоп и копируйте от туда 16тиричное значение.

"Доленко Юрий" написал:Подбирайте нужный цвет в любом графическом редакторе, скажем паинт или фотошоп и копируйте от туда 16тиричное значение.

Не получаеться в фотошопе выбираю ярко-красный, а в TS получаеться сиреневый.
Беру из TS

var clBlue = 0xFF0000;

получается в фотошопе красный.

"chess" написал:Не получаеться в фотошопе выбираю ярко-красный, а в TS получаеться сиреневый.

эм ... неужто делфи как-то по-другому их интерпретирует.
Не знаю, надо ждать местных терасовтцев)

Разобрался!
фотошоп и др. нормальные программы:
Красный FF0000
Зеленый 00FF00
Синий 0000FF

TS (пусть он будет здоров):
var clGreen = 0x008000;
var clRed = 0x0000FF;
var clBlue = 0xFF0000;

Надо первый и третий байты менять местами.
Всем Спасибо за участие.

"chess" написал:пусть он будет здоров

тяжела и неказиста жизнь террасофт программиста.
Потуги защитить систему выливаются в бока в функциональных возможностях, привыкайте ;)

"Глова Сергей" написал:Интересно, а что Вы красить хотите?

О Пасхе подумалось... :redface:

"chess" написал:
Надо первый и третий байты менять местами.

Интересно, не знал о такой тонкости

Показать все комментарии

У многих пользователей системы Terrasoft CRM в разделе "Задачи" создано множество задач с различными типами. И вопрос зависимости
цвета задачи от ее типа является более нужным и востребованым, чем зависимость цвета задачи от состояния (как это реализовано в стандартной версии). Например, задачи с типом "Звонок" необходимо выделять синим цветом среди сотни задач сегодняшнего расписания, а задачу "Втреча" красным (для того, чтобы она не осталась незамеченной).

Предлагаю заменить функционал зависимости цвета от состояния на зависимость цвета от типа задачи следующим образом:
1. В таблицу tbl_TaskType довавляем поле Color с типом "Целое число".
2. Добавляем поле цвета в сервис sq_TaskType.
3. Добавляем целочисленное поле (IntegerDataField) в датасет ds_TaskType.
4. В карточку редактирования wnd_TaskTypeEdit добавляем контрол ColorBoxDataControl. Устанавливаем необходимые значения свойствам DatasetLink и DataFieldName.
5. Открываем запрос на выборку sq_Task. В этом запросе нужно изменить уже существующее поле StatusColor. А именно, сделать выборку поля Color из таблицы tbl_TaskType.
После сохранения всех внесенных изменений и перезапуска рабочего приложения, при выборе цвета в справочнике "Типы задач", созданные задачи будут подсвечиваться этим цветом.

Желаю удачи!

С уважением,
Мельникова Екатерина

Нравится

Поделиться

38 комментариев

Отлично! Я первый пользователь данной функциональности!
Ещё бы задачи с приоритетом "Срочно" или "Критично" всегда были наверху, в независимости от сортировки (опцию можно сделать отключаемой)

Вопрос.
Как прикрутить данную функциональность к разделу Контрагенты?
Проделал всё вышеописанное для собственного справочника, как теперь прикрутить цвета к гриду?

Пытаюсь сделать тоже самое для договоров по статусу...
"Подписан. Оплачен.", "Не подписан. Не оплачен."...
Проделал вышеизложенный алгоритм со справочником "Состояние договора" и с sq_Contract, ds_Contract.
Создал в scr_ContractsGridArea для grdData

function GetContractColorByDatasetRecord(Dataset) {
	var TextColor = Dataset.ValAsInt('Color');
	return TextColor;
}
 
// --------------
// Event handlers
// --------------
 
function grdDataOnGetRowDrawInfo(DataGrid, Color, TextColor, ImageName, Font) 
{
TextColor.Value = GetContractColorByDatasetRecord(BaseGridArea.GridDataset);
}

по аналогии с Задачами...
Но всё равно раскраска не происходит...

---
Конфигурация:
TSCRM 3.3.1.36
Firebird 2.0 (v.2.0.3.12981)

Александр, а HasCustomDraw в реестре включили?

уже включил...))
спасибо за подсказку, всё работает)

---
Конфигурация:
TSCRM 3.3.1.36
Firebird 2.0 (v.2.0.3.12981)

Отличная возможность + описание:twisted:
Счета, Документы, Договора - всё расскрасил!:wink:
Вот только при добавлении ColorBoxDataControl'а появляется сообщение "Разрушительный сбой!"...Никаких проблем после не возникало. Надеюсь так и останется просто плохим воспоминанием))

Я, например, в своих проектах стараюсь избегать раскраски реестра - вместо нее использую различные иконки в реестре (в зависимости от типа и состояния).

Ну, раскраска - это не мой креатив, а привычка тех, кто много лет работал еще с 2.8
Да и вообще, как говорят: "на вкус и цвет фломастеров нет":lol:
А вот с ошибкой непонятно:confused:

В родительских/подчиненных документах цветом не выделяется.
Внес нужные изменения в wmd_DocumentInDocumentGridAreaScript,
и не могу подобрать нужное значение в ф-ю GetContractColorByDatasetRecord() в обработчике grdDataOnGetRowDrawInfo.

Для реализации необходимого Вам функционала нужно выполнить следующие действия:
1. Сперва добавить поле Color в каждый из UNION sq_ChildDocument (из таблиц DocumentStatus, ContractStaus и BillStatus). Безусловно, предварительно нужно будет создать целочисленное поле Color в таблице, запросе, датасете и окне справочников "Состояния счета" и "Состояния договора".
2. Добавить целочисленное поле Color в ds_ChildDocument.
3. Добавить поле Color в каждый из UNION sq_ParentDocument.
4. Добавить целочисленное поле Color в ds_ParentDocument.
5. Установить для grdData в wnd_DocumentInDocumentGridArea свойство HasCustomDraw в true.
6. Прописать функцию и обработчик таким образом:

function GetDocumentColorByDatasetRecord(Dataset) {
        var TextColor = DocumentInDocument.Dataset.ValAsInt('Color');
        return TextColor;
}
 
// ----------------------------------------------------------------------------
// Event handlers
// ----------------------------------------------------------------------------
function grdDataOnGetRowDrawInfo(DataGrid, Color, TextColor, ImageName, Font) {
TextColor.Value = GetDocumentColorByDatasetRecord(DocumentInDocument.Dataset);	
}

7. Сохраните внесенные изменения. Перезапустите рабочее приложение Terrasoft CRM и протестируйте работоспособность функционала. В результате при указании документа, договора или счета - они будут подсвечиваться цветами, указанными в справочниках состояний.

Желаю удачи!

Так ведь и делал, только вот в вместо DocumentInDocument.Dataset писал DocumentInDocument.
А, и "Всегда выбирать в запросе":smile:
Спасибо!

"Мельникова Екатерина" написал:

"Швец Александр" написал:

я все проделал как описано - строки грида или текст окрашиваются нормально, но только если я вывожу колонку Color в гриде (в представлении gvMain грида определяю колонки и делаю colStatusColorgvMain видимой и доступной), но если сделать колонку невидимой для каждой строки грида выдается ошибка "Ошибка выполнения метода 'grdDataOnGetRowDrawInfo'. Поле 'Цвет' не активно «Call Stack»" и строки не окрашиваются.

Вопрос: Как сделать так чтоб колонка "Цвет" не выводилась и при этом корректно осуществлялась возможность раскрашивать строки грида?

Для колонки цвет сделайте "всегда выбирать в запросе" .

поменяйте функцию

function GetDocumentColorByDatasetRecord(Dataset) {
        var TextColor = DocumentInDocument.Dataset.ValAsInt('Color');
        return TextColor;
}

на такой вид

function GetDocumentColorByDatasetRecord(Dataset) {
        var TextColor = GetFieldValueFromDisabledField(Dataset, 'Color');
        return TextColor;
}

Или просто поставьте для поля Color галочку "Всегда выбирать в запросе" в сервисе запроса

Оба варианта ([1]Сделать колонку цвет "всегда выбирать в запросе" и [2]воспользоваться функцией GetFieldValueFromDisabledField()) работают - спасибо

Здравствуйте!
Помогите решить проблемы (Terrasoft 3.3.1.65).
1. Я раскрасил реестр (главные записи дерева), все работает.
Мне нужно забрать раскраску выделенной записи, то есть при изменение фокуса в реестре (при переходе на другую запись), данная запись выделяется стандартным оранжевым цветом. Думаю с рисунков будет понятнее:

2. Есть ли возможность при выборе ячейки (фокус или клик) вывести Caption?

Когда-то для реестра я включил прозрачность выделения (альфа = 128). Для дерева пока осталось по старому. Сегодня-завтра обязательно исправлю это недоразумение. Если не будет никаких нюансов -- то отпишусь какую версию бинарных файлов нужно взять.

Спасибо! Будем ждать! :smile:
Может заодно подправить DataGrid.SelectedColumn (всегда возвращает null)?

"genekogo" написал:Может заодно подправить DataGrid.SelectedColumn (всегда возвращает null)?

Исправить не обещаю -- но посмотрю обязательно.

"Александр Кравчук" написал:Когда-то для реестра я включил прозрачность выделения (альфа = 128). Для дерева пока осталось по старому. Сегодня-завтра обязательно исправлю это недоразумение. Если не будет никаких нюансов -- то отпишусь какую версию бинарных файлов нужно взять.

Поправил в 3.3.1.89 и 3.3.2.26:

"genekogo" написал:Может заодно подправить DataGrid.SelectedColumn (всегда возвращает null)?

Поправил также в 3.3.1.89 и 3.3.2.26.
Вот теперь я усну... :wink:

Саша! Низкий поклон и сладких снов!!!
:twisted:

--
www.it-sfera.com.ua

"genekogo" написал:Есть ли возможность при выборе ячейки (фокус или клик) вывести Caption?

Уточните, пожалуйста, какой Caption Вы имеете ввиду. Объясните, пожалуйста, на конкретном примере, поскольку не совсем очевидно, какой именно функционал Вам нужно реализовать.
Заранее спасибо за помощь.
Ожидаю ответа.

Мельникова Екатерина

Когда текст не вмещается в поле реестра появляется надпись (на рисунке поле «Заголовок»). Например, вместо надписи с текстом «Контроль оплаты счета (t)» я хотел бы отобразить надпись с текстом «Тестовая надпись» (и неважно вмещается текст в поле реестра или нет).
Есть ли возможность при выборе ячейки (фокус или клик) вывести свой Caption?

"genekogo" написал: Например, вместо надписи с текстом «Контроль оплаты счета (t)» я хотел бы отобразить надпись с текстом «Тестовая надпись».

Т.е. Вы хотите изменить хинт ячейки?

Да. :smile:

Никогда ни от кого не слышал такого пожелания. Для чего это может понадобится?

"Александр Кравчук" написал:Никогда ни от кого не слышал такого пожелания. Для чего это может понадобится?

А вот это я давно хотел увидеть в контролах - скажем подсказка-описание что за страшная информация скрывается в данном поле и каково ее назначение.

"Александр Кудряшов" написал:А вот это я давно хотел увидеть в контролах - скажем подсказка-описание что за страшная информация скрывается в данном поле и каково ее назначение.

Подсказка это одно, а это ведь хинт, который показывает не влезающий в ячейку текст.

У меня исследовательский интерес)) о полезном тоже можно - если ячейка отображает значение вычисляемого поля, можно было бы для менеджеров в этом хинте показывать, например, комментарии/разъяснение к этому результату...

Пример (из данной ветки форума): выводим в реестр информацию о продажах по дням

Когда наводим на ячейку, я хочу, что бы клиент увидел какую-то детализацию. Например, процентное наполнение дня... и т.д.

--
www.it-sfera.com.ua

если ячейка отображает значение вычисляемого поля, можно было бы для менеджеров в этом хинте показывать, например, комментарии/разъяснение к этому результату...

+1

--
www.it-sfera.com.ua

Ну что ж, заводите идею.

Вопрос такой, Подскажите пожалуйста как мне реализовать цветность в проектах?

1. В сервисе wnd_ProjectsGridArea в свойстве grdData необходимо найти свойство HasCustomDraw и присвоить ему значение true
2. В сервисе sq_Project для поля TypeID и активировать опцию "Всегда выбирать в запросе"
3. В сервисе wnd_ProjectGridArea найдите grdData и на закладке "Свойства" найдите свойство OnGetRowDrawInfo. Дважды кликните на правой части этого поля. В результате Вы автоматически перейдете в скрипт, в обработчик данного события.
4. В обработчике данного события необходим прописать следующее
function grdDataOnGetRowDrawInfo(DataGrid, Color, TextColor, ImageName, Font) {
// DefineRowDrawInfo(Color, TextColor, ImageName, Font);
var Dataset = dlData.Dataset;
var TypeID = Dataset.Value('TypeID');
switch (TypeID) {
case Type1:
TextColor.Value = clGreen;
break;
case Type2:
TextColor.Value = clRed;
break;
default:
TextColor.Value = clBlack;
break;
}
В данном скрипте вместо Type1, Type2, Type3 необходимо ставить ID типов инцидентов, которые предварительно нужно посмотреть в таблице tbl_ProjectType в используемой Вами СУБД
Что касается цветов, то Вы можете просмотреть перечень всех возможных цветов в сервисе scr_Const

А как раскрасить расписание? Не текст а event. подобие задач не предлагать - не получается

Здравствуйте! Посмотрите реализацию изменения цвета фона задач в расписании, в зависимости от состояния во вложенном файле.

Показать все комментарии