Список форумов Форум Libreoffice

Форум Libreoffice

Добро пожаловать на Форум Libreoffice!
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

English French German Italian Portuguese Russian Spanish
Подсвечивание границы строки с активной ячейкой

 
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Basic
Предыдущая тема :: Следующая тема  
Автор Сообщение
mathnew



Репутация: 0    

Зарегистрирован: 20.08.2011
Сообщения: 24

СообщениеДобавлено: Пт Сен 09, 2011 9:21 am    Заголовок сообщения: Подсвечивание границы строки с активной ячейкой Ответить с цитатой

Вместо подсвечивания строки с активной ячейкой (http://libreoffice.3nx.ru/viewtopic.php?t=17) можно подсвечивать нижнюю границу строки с активной ячейкой. В этом случае многие проблемы снимаются.
Измененный макрос из предыдущего топика для этого случая:
Код:
Global oListener As Object
Global oDocView As Object
Global nrow
Global ncol

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Выполните этот макрос для начала перехвата событий !!!
Sub Example_SelectionChangeListener
  Dim sName$
  oDocView = ThisComponent.getCurrentController
   ' создайте перехватчик для перехвата события "изменение выделения"
   sName = "com.sun.star.view.XSelectionChangeListener"
  oListener = CreateUnoListener( "MyApp_", sName )
   
  ' зарегистрировать этот перехватчик в контроллере документа
  oDocView.addSelectionChangeListener(oListener)
  MsgBox "Listener added"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Выполните этот макрос для прекращения перехвата событий
Sub Remove_Listener
  ' удаляет перехватчик
  oDocView.removeSelectionChangeListener(oListener)
End Sub

' Все  перехватчики должны поддерживать это событие
Sub MyApp_disposing(oEvent)
  msgbox "Вывод перехватчика (disposing the listener)"
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub MyApp_selectionChanged(oEvent)
Dim oCurrentSelection As Object
Dim oCell, oCell0
Dim aStr0
Dim oSheet

oCell=oEvent.source

aStr0=oCell.Selection.AbsoluteName

oSheet=ThisComponent.Sheets.getByName("Лист1")

oRanges=oSheet.getCellRangeByPosition(ncol, nrow, ncol+15, nrow)

BBorder = oRanges.BottomBorder
BBorder.LineDistance=4
BBorder.OuterLineWidth = 24
BBorder.InnerLineWidth = 24
BBorder.Color = -1
oRanges.BottomBorder = BBorder

oCell0=oSheet.getCellByposition(0,0)
oCell0.setString(an)

''''''''''''''''''''''''''''''''''''''''''''''''
'Тут решил воспользоваться способом одного из сообщений в этой теме для выделения номера строки из абсолютного адреса ячейки

spl = Trim("@#$%^&*")
aStr0 = Replace(aStr0, "$", "$" & spl)
aStr0 = Replace(aStr0, ":", "!" & spl)
aStr1 = Split(aStr0, spl)
l = LBound(aStr1)
u = UBound(aStr1)
''''''''''''''''''''''''''''''''''''''''''''''''
d1=1
ncol=Str(0)
nrow=Str(Val(aStr1(3))-d1)

d2=100
nrowmin=Str(0)
nrowmax=Str(Val(aStr1(3))+d2)

If Val(aStr1(3))<101 Then
 
oRanges=oSheet.getCellRangeByPosition(ncol, nrow, ncol+15, nrow)

BBorder = oRanges.BottomBorder
BBorder.LineDistance=4
BBorder.OuterLineWidth = 24
BBorder.InnerLineWidth = 24
BBorder.Color = RGB(240,0,0)
oRanges.BottomBorder = BBorder

End If

End Sub


PS. В LibreOffice 3.4.2 выглядит не так, как в OpenOffice (что на скрине)!?
PPS. Проблемы с фоном ячеек снимаются, но появляются проблемы с обрамлением (границами) ячеек: они стираются. Надо доработать сохранение.восстановление формата ячеек.

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Форум Libreoffice -> Basic Часовой пояс: GMT
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Вы можете бесплатно создать форум на MyBB2.ru, RSS