🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Konfigurationseinstellung speichern

Alles zur Programmierung im LibreOffice.
Benutzeravatar
Basilisk
Beiträge: 77
Registriert: Do 26. Jun 2014, 14:06

Re: Konfigurationseinstellung speichern

Beitrag von Basilisk » Sa 29. Jul 2023, 22:22

musikai hat geschrieben:
Sa 29. Jul 2023, 11:29
:shock: :
Möglicherweise habe ich wieder Tomaten auf den Augen, aber es funktioniert jetzt alles, solange ich Strings zum Speichern benutze. Der Versuch mit einem Long scheitert aber.

Code: Alles auswählen

Option Explicit

Sub Main
Dim sName As String, vValue As Variant : sName = "iMillisecWait" : vValue = CLng(400)
MsgBox putDocUsrProp(sName, vValue)
End Sub

Function putDocUsrProp(sPropName As String, vPropValue As Variant, Optional vDoc As Variant) As Boolean
'create the userdefined property sPropName if it does not exist and set it to vPropValue
'On Error GoTo Err_putDocUsrProp:
Dim oDoc As Variant
If IsMissing(vDoc) Then
    oDoc = ThisComponent
Else
    oDoc = vDoc   
End If
Dim oUDP As Variant
oUDP = oDoc.getDocumentProperties().UserDefinedProperties
If NOT oUDP.getPropertySetInfo().hasPropertyByName(sPropName) Then
   oUDP.addProperty(sPropName, _
       com.sun.star.beans.PropertyAttribute.MAYBEVOID + _
       com.sun.star.beans.PropertyAttribute.REMOVEABLE + _
       com.sun.star.beans.PropertyAttribute.MAYBEDEFAULT,"")
End If
oUDP.setPropertyValue(sPropName, vPropValue)
If vPropValue =  oUDP.getPropertyValue(sPropName) Then putDocUsrProp = True
Exit_putDocUsrProp:
Exit Function

Err_putDocUsrProp:
Print StdErrMsg & CStr(Err) & " in Line " & CStr(Erl) & Chr$(10) & Error$, 16, "miscutilsLib.docpropsMod.putDocUsrProp"
Resume Exit_putDocUsrProp        
End Function
[attachment=0]the-given-value-can-not-be-converted-to-the-required-property-type.png[/attachment]
Dateianhänge
the-given-value-can-not-be-converted-to-the-required-property-type.png
the-given-value-can-not-be-converted-to-the-required-property-type.png (18.99 KiB) 4932 mal betrachtet

musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

Re: [gelöst] Konfigurationseinstellung speichern

Beitrag von musikai » So 30. Jul 2023, 00:34

Mit der Funktion wird eine String property erzeugt. Müssen mal nachschauen, wie man eine für Zahlen erzeugt.
Unbenannt.PNG
Unbenannt.PNG (17.46 KiB) 4928 mal betrachtet
ok, die Art der Eigenschaft wird durch den Typ des Wertes bestimmt.
Für bool reicht es, den Wert auf True oder False zu setzen.

Code: Alles auswählen

sub createprop
Dim oUDP

defaultvalue = True

 oUDP = ThisComponent.getDocumentProperties().UserDefinedProperties
 If NOT oUDP.getPropertySetInfo().hasPropertyByName("Beispiel") Then
 oUDP.addProperty("Beispiel", _
 com.sun.star.beans.PropertyAttribute.MAYBEVOID + _
 com.sun.star.beans.PropertyAttribute.REMOVEABLE + _
 com.sun.star.beans.PropertyAttribute.MAYBEDEFAULT, defaultvalue)
 End If
end sub
Für Zahlen muss der Uno Typ erzeugt werden:

Code: Alles auswählen

sub createprop
Dim oUDP

defaultvalue = CreateUnoValue("double", 23)

 oUDP = ThisComponent.getDocumentProperties().UserDefinedProperties
 If NOT oUDP.getPropertySetInfo().hasPropertyByName("Beispiel2") Then
 oUDP.addProperty("Beispiel2", _
 com.sun.star.beans.PropertyAttribute.MAYBEVOID + _
 com.sun.star.beans.PropertyAttribute.REMOVEABLE + _
 com.sun.star.beans.PropertyAttribute.MAYBEDEFAULT, defaultvalue)
 End If
