2004 11 Usprawniamy OpenOffice org, czyli makro do tworzenia tabel [Programowanie]


dla programistów
Usprawniamy
OpenOffice.org,
czyli makro
do tworzenia tabel
Marek Sawerwain
akiet biurowy OpenOffice.org stosowane w MS Office. Z tego powodu
jest z pewnością bardzo dobrze makra z dokumentów Worda czy Excela
znany większości Czytelników. nie zadziałają w OpenOffice.org.
PJego możliwości wystarczają do Na początek dla Czytelnika/
swobodnego tworzenia skomplikowanych Czytelniczki nie znających współczesne-
dokumentów różnego typu. Same podsta- go Basica przedstawię kilka prostych
wowe własności, np. w edycji dokumen- przykładów. Spróbujemy pokazać komu-
tów, czasem nie wystarczają. Podobnie jak nikat tekstowy. Pierwszym sposobem jest
inne oprogramowanie tego typu, oferuje odwołanie się do tradycji Basica, czyli
DVD
on rozbudowany język makr. skorzystanie ze słowa kluczowego print.
Po uruchomieniu dystrybucji
Dostępność takiego języka pozwala Zanim cokolwiek zaczniemy pisać,
Linux+ Live DVD można prze-
wprowadzać nowe funkcje, które są należy wywołać edytor języka. W tym
testować działanie omawianych
makr. W wersji deweloperskiej potrzebne w codziennej pracy. W ten celu udajemy się do menu Narzędzia,
OpenOffice.org, aby uruchomić
sposób OpenOffice.org to nie tylko wybieramy pozycję Macros, a następnie
makro tworzące tabelę należy po
procesor tekstów, edytor grafiki czy Makro.... Ukaże się nam okno podobne do
otwarciu dokumentu macros.sxw
arkusz kalkulacyjny, ale cała platforma, tego z Rysunku 1, zawierające spis makr.
przejść do menu Tools >
którą można dostosować do własnych Zwróćmy uwagę na to, że makra
Macros >Organize Dialogs.
potrzeb. mogą być zapisywane w aktualnie otwar-
W zakładce Dialogs nowego kna
W tym artykule chciałbym pokazać tym dokumencie w sekcji standard. Są
trzeba wybrać macros.sxw >
na kilku nieskomplikowanych przy- wtedy makrami dostępnymi tylko z pozio-
Standard >WindowTableParams
kładach, jak można użyć języka makr. mu dokumentu, w którym się znajdują. Na
i kliknąć Edit. Otworzy się
Naszym celem jest napisanie makra dla Rysunku 1 widać również drugą sekcję
podgląd kontrolki wprowadzania
edytora tekstu Writer, które będzie two- standard, która należy do sekcji głównej
danych dla makra. Zamykamy
okno podglądu i już możemy rzyć tabelkę o podanej liczbie wierszy soffice. Reprezentuje ona całą platfor-
wypróbować działanie makra
i kolumn. Dodatkowo, dodamy możli- mę OpenOffice.org. Makra utworzone
poprzez Tools >macros >
wość numeracji pierwszej kolumny. w sekcji soffice/standard będą dostępne
run macro >macros.sxw >
w dowolnym dokumencie. Można powie-
Standard >Module1 >
Przykład na początek dzieć, iż mają zasięg globalny.
WindowTableParamsOpen.
Podstawowym językiem, w którym Skorzystamy z sekcji soffice/
piszemy makra, jest Basic, określany standard. W oknie edytora (klikamy
Na płycie CD/DVD
w OpenOffice.org szumną nazwą Star- w przycisk Edytuj), jeśli nie tworzyli-
Na płycie CD/DVD znajduje się
Basic (trzeba pamiętać, że StarOffice, śmy makr poprzez funkcję rejestratora,
dokument ze stworzonymi makra-
to dawna nazwa OpenOffice.org zanim pokaże się tylko definicja jednej funkcji
mi oraz wszystkie listingi
z artykułu. został przekazany przez Suna społecz- o nazwie Main. Jeśli pomiędzy Sub Main
ności Open Source). Jest to niemal kopia a End Sub wpiszemy następującą linię kodu
O autorze
języka Visual Basic for Applications (w z wywołaniem instrukcji print, np. w taki
Autor zajmuje się tworzeniem
skrócie VBA), stosowanego w pakiecie MS sposób:
oprogramowania dla WIN32
Office. Wbrew pozorom, to duża zaleta,
i Linuksa. Zainteresowania: teoria
ponieważ osoby, które znają ten język, Sub Main
języków programowania oraz
będą się czuć dość dobrze w pakiecie print  Jakiś komunikat
dobra literatura. Kontakt z auto-
rem: autorzy@lpmagazine.org OpenOffice.org. Niestety, API poszczegól- End Sub
nych elementów pakietu jest inne niż to
70
listopad 2004
dla programistów
makra OpenOffice.org
sub ex1a
Krótki kurs StarBasica
MsgBox ("Witaj Świecie!!!", 0, "")
 deklaracje zmiennych
