Egyéni tulajdonságok importálása

Szövegszerkesztő

Egyéni tulajdonságok importálása

HozzászólásSzerző: viri1976 » 2012. január 16., hétfő 12:22

Sziasztok!

Azt szeretném kérdezni, hogy próbálkozott e valaki már küldő forrásból (egyelőre bármilyen külső forrás érdekel) behivatkozni valamilyen importálási eljárással adatokat az Egyéni tulajdonságok közé.

Az lenne a célom, hogy létrehozok egy külsős adatforrásban egy "egyéni tulajdonságok listát" és ezt hivatkoznám be a writer-be valahogy a /Tulajdonságok/Egyéni Tulajdonságok ablakba.

esetleg van valakinek erre az eljárásra 5lete?

köszi!

viri1976
LibreOffice 3.4.4 a Windows 7 -en
viri1976
 
Hozzászólások: 2
Csatlakozott: 2012. január 16., hétfő 11:25

Re: Egyéni tulajdonságok importálása

HozzászólásSzerző: Zizi64 » 2012. január 16., hétfő 15:52

De hát erre (is) valók a sablonok. Beírod a mintafájlba a tulajdonságokat, és sablonként mented el.
Amikor előveszed az elmentett tulajdonságok ott lesznek a fájlban.



Ha dinamikusan kell váltogatni egy adott fájlban a Tulajdonság-adatokat, akkor szóba jöhet a makrós megoldás. Én csak Calcban csináltam még ilyet, ott lehetséges a Tulajdonságok változtatása "kívülről", makróval. És nem is az "Egyéni" tulajdonságokat változtatom, hanem a "Leírás" fülön lévőket.

Az Open/LibreOffice API felületét kell megismerned, megtanulnod; ehhez a feladathoz konkrétabban itt találsz információt:
http://www.openoffice.org/api/docs/comm ... rties.html

Ezzel a makróval a meglévő egyéni tulajdonságokat tudod kilistázni:
Kód: Egész kijelölése   KinyitásÖsszecsukás
Sub List_user_props
Dim udefProps As Object, allUProps As Object, oneUProp As Object
Dim UPlist As String

udefProps = ThisComponent.DocumentProperties.UserDefinedProperties
allUProps = udefProps.PropertyValues
UPlist = ""
For Each oneUProp in allUProps
  if IsUnoStruct(oneUProp.Value)  then
    With oneUProp.Value
      UPlist = UPlist & oneUProp.Name & " = " & _
      DateSerial(.Year, .Month, .Day) & chr(13)
    End With
  else
    UPlist = UPlist & oneUProp.Name & " = " & oneUProp.Value & chr(13)
  end if
Next
MsgBox(UPlist, 0, "User Defined Properties")
End Sub



Ezzel meg törölni:
Kód: Egész kijelölése   KinyitásÖsszecsukás
Sub Delete_user_props

' Use an intermediate variable, its more clear !
Dim userDefProps As Object
userDefProps = ThisComponent.DocumentProperties.UserDefinedProperties

' remove all properties
Dim propsArray As Variant, userProp As Object

propsArray = userDefProps.PropertyValues
for each userProp in propsArray
  print "deleting : " & userProp.Name
  userDefProps.removeProperty(userProp.Name)
next
end sub



Ez meg beír két tulajdonság értéket (csak a legközelebbi megnyitásnál fognak vizuálisan is megjelenni, ha a menüből nézed meg az eredményt):
Kód: Egész kijelölése   KinyitásÖsszecsukás
Sub Add_Custom_Property
Dim Doc As Object
   Doc = ThisComponent
   Doc.DocumentProperties.UserDefinedProperties.addProperty("Kétállapotú tulajdonság",0,True)
   Doc.DocumentProperties.UserDefinedProperties.addProperty("Szöveges tulajdonság",0,"Ez egy szöveg")
end sub   


Ezeket találtam hirtelen net-szerte, keress te is, hátha találsz további példákat...
Sok sikert!
Kovács Tibor (WinXPprofSP3: LO3.6.4, 4.0.6, 4.1.5, 4.2.2;.Portable.; AOO4.0.1)
Ha megoldódott a probléma, jelöld a témaindító hozzászólásod címének elején: [Megoldva].
Zizi64
Globális moderátorok
 
Hozzászólások: 1926
Csatlakozott: 2008. november 12., szerda 21:22
Tartózkodási hely: Budapest

Re: Egyéni tulajdonságok importálása

HozzászólásSzerző: viri1976 » 2012. január 17., kedd 10:40

nagyon köszönöm!

megnézem.

üdv.

viri1976
LibreOffice 3.4.4 a Windows 7 -en
viri1976
 
Hozzászólások: 2
Csatlakozott: 2012. január 16., hétfő 11:25

Re: Egyéni tulajdonságok importálása

HozzászólásSzerző: editor » 2012. március 8., csütörtök 17:26

viewtopic.php?f=6&t=1165
A Copy-paste beleszakad című topik ebbe az irányba ment el, javaslom, hogy itt folytassuk. Zizi64 abban a topikban adott egy megoldást arra, hogy miként lehet egyik dokumentum tulajdonságmezőit egy makró segítségével "felszedni" és egy másik dokumentumra átpakolni. Ez már egy módja annak, hogy valamely dokumentumba ne begépeléssel, hanem gépi másolással, egyfajta importtal kerüljenek be az értékek.

A hivatkozott topikban kitettem két példafile-t, az EDITOR_P001a és EDITOR_P001b néven. Ezekben a dokumentumokban van harmincnégy egyedi tulajdonságmező, és van egy táblázat is, ami kilistázza a dokumentummezőket, megmutatja azok pillanatnyi értékét.

Nos, rajtam például sokat segítene, és valószínűleg viri11976-nak is megoldás lenne ennek a táblázatnak a fordítottja. Vagyis ha tudnánk egy olyan makrót írni, ami egy táblázatból, egy olyan táblázatból, ami az egyéni tulajdonságok kívánt értékeit tartalmazza literálisan (begépelve) átpakolgatná az értékeket az egyéni tulajdonság mezőkbe.
Libre Office Verzió: 4.1.0.4. Windows 8
editor
Önkéntesek
 
Hozzászólások: 238
Csatlakozott: 2011. augusztus 3., szerda 8:36


Vissza: Writer

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 3 vendég