2014-11-10 3 views
0

OpenOffice Calc 스프레드 시트를 만들었고 버튼을 삽입했습니다. 성공적으로 버튼을 사용하여 매크로를 호출 할 수 있습니다. 마우스를 버튼 위에 올려 놓으면 커서를 갖기를 원합니다.openoffice calc button 마우스 오버 이벤트 커서 변경

먼저 '디자인'모드로 전환 한 다음 내 버튼을 마우스 오른쪽 버튼으로 클릭하고 나타나는 팝업 메뉴를 사용하여 '이벤트'탭을 선택했습니다. 그런 다음 '마우스 내부'점 점 단추를 클릭했습니다. 팝업 된 '작업 지정'창에서 '매크로 ..'버튼을 클릭했습니다. 그런 다음 왼쪽 분할 창에서 'OpenOffice Macros'폴더를 선택하는 '매크로 선택기'팝업 창이 나타납니다. '라이브러리'창에서 '도구'> 'ModuleControls'를 확장 한 다음 오른쪽 '매크로 이름'창에서 'SwitchMousePointer'를 선택한 다음 '확인' '확인'버튼을 클릭했습니다.

하지만 내 버튼 위에 마우스 커서를 올려 놓으면 OpenOffice 오류 창이 나타나 "기본 스크립트 Tools.ModuleControls.SwitchMousePointer를 실행하는 동안 스크립팅 프레임 워크 오류가 발생했습니다."

OO 경험이 거의 없지만 OO 포럼 사이트 또는 여기에서 원하는 내용을 찾지 못했습니다. 도와 줘서 고마워, Nige.

답변

0

SwitchMousePointer에는 속성 (oWindowPeer는 Object, bDoEnable은 부울)이 필요합니다. 따라서 단순히 이벤트에 할당 할 수는 없습니다. 그리고 그것은 당신이 생각하는 것을하지 않을 것입니다.

포인터를 변경하려면 자신의 Sub를 쓰는 것이 좋습니다. 또한 모든 마우스 이벤트에서이 작업을 수행 할 필요가 없습니다. 예를 들어 시트 활성화시 한 번 수행해야합니다.

OpenOffice.org BASIC 프로그래밍에 대한 소개는 https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide을 참조하십시오. 그리고 BASIC 매크로를 프로그래밍하고 싶다면 디버깅 도구가 필요합니다.

https://wiki.openoffice.org/wiki/Documentation/BASIC_Guide/UNO_Tools가 시트에 가정 한 후 "푸시 버튼 (1)"라는 이름의 버튼된다 : 따라서, 특히 볼

Sub ChangeMousePointer 
    oController = ThisComponent.CurrentController 
    oButtonModel = oController.ActiveSheet.DrawPage.Forms(0).getByName("Push Button 1") 
    oButtonControl = oController.getControl(oButtonModel) 
    oWindowPointer = CreateUnoService("com.sun.star.awt.Pointer") 
    oWindowPointer.SetType(com.sun.star.awt.SystemPointer.HAND) 
    oButtonControl.Peer.setPointer(oWindowPointer) 
End Sub 

이 시트 이벤트 활성화 문서에이를 할당합니다. 시트 탭을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 시트 이벤트를 선택하십시오. 다음 : enter image description here

버튼이 시트 (0)에있는 경우에만 문서를 여는 동안 시트 이벤트가 발생하지 않고이 시트가 앞에 있습니다. 이 경우 문서 이벤트 Open Document에서도 Sub ChangeMousePointer를 호출해야합니다.

Sub Document_Open 
    oController = ThisComponent.CurrentController 
    oSheet = oController.ActiveSheet 
    if oSheet.Name = ThisComponent.Sheets(0).Name then 
     if oController.ActiveSheet.DrawPage.Forms.Count > 0 then 
      if oController.ActiveSheet.DrawPage.Forms(0).hasByName("Push Button 1") then 
       call ChangeMousePointer 
      end if 
     end if 
    end if 
End Sub 

문서 이벤트 문서 열기 선택 도구에 매크로를 지정하려면 - 메뉴에서 사용자 지정 및 : enter image description here

+0

안녕 악셀을 당신의 좋은 답변에 대한 많은 감사합니다. 나는 그것을 시도하고 그것은 나를 위해 작동합니다. 단, 다른 시트를 선택한 후에 만 ​​작동합니다. 시트 2를 선택한 다음 시트 1을 다시 선택하십시오. 시트 1에 버튼이 있습니다. 시트를 다시로드 할 때까지 포인터가 바뀌지 않습니다. 내가 여기 뭔가를 놓친 적이 있니? 고마워, 니게. –

+0

죄송합니다. Openoffice 4.1.1 및 Libreoffice 4.2.6.2에서 저에게 도움이됩니다. 어떤 버전이 있습니까? –

+0

AOO 4.1.1 Windows 8에서 스프레드 시트를 처음 열면 시트 탭을 선택하지 않아도 작동합니까? –