end sub
Deklaracja zmiennych w StarBasicu
przed użyciem nie jest konieczna, ale
Pierwszy argument funkcji MsgBox to
lepiej je definiować, jak również określać
treść komunikatu. W drugim podajemy
ich typ, ponieważ czasami na zmiennej
kod przycisku. Wartość zero oznacza
nieokreślonej nie można wykonać żadnej
Rysunek 1. Okno zawierające spis makr
przycisk OK. Tabela 1 zawiera oznacze-
operacji arytmetycznej.
nia poszczególnych przycisków, choć nie
Do deklaracji zmiennych służy
to uzyskamy już w pełni funkcjonalne tylko, bo jak widać, kody oznaczają rów- polecenie Dim. Najprostsza deklaracja
makro. nież ikony czy umieszczanie domyślnego to Dim nazwa_zmiennej. Ponieważ nie
określiliśmy typu zmiennej, StarBasic
Możemy teraz uruchomić makro uaktywnienia na określonym przycisku.
zakłada, że będzie to typ wariantowy,
wybierając przycisk Uruchom. Jest to Gdy chcemy umieścić kilka przycisków
czyli przyjmujący dowolne wartości.
karteczka ze strzałką w dół. Zobaczymy czy ikon, za pomocą znaku plus doda-
Znacznie lepiej, szczególnie z punktu
okno dialogowe z naszym komunika- jemy do kodu inne wartości, np. 2 + 16
widzenia czytelności kodu, jest określać
tem oraz dwa przyciski: OK i Anuluj. oznacza, że umieścimy przyciski Anuluj
typ. Gdy chcemy zadeklarować zmienną
Jeśli wybierzemy OK, to okno zostanie i Powtórz oraz ikonę Stop.
całkowitą, to polecenie jest następujące:
zamknięte. Wybór Anuluj spowoduje, Istotną informacją jest, który przycisk
Dim i As Integer
. Podobnie w przypad-
że na ekranie zostanie wyświetlony został naciśnięty przez użytkownika.
ku ciągu znaków: Dim str As String.
komunikat o przerwaniu działania skryp- Funkcja MsgBox zwraca odpowiednią war-
Podstawowe typy to: Bool, Currency,
tu. Warto pamiętać o tej właściwości tość. Wartości reprezentujące poszczegól- Date, Double, Integer Long, Single,
,
polecenia print. Przydaje się ona w bar- ne klawisze zawiera wspomniana już String. Typem specjalnym jest Object,
który reprezentuje obiekty np. kontrolki
dziej rozbudowanych skryptach. wcześniej Tabela 1.
w oknie dialogowym.
Poprawimy zachowanie naszego Aby uruchomić makro, możemy
Warto zatrzymać się na chwilę przy
skryptu korzystając z funkcji MsgBox. ponownie przejść do okienka Makra
notacji. Każde słowo kluczowe czy typ
Wyświetla ona typowe okno dialogowe, i wybrać zakładkę standard w naszym
zmiennej jest pisane z dużej litery. Oczy-
ale możemy określić, jakie przyciski mają dokumencie. W sekcji Macros in Module1
wiście, nie jest to konieczne, ponieważ
zostać wykorzystane. Przechodzimy zobaczymy nazwę naszego makra. Po
StarBasic nie rozpoznaje dużych i małych
do sekcji standard nowego dokumentu wskazaniu nazwy, wystarczy wybrać
liter, ale zwiększa to czytelność kodu
i klikamy przycisk Nowy. Tworzymy nową przycisk Wykonaj, aby uruchomić makro.
i z tego powodu warto własne makra
procedurę o nazwie ex1a. Kod zródłowy Lepszym sposobem jest podłączanie
pisać zachowując tę notację.
jest równie krótki jak poprzednio: naszego makra pod skrót klawiszowy.
Polecenie Dim pozwala również
na deklarację tablic. Zakres podajemy
w nawiasach okrągłych po nazwie
Tabela 1. Kody oznaczeń przycisków i ikon dla funkcji MsgBox
zmiennej, np. Dim str(20) As Integer
Wartość Znaczenie
to deklaracja tablicy liczb całkowitych, ale
0 Przycisk OK
uwaga: o dwudziestu jeden elementach,
bowiem numerujemy poszczególne
1 Przyciski OK i Anuluj
elementy tablicy od zera do dwudziestu.
2 Przyciski Anuluj i Powtórz
Zaletą StarBasica jest możliwość dowol-
3 Przyciski Tak, Nie i Anuluj
nego opisu zakresu, np. od -15 do 15: Dim
4 Przyciski Tak, Nie
tbl(-15 To 15) As Integer
.
StarBasic dopuszcza deklaracje
5 Przyciski Powtórz i Anuluj
tablic wielowymiarowych, np. Dim
16 Ikona Stop
tbl2d(20,2) As String określa dwu-
32 Ikona zapytania
wymiarową tablicę o trzech wierszach,
a w każdym wierszu mamy dwadzieścia
48 Ikona wykrzyknika
jeden elementów.
64 Ikona informacyjna
128 Pierwszy przycisk jest przyciskiem domyślnym
W tym celu na pasku z przyciskami
256 Drugi przycisk jest przyciskiem domyślnym
klikamy prawym przyciskiem myszy
512 Trzeci przycisk jest przyciskiem domyślnym
i wybieramy opcję Konfiguruj.... Innym
Wartości powrotne funkcji MsgBox
sposobem jest wybranie pozycji Konfigu-
1 Naciśnięto przycisk OK
ruj... z menu Narzędzia. W obydwu przy-
2 Naciśnięto przycisk Anuluj padkach zobaczymy okno Konfiguracja
z Rysunku 2.
4 Naciśnięto przycisk Powtórz
Interesuje nas zakładka Klawiatura.
5 Naciśnięto przycisk Ignoruj
Wybieramy klawisz bądz kombinację
6 Naciśnięto przycisk Tak
klawiszy, pod którą chcemy podłączyć
7 Naciśnięto przycisk Nie
makro. Jeśli naciśniemy kombinację kla-
71
www.lpmagazine.org
dla programistów
Listing 1. Makro obliczające pole koła
sub exPoleKola
Dim r as Double
r = InputBox ("Proszę podać długość promienia r:","")
If r<=0 then
MsgBox ("Promień nie może być wartością mniejszą bądz równo zero!", 0, "")
else
MsgBox("Pole koła to:"+Str(Pi * r * r),0,"")
endif
end sub
Rysunek 2. Okno Konfiguracja,
gdzie podłączamy makro do skrótu
klawiszowego Obliczanie pola koła pola. Obliczenia, jak widać z Listingu
Przedstawię teraz nieco dłuższe makro. 1, są argumentem funkcji Str. Dlaczego?
wiszy w oknie, od razu zostaniemy prze- Jego kod zródłowy pokazuje Listing 1. Funkcja MsgBox oczekuje ciągu znaków,
niesieni pod odpowiednią pozycję. Teraz Pierwsza linia to deklaracja zmiennej więc należy wykonać konwersję z warto-
z listy Kategoria wybieramy np. Open- r jako liczby zmiennoprzecinkowej ści numerycznej na ciąg znaków i to jest
Office.org Makra Języka Basic, rozwijamy o podwójnej precyzji. W następnej za właśnie zadaniem funkcji Str.
pozycję Standard i zobaczymy nazwę pomocą okna dialogowego prosimy użyt-
modułu. Po kliknięciu nazwy modułu, kownika o podanie długości promienia. Główne zadanie
w oknie Funkcja pojawią nazwy pro- Po wprowadzeniu wartości należy naci- Po napisaniu dwóch krótkich skryp-
cedur i funkcji, które zostały przez nas snąć [Enter], aby w zmiennej r znalazła tów, czas na główne makro. Chcemy
zdefiniowane. Wybieramy nazwę funkcji się wartość promienia. utworzyć okno dialogowe, w którym
i za pomocą przycisku Modyfikuj łączy- Instrukcją warunkową sprawdzamy, będziemy mogli określić, ile wierszy oraz
my makro z skrótem klawiszowym. Od czy została wprowadzona wartość więk- ile kolumn ma posiadać nasza tabela.
tego momentu, po zamknięciu okna Kon- sza od zera. Jeśli nie, to wyświetlamy Dodatkowo, chcemy, aby za pomocą
figuracja za pomocą przycisku OK, nasze komunikat, że promień nie może być kontrolki typu checkbox była możliwość
makro zostanie wywołane przypisanym wartością zerową bądz ujemną. Gdy pro- wyboru, czy w pierwszej kolumnie ma
skrótem klawiszowym. mień jest większy od zera, to za pomocą zostać umieszczona numeracja poszcze-
funkcji MsgBox wyświetlamy wartość gólnych wierszy.
Krótki kurs StarBasic'a
 procedury i funkcje
