Jak dodać nod typu "any" w TreeControl

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
JackK
Posty: 23
Rejestracja: czw kwie 04, 2013 11:41 am

Jak dodać nod typu "any" w TreeControl

Post autor: JackK »

Hej.
W dokumentacji http://www.openoffice.org/api/docs/comm ... Model.html pisze, iż pierwszy parametr metody createNode o nazwie DisplayValue może być dowolnego typu, który jednak da się skonwertować na string. Gdziekolwiek znalazłem przykłady wykorzystania createNode, wszędzie jednak pierwszym parametrem był string. Nie wierzę, że TreeControl jest tak ograniczony, iż w nodach nie da się zapamiętać żadnych informacji.
Czy mógłby mi ktoś podać przykład, jak można w DisplayValue wstawić 3-elementową tablicę stringów?
Potrzebuję to do tego, iż w każdym nodzie w drzewku, chciałbym mieć jeszcze jakieś dodatkowe informacje możliwe do odczytania, a nie tylko wyświetlaną nazwę w nodzie.
Chodzi mi o przykład w BASIC-u.

Z góry dziękuję.
OpenOffice 3 na Windows 7
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: Jak dodać nod typu "any" w TreeControl

Post autor: mg2 »

Do drzewa trzeba dodać etykietę a dane przechowywać oddzielnie. Deklarujemy własny typ danych.

Kod: Zaznacz cały

type t
   label as string
   i as integer
   s as string
   a(2) as string
end type
Deklarujemy obiekty tego typu

Kod: Zaznacz cały

o1 as new t
lub

Kod: Zaznacz cały

o1 as object
o1 = createObject("t")
Wypełniamy pola.

Kod: Zaznacz cały

o1.label = "o1"
o1.s = "s"
o1.a(0) = "a0"
o1.a(1) = "a1"
Wstawiamy etykietę obiektu (o1.lablel) do drzewa i równolegle wstawiamy obiekt do kolekcji.

Kod: Zaznacz cały

c as new collection
c.add(o1, "o1")
W przypadku odczytu bierzemy etykietę z drzewa i przy jej użyciu bierzemy obiekt z kolekcji.

Kod: Zaznacz cały

otmp = c.item("o1")
msgbox(otmp.label)
msgbox(otmp.a(0))

Kod: Zaznacz cały

type t
   label as string
   i as integer
   s as string
   a(2) as string
end type

sub main
   dim o1 as new t
   'dim o1 as object
   'o1 = createObject("t")

   o1.label = "o1"
   o1.s = "s"
   o1.a(0) = "a0"
   o1.a(1) = "a1"

   dim c as new collection
   c.add(o1, "o1")

   otmp = c.item("o1")
   msgbox(otmp.label)
   msgbox(otmp.a(0))
end sub
OOo3.1.1 na Ubuntu 9.04
JackK
Posty: 23
Rejestracja: czw kwie 04, 2013 11:41 am

Re: Jak dodać nod typu "any" w TreeControl

Post autor: JackK »

Dzięki, mg2
OpenOffice 3 na Windows 7
ODPOWIEDZ