1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

Тема в разделе "Lotus - Программирование", создана пользователем doc, 18 ноя 2009.

  1. doc

    doc Гость

    Репутация:
    0
    Как настроить отображение цвета строк в представлении? Как-то делал уже. Но не могу вспомнить.
     
  2. turumbay

    Репутация:
    0
    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    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.
     
  3. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Репутация:
    0
    Регистрация:
    6 ноя 2007
    Сообщения:
    3.171
    Симпатии:
    21
    четный нечетных
    или чтобы от значения менялось?
     
  4. doc

    doc Гость

    Репутация:
    0
    от значения
     
  5. Klido

    Klido Гость

    Репутация:
    0
    например такой экшен (на столбце по цвету - 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()
     
  6. amigolinx

    amigolinx Гость

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

    nvyush Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Можно так
    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. всё, разумеется, требует доработки напильником, но идея должна быть понятна
     
  8. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.361
    Симпатии:
    336
    я делал так...
    вьюшка:
    Цвет строк в представлении Цвет строк в представлении
    колумн вэлью:
    @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
     
  9. nvyush

    nvyush Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    lmike
    Начало понятно - сам практически также делал, а вот агента не осилил :). Зачем так сложно-то?
     
  10. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.361
    Симпатии:
    336
    там обновление профайла - шоб подхватилос сразу
    вот пример действия
    Цвет строк в представлении
     
  11. doc

    doc Гость

    Репутация:
    0
    Вообщем мне на таком уровне достаточно было. Проверяю условие у текущего документа, если подходит красим строчку в красный, если нет в обычный цвет. Таким образом я реализовал отображение вырезанных документов для наглядности.
     
  12. endofin

    endofin Гость

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

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

    nvyush Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Ну так и пишите в столбец формулу вида:
    @If(Test = 1; "0000ffff"; Test = 2; "dddd0000"; Test = 3; "0000pppp"; -1 : -1 : -1 : -1 : -1 : -1)
     
  14. endofin

    endofin Гость

    Репутация:
    0
    Спасибо за помощь ) Что-то начало получаться.

    Вот что я написал:
    @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...
     
  15. Xalet

    Xalet Well-Known Member

    Репутация:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    410
    Симпатии:
    0
    Вы уж как-нибудь в одной теме отписывайтесь. Не надо дублировать.
     
  16. endofin

    endofin Гость

    Репутация:
    0
    Ок, переходим в ту ветку.
     
Загрузка...
Похожие Темы - Цвет строк представлении
  1. hosm
    Ответов:
    0
    Просмотров:
    2.836
  2. fiandy
    Ответов:
    7
    Просмотров:
    1.562
  3. novachok
    Ответов:
    3
    Просмотров:
    2.866
  4. BBOYMIG
    Ответов:
    13
    Просмотров:
    210
  5. ToxaRat
    Ответов:
    1
    Просмотров:
    127

Поделиться этой страницей