Podobnie jak w Pascalu, w StarBasicu
występują procedury i funkcje. Procedury
(choć ostatecznie w Basicu występują
podprogramy, a nie procedury) są defi-
niowane w następujący sposób:
Sub nazwa(parametry)
...
End Sub
Możemy określić także argumenty proce-
dury, np. Sub Nazwa(p1 As Integer, p2
As String).
StarBasic pozwala na opuszczenie
procedury w dowolnym miejscu. Służy do
tego polecenie Exit Sub.
Definicja funkcji przedstawia się ana-
logicznie jak procedura:
Function nazwa(parametry) As typ
End Function
Parametry opisujemy w identyczny
sposób. Wartość powrotną opisujemy
podobnie jak w Pascalu, przypisując
do nazwy funkcji odpowiednią wartość.
Podobnie jak procedurę, działanie funkcji
można zakończyć w dowolnym momencie
za pomocą Exit Function.
Rysunek 3. Schemat działania naszego makra
72
listopad 2004
dla programistów
makra OpenOffice.org
torze należy traktować jako utworzenie durą. Pierwsza zmienna będzie repre-
typu. zentować obiekt okna. Dwie następne
Sam proces tworzenia okna to ilość wierszy i ilość kolumn w two-
odbywa się za pomocą myszki. Final- rzonej tabeli.
ne okno, które chcemy zaprojektować, Po definicji zmiennych tworzymy trzy
zostało przedstawione na Rysunku główne makra o następujących nazwach
4. Poszczególne kontrolki możemy i przeznaczeniu:
dowolnie przemieszczać na oknie
i zmieniać ich rozmiary. Ważnym ele- " WindowTableParamsOpen  utworzenie
Rysunek 4. Zaprojektowane przez nas
mentem jest podłączenie zdarzeń do i wyświetlenie okna dialogowego;
okno dialogowe do tworzenia tabeli
przycisków. Należy wybrać przycisk, " W in d o wTa ble P a r a m sTa ble M a k in g
Nasze makro będzie działać a następnie lewym klawiszem myszki  utworzenie tabeli;
w sposób liniowy, co przedstawia wywołać menu i wybrać opcję Wła- " WindowTableParamsClose  zamknięcie
schemat z Rysunku 3. Na początku po ściwości. Pokaże się okno dialogowe okna dialogowego.
uruchomieniu marka następuje wyświe- (widać je także na Rysunku 5). Prze-
tlenie okna. W tym momencie użytkow- chodzimy do zakładki Wydarzenia Pierwsze z makr zostanie przypisane
nik wpisuje do okna dialogowego, ile i wybieramy przycisk znajdujący przy przez nas do jakiegoś skrótu klawiatu-
kolumn oraz wierszy ma liczyć przyszła wyrażeniu Podczas inicjowania.... rowego. Drugie, jak łatwo się domyśleć,
tabela. Po kliknięciu na przycisk Two- Pokaże się nam okno dialogowe, powinno być podłączone do przycisku
rzenie Tabeli zostanie utworzona tabela, w którym wskazujemy makro, które ma Tworzenie Tabeli w oknie dialogowym.
a okno zostanie zamknięte. Okno zosta- zostać wywołane podczas kliknięcia na Podobnie jak trzecie, do przycisku
nie również zamknięte po wybraniu przycisk. Istotnym elementem są odpo- Zamknij Okno. Kod tych trzech makr
przycisku Zamknij Okno. wiednie nazwy kontrolek, szczególnie zawiera Listing 2.
Zanim zaczniemy pisać treść makra, tych, z których będziemy odczytywać Makro WindowTableParamsOpen wyko-
należy utworzyć okno dialogowe. informacje. Mamy dwa pola edycyjne, nuje dwie czynności. Na początku tworzy
Pierwszym krokiem jest przygotowanie więc jedno z nich nazywamy RowCo- obiekt na podstawie wskazanego przez
specjalnego modułu, w którym będzie unt (ilość wierszy), a drugie ColCount. nas typu (pierwsza czynność). Tym zaj-
znajdować się definicja okna. Nazwę kontrolki określamy w polu muje się pierwsza linia kodu. Ważny jest
Możemy to zrobić po wybraniu Nazwa w oknie Właściwości. argument funkcji CreateUnoDialog, który
przycisku Moduły (jest to ikona kartecz- wskazuje okno dialogowe. Jeśli zostanie
ki podobnej do tej, która reprezentuje Rozpoczynamy pisać on podany w taki sposób, jak na Listin-
uruchomienie makra). Ukaże się okno makro gu 2, to definicja okna jest pobierana
Zarządzanie makrami. Przyciskiem Na samym początku pracy w edytorze z sekcji standard aktualnie otwartego
Nowe okno dialogowe... utworzymy StarBasica (Rysunek 6) deklarujemy trzy dokumentu, czyli okno dialogowe nie
potrzebne okno. zmienne globalne: jest ogólnie dostępne dla wszystkich
Drugim sposobem jest kliknięcie dokumentów. Jeśli umieścimy definicję
lewym przyciskiem na nazwę modułu Dim WindowTableParamsDlg As Object okna w sekcji soffice/standard, a do
w dole okna edytora i wybranie opcji Dim row_count As Integer definicji okna odwołamy się poprzez
Wstaw, a następnie Dialog Basic. Dim col_count As Integer identyfikator GlobalScope, to okno
Po utworzeniu pustego okna bardzo będzie ogólnie dostępne dla każdego
istotnym elementem jest nazwa modułu Definicje tych zmiennych znajdują się otwartego dokumentu. Po utworzeniu
dla niego. Załóżmy, że będzie to Win- poza jakąkolwiek funkcją czy proce- obiektu wywołujemy metodę execu-
dowTableParams. Jest ona ważna, ponie-
waż będziemy powoływać się na nią
Listing 2. Makra tworzące okno, tabelę oraz zamykające okno dialogowe
w momencie tworzenia instancji.
Sub WindowTableParamsOpen
Utworzenie okna dialogowego w edy-
S
WindowTableParamsDlg = CreateUnoDialog(DialogLibraries.Standard.
WindowTableParams)
WindowTableParamsDlg.execute()
End Sub
Sub WindowTableParamsTableMaking
col_count = WindowTableParamsDlg.getControl("ColCount").getText()
row_count = WindowTableParamsDlg.getControl("RowCount").getText()
TableMaking()
WindowTableParamsDlg.endExecute()
End Sub
Sub WindowTableParamsClose
Rysunek 5. Podłączanie zdarzenia do
WindowTableParamsDlg.endExecute()
End Sub
przycisku
73
www.lpmagazine.org
dla programistów
S
Metoda createInstancejest uniwersalna, oCursor = oText.createTextCursorByRange
gdyż, jeśli podamy inny typ, np. com.sun. (oViewCursor.getStart())
star.text.GraphicObject, to zostanie
utworzony komponent do wyświetla- Wstawienie gotowej tabeli sprowadza się
nia obrazów. do jednej linii kodu:
Po utworzeniu obiektu tabeli, okre-
S
ślamy kilka podstawowych parame- oText.insertTextContent
trów, np. ilość wierszy i kolumn: (oCursor, MyTable, false)
MyTable.initialize(row_count, col_count) Pierwszy argument to kursor reprezen-
Rysunek 6. Okno edytora StarBasic
tujący miejsce, w którym ma zostać
Następnie określamy, że tabela ma wstawiony tekst. W drugim umieściliśmy
te i okno zostaje wyświetlone (druga być zorientowana horyzontalnie oraz obiekt tabeli. Trzecia wartość jest dla nas
czynność). podajemy lewy i prawy margines. równie istotna, ponieważ wartość False
Drugie makro o nazwie Window- W ten sposób tabela jest już gotowa oznacza, iż tabela ma być wstawiona
TableParamsTableMaking zajmuje się i można ją wstawić do tekstu. Wymaga w miejsce wskazywane przez kursor.
tworzeniem tabeli. Zanim zostanie to utworzenia kursora. Z tego powodu Wartość True oznacza, że tabela zastąpi
wywołana procedura, która w rzeczy- musimy odczytać aktualną pozycję zakres, np. tekst, który jest określany
wistości utworzy tabelę, odczytujemy w tekście: przez kursor.
ilość wierszy i kolumn. Wykorzystujemy Tabela została już dołączona do
S
zmienną globalną WindowTableParamsDlg. oViewCursor = oDoc.CurrentController dokumentu, ale my chcemy wprowa-
Dzięki metodzie getControl uzyskujemy .getViewCursor() dzić numerację pierwszej kolumny.
dostęp do każdej kontrolki, którą umie- Sprawdzamy, czy istotnie użytkownik
ściliśmy w oknie dialogowym. Wystar- Jak łatwo się domyśleć, oznacza to, że zaznaczył w polu checkbox, że chce,
czy podać tylko nazwę kontrolki, którą tabela będzie wstawiana w miejscu, gdzie aby pierwsza kolumna była numero-
ustaliliśmy podczas tworzenia okna dia- aktualnie znajduje się kursor. Następnie wana. Sprowadza się to do odczytania
logowego. Po odczytaniu ilości wierszy tworzymy kursor zakresu. Tabela zosta- wartości, którą zawiera pole State. Jeśli
i kolumn tworzymy tabelę procedurą nie wstawiona do tekstu właśnie poprzez znajduje się tam jedynka, oznacza to, że
TableMaking. Jej zostanie poświęcony ten rodzaj kursora: pole zostało zaznaczone:
cały następny rozdział. Po utworze-
Listing 3. Tworzenie tabeli
niu tabeli zamykamy okna wywołując
z obiektu okna dialogowego metodę
Sub TableMaking()
endExecute.
Dim oDoc, oText, oViewCursor, oCursor, MyTable, TableCursor
W ten sam sposób postępujemy Dim i As Integer, last As Integer
w trzecim makrze, gdzie naszym zada-
oDoc = ThisComponent
niem jest zamknięcie okna.
oText = oDoc.getText()
Tworzenie tabeli
MyTable = oDoc.createInstance("com.sun.star.text.TextTable")
Utworzeniem tabeli zajmuje się pod- MyTable.initialize(row_count, col_count)
MyTable.HoriOrient = 0
program TableMaking. Listing 3 zawiera
MyTable.LeftMargin = 2000
kompletny kod zródłowy tej procedu-
MyTable.RightMargin = 1500
ry. Na początku zdefiniowaliśmy kilka
zmiennych pomocniczych.
oViewCursor = oDoc.CurrentController.getViewCursor()
Pierwsze czynności to odczytanie oCursor = oText.createTextCursorByRange(oViewCursor.getStart())
oText.insertTextContent(oCursor, MyTable, false )
obiektu dokumentu. Wykorzystujemy
predefiniowaną zmienną ThisCompo-
If WindowTableParamsDlg.getControl("FirstColNumber").State = 1 then
nent. Jej wartość kopiujemy do zmien-
TableCursor = MyTable.createCursorByCellName("A1")
nej oDoc. Nie jest to konieczne, ale
InsertItemAndMoveDown("LP", tablecursor, mytable)
w ten sposób wiadomo, że oDoc For i = 1 To row_count  1
InsertItemAndMoveDown( Str(i), TableCursor, MyTable)
reprezentuje dokument. W następnej
Next i
linii odczytujemy obiekt reprezentu-
End if
jący tekst bądz inaczej  treść doku-
End Sub
mentu.
Po tych wstępnych czynnościach Sub InsertItemAndMoveDown(msgText, oCursor, oTable)
sName = oCursor.getRangeName()
przystępujemy do utworzenia tabeli.
oCell = oTable.getCellByName(sName)
Tworzymy instancję obiektu:
oCell.String = msgText
oCursor.goDown(1,FALSE)
S
MyTable = oDoc.createInstance
End Sub
("com.sun.star.text.TextTable")
74
listopad 2004
dla programistów
makra OpenOffice.org
S
If WindowTableParamsDlg.getControl Teraz do pola String wpisujemy tekst do stosowania językiem, więc każdy,
("FirstColNumber").State = 1 then przekazany w pierwszym argumen- kto zna inny język programowania, bez
... cie. Następna linia przesuwa kursor kłopotów może pisać własne makra.
End If we wskazanym kierunku  w naszym
przypadku w dół tabeli o jedną komór-
Chcąc wpisać cokolwiek do tabeli, kę. Możemy również przesunąć się
W Internecie:
musimy utworzyć kursor, podając nazwę w lewo wywołując metodę oCursor.go-
" Strona projektu OpenOffice.org:
komórki, w której ma się on znalezć: Left. Znaczenie wartości False jest
http://www.openoffice.org/
identyczne jak przy metodzie insert-
" Dokumentacja API do programu
S
TableCursor = MyTable TextContent.
OpenOffice.org:
.createCursorByCellName("A1") Jak widać na Listingu 3, pierwsze
http://api.openoffice.org/
wywołanie InsertItemAndMoveDown wsta-
" Spis dokumentów związanych
Do wpisywania tekstu wykorzystujemy wia tekst LP do pierwszego wiersza
z pakietem OpenOffice.org, m.in.
procedurę o nazwie InsertItemAndMove- i pierwszej kolumny. Następnie w pętli
o przenoszeniu makr
Down. Jej kod zródłowy również znajduje się wypełniamy kolejnymi liczbami pierw-
z VisualBasica do StarBasica:
na Listingu 3. Pierwsza linia tej procedury: szą kolumnę. Pozostaje tylko podłączyć
http://documentation.openoffice.org/
makro pod skrót klawiszowy. Oczy- HOW_TO
sName = oCursor.getRangeName() wiście, podłączamy makro o nazwie " Podręcznik opisujący API (wersja
PDF to ponad 1000 stron tekstu):
WindowTableParamsOpen, gdyż to makro
http://api.openoffice.org/
odczytuje komórkę, w której aktualnie wyświetla okno dialogowe.
DevelopersGuide/
znajduje się kursor. Nie możemy jeszcze
DevelopersGuide.html
do odczytanego obiektu wpisać tekstu, Zakończenie
" Obszerny dokument o pisaniu makr
gdyż musimy uzyskać obiekt komórki i to Mam nadzieję, że tym nieskompliko-
w OpenOffice.org:
robi druga linia: wanym makrem udało mi się pokazać,
http://www.pitonyak.org/
jak możemy dodać do OpenOffice.org
oCell = oTable.getCellByName(sName) nowe własności. StarBasic jest łatwym
R E K L A M A
75
www.lpmagazine.org


Wyszukiwarka

Podobne podstrony:
Różaniec do siedmiu boleści Matki Bożej czyli koronka do Matki Bożej Bolesnej
2004 11 Porównanie serwerów relacyjnych baz danych Open Source [Bazy Danych]
desocjalizacja praktyczna czyli just do it
Makro do Słownie (EXCEL 2007)
Strukturalnie czy obiektowo – czyli droga do sukcesu 90
2003 05 Revision Control Openoffice Org Explained
Inżynier Budownictwa 2004 11
Dz U 2004 242 2421 zmiana z dnia 2004 11 03
2003 12 Docbook Using Openoffice Org to Produce Docbook Files
Jak medytować, czyli wstęp do tego co już znasz
OpenOffice org Match

więcej podobnych podstron