Цвет строк в представлении

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#1
Как настроить отображение цвета строк в представлении : http://codeby.net/forum/threads/32848.html, в той теме есть еще ряд примеров.

1. Общий (в зависимости от полей документа):
В дизайне вьюхи делается скрытый столбец с галкой use value as color, а на столбце пишется формула - в зависимости какие значения нужно контролировать и какие цвета подставлять.
Можно так:
@If(@Attachments; "0000ffff"; "dddd0000")
А можно так:
Цвет текста и фона строки в представлении можно настроить через формулу в колонке с "Use value as color", возвращающей список из 3 или 6 элементов.
Значение из 3 чисел укажет RGB-значения для цвета текста. Цвет фона не меняется.
Значение из 6 чисел укажет RGB-значения для цвета фона (первые 3 числа) и текста (вторые 3 числа).
Появились в Release 6.
Пример: от значения поля Status в документе меняется цвет текста
@If(Status="0";255:0:0; Status="1";0:0:128; Status="2";0:127:0; 0:0:0)

P.S. Сталкивались с ситуацией, что в вебе не работает выделение цветом дочерних документов во встроенном представлении с галкой отображения иерархии ответов, без галки все работает. Решали через раскраску таких документов javascript-кодом.

2. Из темы Цвет для непрочитанных документов:
Цвет непрочитанных настраивается в свойствах представления (3-я закладка) Rows / Unread, при этом на предпоследней вкладке ("Advanced") в "Unread marks" надо, чтобы не было установлено None.
У цветовой колонки приоритет больше, чем у цвета в св-вах вида.
Чтобы в колонке цвета указать, что должен использоваться цвет из св-в вида, надо добавить NOCOLOR:=-1:1:1;

3. (настраиваемый), пример lmike из темы http://codeby.net/forum/threads/32848.html
Во вью создаём скрытый столбец с галками "Use value as color" и "User definable", в поле "Profile document" указываем имя профиля "ColorProfile", на последней закладке указываем Name: имя поля в профиле "$colorScheme", в формулу столбца пишем @UserName.

сабформу ColorProfile, с полями
CFD (скрытые)
BGdef:"00ffffff", FGdef:"00000000"

Editable, типа Color:
BGcolorChoice, FGcolorChoice

и результир. Computed (скрытое), типа текст:
$colorScheme
с содержимым:
{FG:="}+FGColorChoice+{";BG:="}+BGColorChoice+{";}+{v:=@If(@IsAvailable(name);@if(@Like(@LowerCase(name);"cm_%");BG:FG;"");"");v}

в завис. от содержимого поля (name) дока - цвет

форму ProfileForm с вычисляемой сабформой:
Код:
varname:="currentProfile";
profile:=@Environment(varname);
@Environment(varname;"");
profile
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">и агент для обновления профайла:</div></div><div class="sp-body"><div class="sp-content">
Код:
 Dim session As notessession	
Dim db As notesdatabase
Dim uiws As New notesuiworkspace
Dim nSuccess As Integer
Dim strDialogMode As String
Dim m_profile As notesdocument
Dim profileName As String
Dim envVarName As String
Dim profileTitle As String
Dim profileForm As String
Dim checkChanges As String
Dim wks As New NotesUIWorkspace

envVarName="currentProfile"
profileForm="profileForm"

profileName="ColorProfile"
profileTitle="Цветовой профайл"
checkChanges="colorsChange"

On Error Goto errorhandler	

Set session = New notessession
Set db = session.currentdatabase

If session.Notesbuildversion < 178 Then
Messagebox("This template doesn't support using the R5 client to modify your preferences.")
Exit Sub
End If
Set m_profile = db.GetProfileDocument(profileName)
'	Call m_profile.save(False,False)
Call m_profile.ReplaceItemValue(checkChanges, "0")
strDialogMode = session.GetEnvironmentString("$DialogMode")
Call session.SetEnvironmentVar(envVarName,profileName)
If Len(strDialogMode) Then
Call m_profile.ReplaceItemValue("$DialogMode",Cint(strDialogMode))
Else
Call m_profile.RemoveItem("$DialogMode")			
End If	
nSuccess = uiws.dialogbox(profileForm,True,True,False,False,False,False,profileTitle,m_profile,True,Fa
lse,True)
If nSuccess Then
'		If m_profile.Getitemvalue(checkChanges)(0) = "1" Then
Dim colorScheme As Variant
Dim CProfile As notesdocument
Set CProfile = db.getprofiledocument(profileName)
colorScheme = m_profile.getitemvalue("$colorScheme")
Call CProfile.replaceitemvalue("$colorScheme", colorScheme)
Call CProfile.save(False,False)
Call wks.ViewRebuild(True,True)
'		End If
End If

ExitFunction:
Exit Sub
errorhandler:
Call RaiseError()
Resume ExitFunction