end sub
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

Benutzeravatar
Basilisk
Beiträge: 77
Registriert: Do 26. Jun 2014, 14:06

Re: [gelöst] Konfigurationseinstellung speichern

Beitrag von Basilisk » So 30. Jul 2023, 17:49

musikai hat geschrieben:
So 30. Jul 2023, 00:34
Für Zahlen muss der Uno Typ erzeugt werden:
...

Code: Alles auswählen

defaultvalue = CreateUnoValue("double", 23)
Vielen Dank nochmal.
Diese 23 sind ja jetzt nicht der VarType von Double.
CreateUnoValue Function habe ich zwar in der Onlinehilfe gefunden, aber keine Erklärung oder Referenz dieser magischen Zahl.

musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

Re: [gelöst] Konfigurationseinstellung speichern

Beitrag von musikai » So 30. Jul 2023, 20:21

Die Zahl ist nur der Wert. Setze Deinen beliebigen.

Kannst auch

Code: Alles auswählen

defaultvalue = CreateUnoValue("long", 0)
setzen
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

Benutzeravatar
Basilisk
Beiträge: 77
Registriert: Do 26. Jun 2014, 14:06

Re: [gelöst] Konfigurationseinstellung speichern

Beitrag von Basilisk » Do 3. Aug 2023, 15:56

musikai hat geschrieben:
So 30. Jul 2023, 20:21
Die Zahl ist nur der Wert. Setze Deinen beliebigen.
Ach so. Man kann den Wert gleich beim Erzeugen auch setzen.
Danke.Ich hab das jetzt mal so geschrieben

Code: Alles auswählen

vPropValue = CDbl(vPropValue) : defaultvalue = CreateUnoValue("double", vPropValue)

...

If oUDP.getPropertySetInfo().hasPropertyByName(sPropName) Then
    oUDP.setPropertyValue(sPropName, vPropValue)
Else
    oUDP.addProperty(sPropName, _
       com.sun.star.beans.PropertyAttribute.MAYBEVOID + _
       com.sun.star.beans.PropertyAttribute.REMOVEABLE + _
       com.sun.star.beans.PropertyAttribute.MAYBEDEFAULT, defaultvalue)
End If
musikai hat geschrieben:
So 30. Jul 2023, 20:21
Kannst auch

Code: Alles auswählen

defaultvalue = CreateUnoValue("long", 0)
setzen
Interessant. Der Dialog unter Datei -> Eigenschaften unterscheidet ja nicht nach dem Typ, Da gibt es nur Zahl.

Eigentlich müsste man jetzt ja vor dem Setzen des Werts auch noch prüfen, ob die Eigenschaft diesen aufnehmen kann.

Der Dialog unter Datei -> Eigenschaften zeigt bei mir ein ganz lustiges Verhalten. Man kann da beliebig viele Eigenschaften mit demselben Namen hinzufügen. Wenn man den Dialog dann mit OK schließt und wieder öffnet, hat LO aber nur die erste übernommen.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: [gelöst] Konfigurationseinstellung speichern

Beitrag von karolus » Do 3. Aug 2023, 18:42

Basilisk hat geschrieben:
Do 3. Aug 2023, 15:56
Interessant. Der Dialog unter Datei -> Eigenschaften unterscheidet ja nicht nach dem Typ, Da gibt es nur Zahl.
NEIN das tut er nicht,
Benutzerdefinierte_eigenschaft.png
Benutzerdefinierte_eigenschaft.png (18.5 KiB) 4839 mal betrachtet
Wie du siehst gibts ausser »Text« und »Zahl« auch noch schlicht »boolean« ( ja oder nein ), auch definierte Structs: Datum | DatumZeit | Dauer.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Benutzeravatar
Basilisk
Beiträge: 77
Registriert: Do 26. Jun 2014, 14:06

Re: [gelöst] Konfigurationseinstellung speichern

Beitrag von Basilisk » Do 3. Aug 2023, 21:44

karolus hat geschrieben:
Do 3. Aug 2023, 18:42
NEIN das tut er nicht,
Ich bitte um Verzeihung, das war falsch ausgedrückt. Was ich meinte war, dass nicht zwischen unterschiedlichen Typen von Zahlen unterschieden wird, insbesondere nicht zwischen Double und Long.


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten