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

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

  1. doc

    doc Гость

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

    Регистрация:
    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

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

    doc Гость

    от значения
     
  5. Klido

    Klido Гость

    например такой экшен (на столбце по цвету - 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 Гость

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Можно так
    1. Создаём профильный док "(ColorProfile)", на нём компьютед поле "$StatusColor" с формулой:
    Код (Text):
    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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    я делал так...
    вьюшка:
    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

    и агентом:
    Код (Text):
        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 Lotus team
    Lotus team

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

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    там обновление профайла - шоб подхватилос сразу
    вот пример действия
    colorProfile3.png
     
  11. doc

    doc Гость

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

    endofin Гость

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

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

    nvyush Lotus team
    Lotus team

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

    endofin Гость

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

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

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

    endofin Гость

    Ок, переходим в ту ветку.
     
Загрузка...

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