Richtexttable считать, записать стиль текста

Тема в разделе "Lotus - Программирование", создана пользователем 11BOSS11, 27 июл 2010.

  1. 11BOSS11

    11BOSS11 Гость

    Как счиать стиль текста в ячейках таблици , а потом записать вдругую таблицу?
     
  2. ToxaRat

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    DXMLлем ;)
     
  3. 11BOSS11

    11BOSS11 Гость

    не,.. не пайдет..........
    нужно с помощу навигатора и рейнжев............



    Добавлено: точнее,. нужно стиль текста нужной мне ячейки..(к ячейки я добрался, осталось взять стиль текста)...... ;)
     
  4. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    сто пудов пайдет.
    кому нужно?
     
  5. 11BOSS11

    11BOSS11 Гость

    кому нужно?
    [/quote]

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

    Добавлено: ладно,... допустим есть просто строка String ,- как взять с нее стиль текста??
     
  6. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    сорри за ОФФ, ничего личного ;-), но не могу удержаца:
    вопрос с форума института микрохирургии жопы:
    Уважаемые коллеги! Мне тут поступил пациент с запущенным геморроем. Грудную клетку я ему уже вскрыл, но не знаю какими методами воспользоваца дальше...

    по делу: style от notesRichTextRange не то отдает? или строка не первым параграфом идет?
    тут много было теплых слов сказано о ls классах для работы с RT. Они кривые и непредсказуемые как индусская река Ганг в верхнем течении.
    Может таки через dxl?
     
  7. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
    читать их нафигатора получица, а вот писать - будет ПП...
    а потому поддерживаю turumbay
    и эта... - новые знания открытых технологий (аки XML) всегда полезней потерянного времени, на разбор кода
     
  8. 11BOSS11

    11BOSS11 Гость

    а можно скопировать стиль текстовой строки , а потом присвоить этот стиль другой строке?
     
  9. ToxaRat

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    это надо внести в шапку :)
     
  10. 11BOSS11

    11BOSS11 Гость

    Вот у меня есть код в котором я доступаюсь к нужной строчке таблицы , и потом перебираю все ячейки этой таблици.
    При переборе я пытаюсь снять стиль текста в ячейке с помощю:
    Код (LotusScript):
    Set notesRTS = rtRangeCell1.Style
    Set ArreyT1(i22)=notesRTS
    Стиль текста не снимается. :mellow:
    Может кто подскажет в чем проблема, .....верене снимаетсО - но всегед дефолтовый (True,255,255,255........и т. д.)

    Код (LotusScript):
    Dim s As New NotesSession
    Dim i22 As Integer
    i22=1
    Do '============
    'брем размерность табилци
    Set rtt1 = rtnav1.GetElement
    'Dim RC As Integer
    'Dim CC As Integer
    RC%=rtt1.RowCount
    CC%=rtt1.ColumnCount
    n1=(CC%*(n-1))+1
    Redim ArreyT1( 1 To CC%) As Variant

    REM Set up range and navigator for table
    Set rtRangeTable1 = prntempbody.CreateRange
    Call rtRangeTable1.SetBegin(rtnav1)
    Call rtRangeTable1.SetEnd(rtnav1)
    Set rtNavTable1 = rtRangeTable1.Navigator
    REM Find cells in table
    Set rtRangeCell1 = prntempbody.CreateRange
    Set rtRangePara1 = prntempbody.CreateRange

    For i=n1 To n1+(CC%-1)
    Call rtNavTable1.FindNthElement(RTELEM_TYPE_TABLECELL, i)      

    'Do Dim notesRTS As NotesRichTextStyle


    REM Set up range and navigator for cell
    Call rtRangeCell1.SetBegin(rtNavTable1)
    Call rtRangeCell1.SetEnd(rtNavTable1)
    Set rtNavCell1 = rtRangeCell1.Navigator
    REM Find paragraphs in cell

    Set notesRTS = rtRangeCell1.Style
    Set ArreyT1(i22)=notesRTS
    i22=i22+1  

    rtNavCell1.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)

    Do
    Call rtRangePara1.SetBegin(rtNavCell1)

    Loop While rtNavCell1.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)

    Next

    Loop While rtNav1.FindNextElement(RTELEM_TYPE_TABLE)
     
  11. 11BOSS11

    11BOSS11 Гость

    Как присвоить мне сохранить переменную типа NotesRichTextStyle в любую другую переменную.
    Проблема заключается в том, что Set STl=notesRichTextStyle вот такой вариант работает! НО он устанавливает переменную, и как только поменяется notesRichTextStyle он сразу же и изменит STL ,. а без SET ругается,,.......

    Код (LotusScript):
    Dim STL As Variant
    Dim notesRichTextStyle As NotesRichTextStyle
    Set notesRichTextStyle = rtRangePara.Style
    STl=notesRichTextStyle
     
  12. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    По-property'во :mellow:
     
  13. 11BOSS11

    11BOSS11 Гость

    Это как?
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Значит создать новый NotesRichTextStyle и установить такие же свойства.
     
  15. 11BOSS11

    11BOSS11 Гость

    ну это наверное единственный вариант........
     
  16. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Да. Метода клонирования у класса нет.
     
  17. ToxaRat

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    и єто касается всех классов :mellow:
     
  18. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Большинства. У некоторых есть. :mellow:
     
  19. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.079
    Симпатии:
    300
  20. 11BOSS11

    11BOSS11 Гость

    вот я считываю стиль текста с первой ячейки таблици и записываю во все остальные 2, 3,4....

    все вродибы и ничего, вот только цвет текста както аномлаьно копируется! желтый стает красным, синий - черным,.красный норм копируется...

    незню в чем проблема.......


    Код (LotusScript):
    Sub Initialize
    Dim workspace As New NotesUIWorkspace
    Dim s As New NotesSession
    Dim rttableData() As String
    Dim session As New NotesSession
    Dim rtt As NotesRichTextTable
    Dim db As NotesDatabase


    Dim notesRTS As NotesRichTextStyle
    Dim STILE As NotesRichTextStyle

    Set db = session.CurrentDatabase
    Set dc = db.UnprocessedDocuments
    Set doc = dc.GetFirstDocument

    Dim wksp As New notesuiworkspace
    Dim newdoc As notesdocument
    Dim rtitemA As notesrichtextitem
    Dim TableName As String

    Redim ArreyT1( 1 To 10 , 1 To 25, 1 To 10) As Variant 'ЕСЛИ ЧТО, надо заменить 1до 25 на

    Dim docnum As Integer
    docnum=1
    xx=1
    cp=0 ' reset the column position 

    Set body = doc.GetFirstItem("prn_table")


    REM Find first table in Body item
    Set rtnav = body.CreateNavigator
    If Not rtnav.FindFirstElement(RTELEM_TYPE_TABLE) Then
    Messagebox "Body item does not contain a table,",, _
    "Error"
    Exit Sub
    End If

    Do '============
    'брем размерность табилци
    Set rtt = rtnav.GetElement
    'Dim RC As Integer
    'Dim CC As Integer
    RC%=rtt.RowCount
    CC%=rtt.ColumnCount
    '   Redim ArreyT1(1 To RC%, 1 To CC%) As String

    REM Set up range and navigator for table
    Set rtRangeTable = body.CreateRange
    Call rtRangeTable.SetBegin(rtnav)
    Call rtRangeTable.SetEnd(rtnav)

    Set rtNavTable = rtRangeTable.Navigator
    REM Find cells in table
    Set rtRangeCell = body.CreateRange
    Set rtRangePara = body.CreateRange
    cellCounter = 0
    pozC=0
    pozR=0
    Call rtNavTable.FindFirstElement(RTELEM_TYPE_TABLECELL)

    For ja1=1 To 1
    rtNavTable.FindFirstElement(RTELEM_TYPE_TABLECELL)
    'msg = "" 
    cellCounter = cellCounter + 1
    If cellCounter Mod CC%=1 Then
    pozC=1
    Else
    pozC=pozC+1
    End If
    If pozC=1 Then
    pozR=pozR+1
    End If

    REM Set up range and navigator for cell
    Call rtRangeCell.SetBegin(rtNavTable)
    Call rtRangeCell.SetEnd(rtNavTable)
    Set rtNavCell = rtRangeCell.Navigator
    REM Find paragraphs in cell

    rez1=rtNavCell.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)

    msg=""
    Redim masK(1 To 5) As Variant
    k=1

    Do
    'Call rtNavCell.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH,1)
    Call rtRangePara.SetBegin(rtNavCell)
    msg = msg & rtRangePara.TextParagraph & Chr(13)

    Set notesRTS = rtRangePara.Style
    ArreyT1(1, k,1)=notesRTS.Bold
    ArreyT1(1, k,2)=notesRTS.Effects
    ArreyT1(1, k,3)=notesRTS.FontSize
    ArreyT1(1, k,4)=notesRTS.IsDefault
    ArreyT1(1, k,5)=notesRTS.Italic
    ArreyT1(1, k,6)=notesRTS.NotesColor
    ArreyT1(1, k,7)=notesRTS.NotesFont
    ArreyT1(1, k,8)=notesRTS.PassThruHTML
    ArreyT1(1, k,9)=notesRTS.Strikethrough
    ArreyT1(1, k,10)=notesRTS.Underline


    k=k+1
    Loop While rtNavCell.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)



    If Messagebox (msg,1, "Cell " & cellCounter)=2 Then
    Exit Sub
    End If


    Next
    '===============================ЗАПИСІВАЕМ СИТЛЬ!!===========

    For ja1=2 To 4
    Call        rtNavTable.FindNthElement(RTELEM_TYPE_TABLECELL, ja1)
    'msg = "" 
    cellCounter = cellCounter + 1
    If cellCounter Mod CC%=1 Then
    pozC=1
    Else
    pozC=pozC+1
    End If
    If pozC=1 Then
    pozR=pozR+1
    End If

    REM Set up range and navigator for cell
    Call rtRangeCell.SetBegin(rtNavTable)
    Call rtRangeCell.SetEnd(rtNavTable)
    Set rtNavCell = rtRangeCell.Navigator
    REM Find paragraphs in cell

    rez1=rtNavCell.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)

    msg=""
    Redim masK(1 To 5) As Variant
    k=1
    Do
    Call rtRangePara.SetBegin(rtNavCell)
    msg = msg & rtRangePara.TextParagraph & Chr(13)

    Set STILE= s.CreateRichTextStyle( )

    STILE.Bold=ArreyT1(1, k,1)
    STILE.Effects=ArreyT1(1, k,2)
    STILE.FontSize=ArreyT1(1, k,3)
    '   STILE.IsDefault=ArreyT1(1, k,4)
    STILE.Italic=ArreyT1(1, k,5)
    STILE.NotesColor=ArreyT1(1, k,6)
    STILE.NotesFont=ArreyT1(1, k,7)
    STILE.PassThruHTML=ArreyT1(1, k,8)
    STILE.Strikethrough=ArreyT1(1, k,9)
    STILE.Underline=ArreyT1(1, k,10)

    rtRangePara.setStyle(STILE)
    'Call body.AppendStyle(STILE)
    Call body.Update
    k=k+1
    Loop While rtNavCell.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)    

    If Messagebox (msg,1, "Cell " & cellCounter)=2 Then
    Exit Sub
    End If

    Next
    '===============================ЗАПИСІВАЕМ СИТЛЬ!!===========


    Loop While rtNav.FindNextElement(RTELEM_TYPE_TABLE)

    Call workspace.editdocument( True, doc)

    End Sub
    копирование:
    Set notesRTS = rtRangePara.Style
    Код (LotusScript):
                ArreyT1(1, k,1)=notesRTS.Bold
    ArreyT1(1, k,2)=notesRTS.Effects
    ArreyT1(1, k,3)=notesRTS.FontSize
    ArreyT1(1, k,4)=notesRTS.IsDefault
    ArreyT1(1, k,5)=notesRTS.Italic
    ArreyT1(1, k,6)=notesRTS.NotesColor
    ArreyT1(1, k,7)=notesRTS.NotesFont
    ArreyT1(1, k,8)=notesRTS.PassThruHTML
    ArreyT1(1, k,9)=notesRTS.Strikethrough
    ArreyT1(1, k,10)=notesRTS.Underline
    запись:

    Код (LotusScript):
    Set STILE= s.CreateRichTextStyle( )

    STILE.Bold=ArreyT1(1, k,1)
    STILE.Effects=ArreyT1(1, k,2)
    STILE.FontSize=ArreyT1(1, k,3)
    '   STILE.IsDefault=ArreyT1(1, k,4)
    STILE.Italic=ArreyT1(1, k,5)
    STILE.NotesColor=ArreyT1(1, k,6)
    STILE.NotesFont=ArreyT1(1, k,7)
    STILE.PassThruHTML=ArreyT1(1, k,8)
    STILE.Strikethrough=ArreyT1(1, k,9)
    STILE.Underline=ArreyT1(1, k,10)

    rtRangePara.setStyle(STILE)
     
Загрузка...

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