Pytanie u usunięcie ComboBox w arkuszu Calc

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
benco
Posty: 1
Rejestracja: pn kwie 26, 2010 9:31 am

Pytanie u usunięcie ComboBox w arkuszu Calc

Post autor: benco »

Witam!

Czy ktoś mógłby mi napisać w jaki sposób za pomocą makra można usuwać pola ComboBox1 i ComboBox2 z arkusza Calca. Niestety mam dokumenty z MS Office zawierające 2 sztuki ComboBox. Gdy dokument edytuję w OO wszytko niby jest ok, ale po zapisie do XLS MS Office nie może tego odczytać. Metodą prób i błędów wykryłem że to kwestia 2 pól Combo i chciałbym by osoba zapisująca te pliki miała możliwość za pomocą makra usunąć te pola, a ta która będzie dalej to przetwarzała w MS Office będzie miała makro tworzące te ComboBoxy ponownie. Sądzę że jest to jedyne wyjście.

Proszę bardzo o pomoc.

Pozdrawiam

benco
OpenOffice.org 3.2 (OpenOffice.ux.pl 3.2) Windows xp (Vista)
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: Pytanie u usunięcie ComboBox w arkuszu Calc

Post autor: mg2 »

Utworzenie ComboBox o nazwie "oCombo"

Kod: Zaznacz cały

sub create_control
 dim oDrawPage as object
 dim oCombo as object
 dim oComboCtrSh as object
 dim oPos as new "com.sun.star.awt.Point"
 dim oSize as new "com.sun.star.awt.Size"

 oDrawPage = thisComponent.currentController.activeSheet().drawPage
 
 oPos.X = 1000
 oPos.Y = 1000
 oSize.Width = 3000
 oSize.Height = 1000

 oCombo = createUnoService("com.sun.star.form.component.ComboBox")
 oCombo.name = "oCombo"
 oCombo.dropDown = true
 
 oComboCtrSh = thisComponent.createInstance("com.sun.star.drawing.ControlShape")
 oComboCtrSh.setPosition(oPos)
 oComboCtrSh.setSize(oSize)
 oComboCtrSh.setControl(oCombo)

 oDrawPage.add(oComboCtrSh)
End Sub
Usunięcie ComboBox o nazwie "oCombo"

Kod: Zaznacz cały

sub removeControl
 dim oSheet as object
 dim oCtrShape as object
 dim oDrawPage as object
 dim i as integer
 
 oDrawPage = thisComponent.currentController.activeSheet().drawPage

 for i = 0 to oDrawPage.Count - 1
  oCtrShape = oDrawPage(i)
  if hasUnoInterfaces(oCtrShape, "com.sun.star.drawing.XControlShape") then
   If oCtrShape.control.name = "oCombo" then
    oDrawPage.remove(oCtrShape)
   end if
  end if
 next i
end sub
OOo3.1.1 na Ubuntu 9.04
ODPOWIEDZ