Imports System
Imports System.ComponentModel
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Text

Imports DevExpress.ExpressApp
Imports DevExpress.ExpressApp.Actions
Imports DevExpress.Persistent.Base
Imports DevExpress.ExpressApp.Editors
Imports DevExpress.ExpressApp.Win.Editors
Imports DevExpress.Data.Filtering
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraRichEdit.Commands
Imports DevExpress.XtraRichEdit.API.Native
Imports DevExpress.ExpressApp.SystemModule

Public Class ImmovablesPriceListVCWIN
    Inherits DevExpress.ExpressApp.ViewController
    Private _RichEditControl As RichEditControl
    Private _GridListEditor As GridListEditor

    Public Sub New()
        MyBase.New()

        'This call is required by the Component Designer.
        InitializeComponent()
        RegisterActions(components)

    End Sub
    Protected Overrides Sub OnViewControlsCreated()
        MyBase.OnViewControlsCreated()
        If View.Id = "ImmovablesPriceListHeader_DetailView" Then
            Dim _DetailView As DetailView = TryCast(View, DetailView)
            Dim _RichEditControlViewItem As ViewItem

            If _DetailView IsNot Nothing Then
                _RichEditControlViewItem = _DetailView.GetItems(Of RichEditPropertyEditor)(0)
                If _RichEditControlViewItem IsNot Nothing Then
                    AddHandler _RichEditControlViewItem.ControlCreated, AddressOf RichEditControlViewItem_ControlCreated
                End If



                '_RichEditControl.Document.Variables.Add("DOCUMENTVARIABLE Created", "nnnnna")
                'AddHandler _RichEditControl.CalculateDocumentVariable, AddressOf _CalculateDocumentVariable
            End If
        End If

        'If View.Id = "CRMEstate_Offer_Template_DetailView" Then
        '    _RichEditControl = TryCast(View, DetailView).GetItems(Of RichEditPropertyEditor)(0).RichEditUserControl.RichEditControl
        '    _RichEditControl.Document.Fields.Add(_RichEditControl.Document.Range.End, "DOCVARIABLE Count")
        'End If

        'If View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsA_ListView" Or _
        '    View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsO_ListView" Or _
        '    View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsG_ListView" Or _
        '    View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsC_ListView" Then
        '    Dim _ListView As ListView = CType(View, ListView)
        '    _GridListEditor = TryCast(_ListView.Editor, GridListEditor)
        '    If _GridListEditor IsNot Nothing Then
        '        _GridListEditor.AllowEdit = True
        '        For i As Integer = 0 To _GridListEditor.Columns.Count - 1
        '            If _GridListEditor.GridView.Columns(i).FieldName <> "ListPriceBruttoDEV" And _
        '                 _GridListEditor.GridView.Columns(i).FieldName <> "ListPriceBruttoHUF" And _
        '                 _GridListEditor.GridView.Columns(i).FieldName <> "ListPriceBruttoDEVRent" And _
        '                 _GridListEditor.GridView.Columns(i).FieldName <> "ListPriceBruttoHUFRent" And _
        '                 _GridListEditor.GridView.Columns(i).FieldName <> "NoteRow" Then

        '                _GridListEditor.GridView.Columns(i).OptionsColumn.ReadOnly = True
        '                _GridListEditor.GridView.Columns(i).OptionsColumn.AllowEdit = False
        '                _GridListEditor.GridView.Columns(i).OptionsColumn.TabStop = False

        '                '_GridListEditor.GridView.Columns(i).FieldName = "AreaListPriceNettoHUF" Then _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "AreaListPriceNettoDEV" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "ListPriceNettoHUF" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "ListPriceNettoDEV" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "ListPriceBruttoDEV" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "ListPriceBruttoHUF" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "AreaListPriceNettoHUFRent" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "AreaListPriceNettoDEVRent" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "ListPriceNettoHUFRent" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "AreaListPriceBruttoDEV" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "AreaListPriceBruttoHUF" _
        '                'Or Not _GridListEditor.GridView.Columns(i).FieldName = "AreaListPriceBruttoDEVRent" _
        '                'Or Not _GridListEditor.GridView.Columns(i).FieldName = "AreaListPriceBruttoHUFRent" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "ListPriceNettoDEVRent" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "ListPriceBruttoDEVRent" _
        '                '    Or Not _GridListEditor.GridView.Columns(i).FieldName = "ListPriceBruttoHUFRent" Then
        '            End If
        '        Next i
        '    End If
        'End If
    End Sub
    Protected Overrides Sub OnActivated()
        MyBase.OnActivated()
        If View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsA_ListView" Or _
            View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsO_ListView" Or _
            View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsG_ListView" Or _
            View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsC_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.ListViewProcessCurrentObjectController)().Active.SetItemValue("", False)
            Frame.GetController(Of DevExpress.ExpressApp.Win.SystemModule.WinModificationsController).ModificationsHandlingMode = ModificationsHandlingMode.AutoCommit
        End If
    End Sub
    Protected Overrides Sub OnDeactivated()
        MyBase.OnDeactivated()
        If View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsA_ListView" Or _
            View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsO_ListView" Or _
            View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsG_ListView" Or _
            View.Id = "ImmovablesPriceListHeader_ImmovablesPriceListRowsC_ListView" Then
            Frame.GetController(Of DevExpress.ExpressApp.SystemModule.ListViewProcessCurrentObjectController)().Active.SetItemValue("", True)
            Frame.GetController(Of DevExpress.ExpressApp.Win.SystemModule.WinModificationsController).ModificationsHandlingMode = ModificationsHandlingMode.Confirmation
        End If
    End Sub
    Private Sub aInsertAPriceListToDocument_Execute(sender As System.Object, e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aInsertAPriceListToDocument.Execute
        Dim _DetailView As DetailView = CType(View, DetailView)
        Dim _ImmovablesPriceListHeader As ImmovablesPriceListHeader = TryCast(e.CurrentObject, ImmovablesPriceListHeader)
        Dim _ocur As Xpo.XPObjectSpace = TryCast(View.ObjectSpace, Xpo.XPObjectSpace)

        'Ha sablon alapján akarod készíteni akkor kell egy paraméter és a sablon amit be akarsz tölteni
        '_ImmovablesPriceListHeader.DocumentBody = _ImmovablesPriceListHeader.DocumentBody

        '_CRMEstate_Leads.DocumentBody = _CRMEstate_Leads.DocumentBody.Replace("{\cf0 im}{\cf0 apartments}{\cf0 im}", "{\cf0 imapartmentsim}")
        '_CRMEstate_Leads.DocumentBody = _CRMEstate_Leads.DocumentBody.Replace("{\cf0 im}{\cf0 garages}{\cf0 im}", "{\cf0 imgaragesim}")
        '_CRMEstate_Leads.DocumentBody = _CRMEstate_Leads.DocumentBody.Replace("{\cf0 im}{\cf0 offices}{\cf0 im}", "{\cf0 imofficesim}")
        '_CRMEstate_Leads.DocumentBody = _CRMEstate_Leads.DocumentBody.Replace("{\cf0 im}{\cf0 container}{\cf0 im}", "{\cf0 imcontainerim}")

        '=========================== ColorTable =======================================
        Dim _actColorNum As Int32 = 0
        Dim _OrigColorTable As String
        If _ImmovablesPriceListHeader.DocumentBody Is Nothing Then
            _ImmovablesPriceListHeader.DocumentBody = "{\rtf1\deff0{\fonttbl{\f0 Times New Roman;}}" & _
                    "{\colortbl\red0\green0\blue0 ;\red0\green0\blue255 ;}{\*\listoverridetable}{\stylesheet {\ql\cf0 Normal;}" & _
                    "{\*\cs1\cf0 Default Paragraph Font;}{\*\cs2\sbasedon1\cf0 Line Number;}{\*\cs3\ul\cf1 Hyperlink;}}\sectd\pard\plain\ql{\cf0 }\par\pard\plain\ql\par\pard\plain\ql\par}"
        End If
        Dim _ColorTable As String = (_ImmovablesPriceListHeader.DocumentBody.Remove(0, (InStr(_ImmovablesPriceListHeader.DocumentBody, "{\colortbl")) + "{\colortbl".Length - 1))
        _ColorTable = _ColorTable.Remove(InStr(_ColorTable, "}") - 1) '--Act Color table 
        Dim _ColorArray As String() = _ColorTable.Split(New [Char]() {";"c})
        Dim _CTable As New StringBuilder()
        _CTable.Append("{\colortbl")
        For _ik As Int32 = 0 To _ColorArray.Length - 2
            _CTable.Append(_ColorArray(_ik) & ";")
        Next
        _CTable.Append("\red240\green240\blue240 ;}")
        _OrigColorTable = "{\colortbl" & _ColorTable & "}"
        _ImmovablesPriceListHeader.DocumentBody = _ImmovablesPriceListHeader.DocumentBody.Replace(_OrigColorTable, _CTable.ToString())

        _ImmovablesPriceListHeader.DocumentBody = _ImmovablesPriceListHeader.DocumentBody.Replace("improjectim", _ImmovablesPriceListHeader.ImmovablesGroups.ShortName)

        '=================================================================================

        '=========================== Apartments =======================================
        Dim ImmovablesPriceListRowsA As ListPropertyEditor
        ImmovablesPriceListRowsA = TryCast(View, DetailView).FindItem("ImmovablesPriceListRowsA")
        If CType(ImmovablesPriceListRowsA.ListView, ListView) IsNot Nothing Then
            Dim _ListView_Apartments As ListView = CType(ImmovablesPriceListRowsA.ListView, ListView)
            Dim _GridListEditor_Apartments As GridListEditor = TryCast(_ListView_Apartments.Editor, GridListEditor)
            Dim _Grid_Apartments As GridView = TryCast(_GridListEditor_Apartments.GridView, GridView)

            If _Grid_Apartments IsNot Nothing Then
                _ImmovablesPriceListHeader.DocumentBody = RTFTableCreator(_Grid_Apartments, "imapartmentsim", _ImmovablesPriceListHeader.DocumentBody)
            End If
        End If
        '=================================================================================

        '=========================== Offices ==========================================
        Dim ImmovablesPriceListRowsO As ListPropertyEditor
        ImmovablesPriceListRowsO = TryCast(View, DetailView).FindItem("ImmovablesPriceListRowsO")
        If CType(ImmovablesPriceListRowsO.ListView, ListView) IsNot Nothing Then
            Dim _ListView_Offices As ListView = CType(ImmovablesPriceListRowsO.ListView, ListView)
            Dim _GridListEditor_Offices As GridListEditor = TryCast(_ListView_Offices.Editor, GridListEditor)
            Dim _Grid_Offices As GridView = TryCast(_GridListEditor_Offices.GridView, GridView)

            If _Grid_Offices IsNot Nothing Then
                _ImmovablesPriceListHeader.DocumentBody = RTFTableCreator(_Grid_Offices, "imofficesim", _ImmovablesPriceListHeader.DocumentBody)
            End If
        End If
        '=================================================================================

        '=========================== Garages ==========================================
        Dim ImmovablesPriceListRowsG As ListPropertyEditor
        ImmovablesPriceListRowsG = TryCast(View, DetailView).FindItem("ImmovablesPriceListRowsG")
        If CType(ImmovablesPriceListRowsG.ListView, ListView) IsNot Nothing Then
            Dim _ListView_Garages As ListView = CType(ImmovablesPriceListRowsG.ListView, ListView)
            Dim _GridListEditor_Garages As GridListEditor = TryCast(_ListView_Garages.Editor, GridListEditor)
            Dim _Grid_Garages As GridView = TryCast(_GridListEditor_Garages.GridView, GridView)

            If _Grid_Garages IsNot Nothing Then
                _ImmovablesPriceListHeader.DocumentBody = RTFTableCreator(_Grid_Garages, "imgaragesim", _ImmovablesPriceListHeader.DocumentBody)
            End If
        End If
        '=================================================================================

        '=========================== Container ==========================================
        Dim ImmovablesPriceListRowsC As ListPropertyEditor
        ImmovablesPriceListRowsC = TryCast(View, DetailView).FindItem("ImmovablesPriceListRowsC")

        If CType(ImmovablesPriceListRowsC.ListView, ListView) IsNot Nothing Then
            Dim _ListView_Container As ListView = CType(ImmovablesPriceListRowsC.ListView, ListView)
            Dim _GridListEditor_Container As GridListEditor = TryCast(_ListView_Container.Editor, GridListEditor)
            Dim _Grid_Container As GridView = TryCast(_GridListEditor_Container.GridView, GridView)

            If _Grid_Container IsNot Nothing Then
                _ImmovablesPriceListHeader.DocumentBody = RTFTableCreator(_Grid_Container, "imcontainerim", _ImmovablesPriceListHeader.DocumentBody)
            End If
        End If

        '=================================================================================
    End Sub
    Function RTFTableCreator(_Grid As GridView, _Tag As String, _DocumentBody As String, Optional _FontSize As String = "8", _
                             Optional _FontType As String = "Tahoma", Optional _RGB As String = "240,240,240") As String
        Dim _DocumentBody_NEW As String
        Dim _HeaderFillColor As Int32 ' -- Current table header fill color index in colot table

        If _RGB <> "240,240,240" Then
            Dim _Parameters As String() = ColorTablereplacement(_DocumentBody, _RGB)
            _HeaderFillColor = Convert.ToInt32(_Parameters(0))
            _DocumentBody = _Parameters(1)
        Else
            _HeaderFillColor = 2
        End If

        If _Grid.DataRowCount > 0 Then
            Dim _FontSizeNUM As Int32 = (Convert.ToInt32(_FontSize) * 2) ' -- Font size in half-points (the default is 16). => Size 8!!!
            Dim _RTFtext As New StringBuilder
            Dim _RowNumFull As Integer = _Grid.RowCount
            Dim _RowNum As Integer = _Grid.DataRowCount
            Dim _ColumnsNum As Integer = _Grid.Columns.Count
            Dim irowIndex As Int32 = 0
            Dim _LastCellIndex As Int32 = 0

            '--Header to RTF format--
            '=================================================================================
            _RTFtext.Append("\pard\plain\ql\par\trowd\irow" & irowIndex & "\irowband" & irowIndex & "\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10" & _
                            "\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10\trleft-108\trautofit1\trpaddfl3\trpaddl108\trpaddfr3\trpaddr108")

            For _ik As Integer = 0 To _Grid.Columns.View.VisibleColumns.Count - 1
                _RTFtext.Append("\clvertalt\clcbpat2\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10" &
                                    "\cltxlrtb\clftsWidth3\clwWidth3302\clpadfr3\clpadr108\clpadft3\clpadt108\cellx" & _ik)
                If _LastCellIndex < _ik Then
                    _LastCellIndex = _ik
                End If
            Next
            For _ik As Integer = 0 To _Grid.Columns.View.VisibleColumns.Count - 1
                _RTFtext.Append("\pard\plain\ql\intbl{\b\fs" & _FontSizeNUM & "\cf0 " & _Grid.Columns.View.VisibleColumns(_ik).Caption & "}\b\cell")
            Next

            _RTFtext.Append("\trowd\irow" & irowIndex & "\irowband" & irowIndex & "\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10" & _
                            "\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10\trleft-108\trautofit1\trpaddfl3\trpaddl108\trpaddfr3\trpaddr108")
            For _ik As Integer = 0 To _Grid.Columns.View.VisibleColumns.Count - 1
                _RTFtext.Append("\clvertalt\clcbpat" & _HeaderFillColor & "\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10" &
                                    "\cltxlrtb\clftsWidth3\clwWidth3302\clpadfr3\clpadr108\clpadft3\clpadt108\cellx" & _ik)
            Next
            irowIndex += 1
            '' --Data to RTF format--
            '=================================================================================
            For _ik As Int16 = 0 To _RowNumFull - 2
                If _Grid.IsGroupRow(_Grid.Columns.View.GetVisibleRowHandle(_ik)) = True Then
                    _RTFtext.Append("\row")

                    _RTFtext.Append("\pard\plain\ql\intbl{\fs" & _FontSizeNUM & "\cf0 " & (_Grid.GetGroupRowDisplayText(_Grid.Columns.View.GetVisibleRowHandle(_ik)).ToString) & "}\cell")


                    _RTFtext.Append("\trowd\irow" & irowIndex & "\irowband" & irowIndex & "\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10" & _
                                    "\trleft-108\trftsWidth1\trautofit1\trpaddfl3\trpaddl108\trpaddfr3\trpaddr108\tblindtype3\tblind0")

                    _RTFtext.Append("\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cltxlrtb\clftsWidth3\clwWidth9619" & _
                                             "\clpadfr3\clpadr108\clpadft3\clpadt108\cellx" & _LastCellIndex)

                    irowIndex += 1
                Else
                    _RTFtext.Append("\row")

                    For _jk As Integer = 0 To _Grid.Columns.View.VisibleColumns.Count - 1
                        If _Grid.Columns.View.VisibleColumns(_jk).ColumnType.FullName <> "System.Double" And _Grid.Columns.View.VisibleColumns(_jk).ColumnType.FullName <> "System.Boolean" Then

                            _RTFtext.Append("\pard\plain\ql\intbl{\fs" & _FontSizeNUM & "\cf0 " & (_Grid.GetRowCellDisplayText(_Grid.Columns.View.GetVisibleRowHandle(_ik), _Grid.Columns.View.VisibleColumns(_jk))) & "}\cell")
                        ElseIf _Grid.Columns.View.VisibleColumns(_jk).ColumnType.FullName = "System.Boolean" Then
                            If _Grid.GetRowCellValue(_Grid.Columns.View.GetVisibleRowHandle(_ik), _Grid.Columns.View.VisibleColumns(_jk)) = True Then
                                _RTFtext.Append("\pard\plain\ql\intbl{\fs" & _FontSizeNUM & "\cf0 " & "Van" & "}\cell")
                            Else
                                _RTFtext.Append("\pard\plain\ql\intbl{\fs" & _FontSizeNUM & "\cf0 " & "Nincs" & "}\cell")
                            End If
                        Else
                            _RTFtext.Append("\pard\plain\ql\intbl{\fs" & _FontSizeNUM & "\cf0\qr " & LTrim(RTrim(Format(_Grid.Columns.View.GetRowCellValue(_Grid.Columns.View.GetVisibleRowHandle(_ik), _Grid.Columns.View.VisibleColumns(_jk)), "#,##0.00"))) & "}\qr\cell")

                        End If
                    Next

                    _RTFtext.Append("\trowd\irow" & irowIndex & "\irowband" & irowIndex & "\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10" & _
                                    "\trleft-108\trautofit1\trpaddfl3\trpaddl108\trpaddfr3\trpaddr108")

                    For _jk As Integer = 0 To _Grid.Columns.View.VisibleColumns.Count - 1

                        _RTFtext.Append("\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cltxlrtb\clftsWidth3\clwWidth3302" & _
                                        "\clpadfr3\clpadr108\clpadft3\clpadt108\cellx" & _jk)
                    Next
                    irowIndex += 1
                End If
            Next
            '--Last row --
            '=================================================================================
            If _Grid.IsGroupRow(_Grid.Columns.View.GetVisibleRowHandle(_RowNum - 1)) = True Then
                _RTFtext.Append("\row")
                _RTFtext.Append("\pard\plain\ql\intbl{\fs" & _FontSizeNUM & "\cf0 " & (_Grid.GetGroupRowDisplayText(_Grid.Columns.View.GetVisibleRowHandle(_RowNum - 1)).ToString) & "}\cell")

                _RTFtext.Append("\trowd\irow" & irowIndex & "\irowband" & irowIndex & "\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10" & _
                                "\trleft-108\trftsWidth1\trautofit1\trpaddfl3\trpaddl108\trpaddfr3\trpaddr108\tblindtype3\tblind0")

                _RTFtext.Append("\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cltxlrtb\clftsWidth3\clwWidth9619" & _
                                         "\clpadfr3\clpadr108\clpadft3\clpadt108\cellx" & _LastCellIndex)
            Else
                _RTFtext.Append("\row")
                For _jk As Integer = 0 To _Grid.Columns.View.VisibleColumns.Count - 1
                    If _Grid.Columns.View.VisibleColumns(_jk).ColumnType.FullName <> "System.Double" And _Grid.Columns.View.VisibleColumns(_jk).ColumnType.FullName <> "System.Boolean" Then

                        _RTFtext.Append("\pard\plain\ql\intbl{\fs" & _FontSizeNUM & "\cf0 " & (_Grid.Columns.View.GetRowCellDisplayText(_RowNum - 1, _Grid.Columns.View.VisibleColumns(_jk))) & "}\cell")
                    ElseIf _Grid.Columns.View.VisibleColumns(_jk).ColumnType.FullName = "System.Boolean" Then
                        If _Grid.IsGroupRow(_Grid.Columns.View.GetVisibleRowHandle(_RowNum - 1)) = True Then

                            _RTFtext.Append("\pard\plain\ql\intbl{\fs" & _FontSizeNUM & "\cf0 " & "Van" & "}\cell")
                        Else
                            _RTFtext.Append("\pard\plain\ql\intbl{\fs" & _FontSizeNUM & "\cf0 " & "Nincs" & "}\cell")
                        End If
                    Else
                        _RTFtext.Append("\pard\plain\ql\intbl{\fs" & _FontSizeNUM & "\cf0\qr " & LTrim(RTrim(Format(_Grid.Columns.View.GetRowCellValue(_Grid.Columns.View.GetVisibleRowHandle(_RowNum - 1), _Grid.Columns.View.VisibleColumns(_jk)), "#,##0.00"))) & "}\qr\cell")
                    End If
                Next

                _RTFtext.Append("\trowd\irow" & irowIndex & "\irowband" & irowIndex & "\lastrow\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10" & _
                                   "\trleft-108\trautofit1\trpaddfl3\trpaddl108\trpaddfr3\trpaddr108")
                ''---
                For _jk As Integer = 0 To _Grid.Columns.View.VisibleColumns.Count - 1

                    _RTFtext.Append("\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cltxlrtb\clftsWidth3\clwWidth3302" & _
                                    "\clpadfr3\clpadr108\clpadft3\clpadt108\cellx" & _jk)
                Next
            End If

            _RTFtext.Append("\row\pard\plain\ql")
            _DocumentBody_NEW = _DocumentBody.Replace(_Tag, _RTFtext.ToString())
            If _DocumentBody_NEW.Contains("\fonttbl{\f0 Times New Roman;") Then
                _DocumentBody_NEW = _DocumentBody_NEW.Replace("\fonttbl{\f0 Times New Roman;", "\fonttbl{\f0 " & _FontType & ";") 'Font table remake
            End If
        Else
            _DocumentBody_NEW = _DocumentBody.Replace(_Tag, " ")
        End If

        Return _DocumentBody_NEW
    End Function
    Function ColorTablereplacement(_DocumentBody As String, _RGB As String) As String()
        Dim _Parameters(1) As String
        Dim _RGBArray As String() = _RGB.Split(New [Char]() {","c})

        Dim _actColorNum As Int32 = -1
        Dim _ColorTable As String = (_DocumentBody.Remove(0, (InStr(_DocumentBody, "{\colortbl")) + "{\colortbl".Length - 1))
        _ColorTable = _ColorTable.Remove(InStr(_ColorTable, "}") - 1) '--Act Color table 
        Dim _ColorArray As String() = _ColorTable.Split(New [Char]() {";"c})

        For _ik As Int32 = 0 To _ColorArray.Length - 1
            If _ColorArray(_ik) = "\red" & _RGBArray(0) & "\green" & _RGBArray(1) & "\blue" & _RGBArray(2) & " " Then
                _actColorNum = _ik
            End If
        Next
        If _actColorNum = -1 Then
            Dim _CTable As New StringBuilder()
            _CTable.Append("{\colortbl")
            For _ik As Int32 = 0 To _ColorArray.Length - 2
                _CTable.Append(_ColorArray(_ik) & ";")
            Next
            _CTable.Append("\red" & _RGBArray(0) & "\green" & _RGBArray(1) & "\blue" & _RGBArray(2) & " ;}")
            Dim _OrigColorTable As String = "{\colortbl" & _ColorTable & "}"
            _DocumentBody = _DocumentBody.Replace(_OrigColorTable, _CTable.ToString())
            _Parameters(0) = _ColorArray.Length - 1
            _Parameters(1) = _DocumentBody
        Else
            _Parameters(0) = _actColorNum
            _Parameters(1) = _DocumentBody
        End If
        Return _Parameters
    End Function
    Private Function RTFTableCreatorCurrentPos(_Grid As GridView) ', _DocumentBody As String) As String
        Dim _RTFtext As New StringBuilder
        Dim _RowNum As Integer = _Grid.RowCount
        Dim _ColumnsNum As Integer = _Grid.Columns.Count
        Dim irowIndex As Integer = 0
        '--Fejléc kiírása RTFként--

        _RTFtext.Append("\par\pard\plain\ql\par\trowd\irow" & irowIndex & "\irowband" & irowIndex & "\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10" & _
                        "\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10\trleft-108\trautofit1\trpaddfl3\trpaddl108\trpaddfr3\trpaddr108")
        For _ik As Integer = 0 To _ColumnsNum - 1
            If _Grid.Columns(_ik).Visible = True Then
                _RTFtext.Append("\clvertalt\clcbpat2\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10" &
                                "\cltxlrtb\clftsWidth3\clwWidth3302\clpadfr3\clpadr108\clpadft3\clpadt108\cellx" & _ik)
            End If
        Next
        For _ik As Integer = 0 To _ColumnsNum - 1
            If _Grid.Columns(_ik).Visible = True Then
                _RTFtext.Append("\pard\plain\ql\intbl{\b\cf0" & _Grid.Columns(_ik).Caption & "}\b\cell")
            End If
        Next

        _RTFtext.Append("\trowd\irow" & irowIndex & "\irowband" & irowIndex & "\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10" & _
                        "\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10\trleft-108\trautofit1\trpaddfl3\trpaddl108\trpaddfr3\trpaddr108")
        For _ik As Integer = 0 To _ColumnsNum - 1
            If _Grid.Columns(_ik).Visible = True Then
                _RTFtext.Append("\clvertalt\clcbpat2\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10" &
                                "\cltxlrtb\clftsWidth3\clwWidth3302\clpadfr3\clpadr108\clpadft3\clpadt108\cellx" & _ik)
            End If
        Next
        irowIndex += 1

        '' --Adatsorok kiírása RTFként--
        For _ik As Integer = 0 To _RowNum - 2

            _RTFtext.Append("\row")
            For _jk As Integer = 0 To _ColumnsNum - 2
                If _Grid.Columns(_jk).Visible = True Then
                    _RTFtext.Append("\pard\plain\ql\intbl{\cf0" & (_Grid.GetRowCellValue(_ik, _Grid.Columns(_jk)).ToString()) & "}\cell")
                End If
            Next

            _RTFtext.Append("\trowd\irow" & irowIndex & "\irowband" & irowIndex & "\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10" & _
                            "\trleft-108\trautofit1\trpaddfl3\trpaddl108\trpaddfr3\trpaddr108")

            For _jk As Integer = 0 To _ColumnsNum - 1
                If _Grid.Columns(_jk).Visible = True Then
                    _RTFtext.Append("\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cltxlrtb\clftsWidth3\clwWidth3302" & _
                                    "\clpadfr3\clpadr108\clpadft3\clpadt108\cellx" & _jk)
                End If
            Next
            irowIndex += 1
        Next

        ''--Utolsó sor --
        _RTFtext.Append("\row")
        For _jk As Integer = 0 To _ColumnsNum - 2
            If _Grid.Columns(_jk).Visible = True Then
                _RTFtext.Append("\pard\plain\ql\intbl{\cf0" & (_Grid.GetRowCellValue(_RowNum - 1, _Grid.Columns(_jk)).ToString()) & "}\cell")
            End If
        Next

        _RTFtext.Append("\trowd\irow" & irowIndex & "\irowband" & irowIndex & "\lastrow\trbrdrt\brdrs\brdrw10\trbrdrl\brdrs\brdrw10\trbrdrb\brdrs\brdrw10\trbrdrr\brdrs\brdrw10" & _
                           "\trleft-108\trautofit1\trpaddfl3\trpaddl108\trpaddfr3\trpaddr108")

        For _jk As Integer = 0 To _ColumnsNum - 1
            If _Grid.Columns(_jk).Visible = True Then
                _RTFtext.Append("\clvertalt\clbrdrt\brdrs\brdrw10\clbrdrl\brdrs\brdrw10\clbrdrb\brdrs\brdrw10\clbrdrr\brdrs\brdrw10\cltxlrtb\clftsWidth3\clwWidth3302" & _
                                "\clpadfr3\clpadr108\clpadft3\clpadt108\cellx" & _jk)
            End If
        Next
        _RTFtext.Append("\row\pard\plain\ql\par")

        '_DocumentBody_NEW = _DocumentBody.Replace(_Tag, _RTFtext.ToString())
        '_DocumentBody_NEW = _DocumentBody_NEW.Replace("{\colortbl\red0\green0\blue0 ;\red0\green0\blue255 ;}", "{\colortbl\red0\green0\blue0 ;\red0\green0\blue255 ;\red192\green192\blue192 ;}")

        Return _RTFtext.ToString()
    End Function
    Private Sub aRestorePriceListTemplate_Execute(ByVal sender As System.Object, ByVal e As DevExpress.ExpressApp.Actions.SimpleActionExecuteEventArgs) Handles aRestorePriceListTemplate.Execute
        Try
            Dim _ocur As Xpo.XPObjectSpace = View.ObjectSpace
            Dim _ImmovablesPriceListHeader As ImmovablesPriceListHeader = TryCast(e.SelectedObjects(0), ImmovablesPriceListHeader)
            Dim _ImmovablesGroupsParameters As ImmovablesGroupsParameters = _ocur.FindObject(Of ImmovablesGroupsParameters)(CriteriaOperator.Parse("ImmovablesGroups=?", _ImmovablesPriceListHeader.ImmovablesGroups))

            If _ImmovablesGroupsParameters Is Nothing Then Throw New Exception("*Nincsen beállítva az adott ingatlancsoporthoz a paraméterek!")
            _ImmovablesPriceListHeader.DocumentBody = _ImmovablesGroupsParameters.DocumentBodyPriceList

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.OkOnly)
        End Try
    End Sub
    Private Sub RichEditControlViewItem_ControlCreated(sender As Object, e As EventArgs)
        Dim itemControl As Object = (CType(sender, ViewItem)).Control
        _RichEditControl = TryCast(itemControl, RichEditUserControl).RichEditControl
    End Sub
End Class
