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

  • Автор темы doc
  • Дата начала
D
#1
Как настроить отображение цвета строк в представлении? Как-то делал уже. Но не могу вспомнить.
 
13.03.2009
625
1
#2
Как настроить отображение цвета строк в представлении? Как-то делал уже. Но не могу вспомнить.
help дизайнера. поиск по "view AND custom AND color":
Row custom color formulas
Color can be applied to the text and background of a row in a view based on a formula. The formula is specified as the value for a "Use value as color" column in the view. The formula must evaluate to a list of three or six numbers:
A 3-number value specifies the RGB value for the text of the row. The background color is unaffected.
A 6-number value specifies the RGB value for the background (first three numbers) and text (second three numbers) of the row.
Note Row custom color formulas are new with Release 6.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
18
#3
четный нечетных
или чтобы от значения менялось?
 
K

Klido

#5
например такой экшен (на столбце по цвету - use value as color)

Dim WS As New NotesUIWorkspace
Dim NS As New NotesSession
Dim NDb As NotesDatabase
Dim NDC As NotesDocumentCollection
Dim ND_Dialog As NotesDocument

Set NDb =NS.CurrentDatabase
Set ND_Dialog=NDB.CreateDocument
If Not WS.DialogBox("Dialog_Color",-1,-1,0,0,0,0,"Выделение цветом",ND_Dialog,-1) Then
Exit Sub
End If
If ND_Dialog.Color_Fon(0)="" And ND_Dialog.Color_Text(0)="" Then
Exit Sub
End If
Set NDC=NDB.UnprocessedDocuments
If NDC.Count=0 Then
Exit Sub
End If
Call NDC.StampAll("Поле_столбца_цвета_вьюхи",ND_Dialog.Color_All)
Call WS.ViewRefresh()
 
A

amigolinx

#6
или просто в дизайне вьюхи делается скрытый столбец с галкой use value as color, а на столбце пишется формула типа @If(@Attachments; "0000ffff"; "dddd0000") - в зависимости какие тебе значения нужно контролировать и какие цвета подставлять...
 

nvyush

Lotus team
22.04.2009
2 317
0
#7
Можно так
1. Создаём профильный док "(ColorProfile)", на нём компьютед поле "$StatusColor" с формулой:
Код:
DEFCOLOR := "-1 : -1 : -1 : -1 : -1 : -1";
Value := @If (SetColorDraft = "1"; Value + "Status = \"Черновик\"; \"" + @Text(BColorDraft) + "\" : \"" + @Text(FColorDraft) + "\"; "; Value);
Value := @If (SetColorReady = "1"; Value + "Status = \"Готово\"; \"" + @Text(BColorReady) + "\" : \"" + @Text(FColorReady) + "\"; "; Value);
Value := @If (Value = ""; DEFCOLOR; "Value := @If (" + Value + DEFCOLOR + ");
Value;");
Value
поля типа CheckBox "SetColorDraft", "SetColorReady" (для вкл/выкл соответствующего выделения цветом)
поля типа Color "BColorDraft", "FColorDraft", "BColorReady", "FColorReady" (выбор цветов фона и шрифта в зависимости от статуса)
2. Во вью создаём столбец с галками "Use value as color" и "User definable", в поле "Profile document" указываем имя профиля "(ColorProfile)", на последней закладке указываем Name: имя поля в профиле "$StatusColor", в формулу столбца пишем @UserName (прошу не пинать меня ногами - сперва почитайте хелп).

Достоинства - цвета можно настраивать (профиль только системный - под каждого пользвателя не получится).
Недостатки - тормозит.
P.S. всё, разумеется, требует доработки напильником, но идея должна быть понятна
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 584
271
#8
я делал так...
вьюшка:
colorProfile1.png colorProfile2.png
колумн вэлью:
@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

и агентом:
Код:
	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
 

Вложения

nvyush

Lotus team
22.04.2009
2 317
0
#9
lmike
Начало понятно - сам практически также делал, а вот агента не осилил :). Зачем так сложно-то?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 584
271
#10
там обновление профайла - шоб подхватилос сразу
вот пример действия
colorProfile3.png
 

Вложения

D
#11
или просто в дизайне вьюхи делается скрытый столбец с галкой use value as color, а на столбце пишется формула типа @If(@Attachments; "0000ffff"; "dddd0000") - в зависимости какие тебе значения нужно контролировать и какие цвета подставлять...
Вообщем мне на таком уровне достаточно было. Проверяю условие у текущего документа, если подходит красим строчку в красный, если нет в обычный цвет. Таким образом я реализовал отображение вырезанных документов для наглядности.
 
E

endofin

#12
Друзья, подскажите пожалуйста, например в форме есть поле "Тест", которое может принимать фиксированные значения 1, 2 или 3.
В зависимости от того какое значение выбрано, можно ли выделить текст строки другим цветом в представлении БД?
Например, если выбрано значение 1 - текст строки в представлении будет синим, если 2 - красным, если 3 - зеленым.

по русски я себе это представляю примерно так:
если значение поля "Тест" = 1, то закрасить текст строки в цвет 0000ffff,
если значение поля "Тест" = 2, то закрасить текст строки в цвет dddd0000,
если значение поля "Тест" = 3, то закрасить текст строки в цвет 0000pppp
 

nvyush

Lotus team
22.04.2009
2 317
0
#13
по русски я себе это представляю примерно так:
если значение поля "Тест" = 1, то закрасить текст строки в цвет 0000ffff,
если значение поля "Тест" = 2, то закрасить текст строки в цвет dddd0000,
если значение поля "Тест" = 3, то закрасить текст строки в цвет 0000pppp
Ну так и пишите в столбец формулу вида:
@If(Test = 1; "0000ffff"; Test = 2; "dddd0000"; Test = 3; "0000pppp"; -1 : -1 : -1 : -1 : -1 : -1)
 
E

endofin

#14
Спасибо за помощь ) Что-то начало получаться.

Вот что я написал:
@If (Event_Cond = "63"; "0000fff"; Event_Cond = "79"; "dddd0000"; Event_Cond = "82"; "0000cccc"; -1 : -1 : -1 : -1 : -1 : -1)

Текст цвета стал отображаться в колонке, но сам текст не имеет никакого смысла, так как отображает значения "0000fff", "dddd0000", "0000cccc" или "-1 : -1 : -1 : -1 : -1 : -1", мне бы отображать нужные значения например значения того же моего поля Event_Cond...
 

Xalet

Well-known member
08.08.2008
410
0
#15
Спасибо за помощь ) Что-то начало получаться.

Вот что я написал:
@If (Event_Cond = "63"; "0000fff"; Event_Cond = "79"; "dddd0000"; Event_Cond = "82"; "0000cccc"; -1 : -1 : -1 : -1 : -1 : -1)

Текст цвета стал отображаться в колонке, но сам текст не имеет никакого смысла, так как отображает значения "0000fff", "dddd0000", "0000cccc" или "-1 : -1 : -1 : -1 : -1 : -1", мне бы отображать нужные значения например значения того же моего поля Event_Cond...
Вы уж как-нибудь в одной теме отписывайтесь. Не надо дублировать.