Bug in setString, getString-Methode von Textfeldern?

Hallo zusammen,

ich glaube ich bin gerade über einen Bug in der setString und
getString-Methode von Textfeldern für Formulare gestolpert.

Zum erproben habe ich mir folgendes Testmakro geschrieben:

Sub testSetGetString
    Dim oForm As Object
    Dim oSubKatEin As Object
    Dim oConnection As Object
    Dim otxtField1 As Object
    Dim otxtField2 As Object
    Dim stInput As String
    Dim stOutput As string

oForm = thisComponent.drawpage.forms.getByName("frm_Kategorie")
    oSubKatEin = oForm.getByName("frm_SubKat2_Eingabe")
    oConnection = oForm.activeConnection()
    otxtField1 = oSubKatEin.getByName("Textfeld 1")
    stInput = otxtField1.getString

otxtField2 = oSubKatEin.getByName("Textfeld 2")
    otxtField2.setString(stInput)
End Sub

Passieren sollte (falls ich keinen Knoten im Kopf hab): Der Inhalt des
ersten Textfeldes wird bei Ausführung des Makros in das zweite Textfeld
geschrieben. Dies klappte in LibreOffice 6.4.7 nur einmal kurz in einem
anderen Makro und dann nicht mehr. In 7.0.3 klappte es einmal kurz,
nachdem ich das Programm zu ersten Mal gestartet habe, wobei nur ein
Teil meiner Eingabe übernommen wurde.

Kann den Fehler einer von euch bestätigen? Und wenn ja, wie mach man
dann die Bug-Reports?

Viele Grüße

Stefan

Hallo Stefan,

Sub testSetGetString

oForm = thisComponent.drawpage.forms.getByName("frm_Kategorie")
    oSubKatEin = oForm.getByName("frm_SubKat2_Eingabe")
    oConnection = oForm.activeConnection()
    otxtField1 = oSubKatEin.getByName("Textfeld 1")
    stInput = otxtField1.getString

otxtField2 = oSubKatEin.getByName("Textfeld 2")
    otxtField2.setString(stInput)
End Sub

Ich nehme das nicht zum ersten Mal wahr: Die Makros haben irgendwo
Probleme mit dem gleichzeitigen Ablauf. Versuche einmal, zwischendurch
z.B. mit einer msgbox stInput abzugreifen.

Ich habe das gerade getestet und anfangs in XRAY mit der Methode Erfolg
gehabt, konnte aber mit msgbox stInput nichts auslesen.

Versuche dann einmal
otxtField1 = oSubKatEin.getByName("Textfeld 1").boundField

Versuche alternativ auch mit
wait 100
oder ähnlichen Werten - 1000 bedeutet 1 Sekunde ...

Gruß

Robert

Hallo Stefan, Robert,

ich habe das beschriebene Verrhalten an einem eigenen Beispiel nachvollziehen können. Verschiedene Versuche, z. B. Verdoppelung der Zuweisung auf das Feld oder Klonen des Feldes, führten teilweise dazu, dass es dann funktionierte, nach erneutem Laden des Dokuments war der Effekt dann aber wieder verschwunden. Mit wait hatte ich gar keinen Erfolg.
Was dann aber offenbar dauerhaft geholfen hat, war, den Weg über die Steuerelemente zu nehmen statt wie bisher über die Modelle, also eine Eingabe ins Formular zu simulieren. Hier ist mein Code, die Feldnamen sind zwar anders, aber das sollte verständlich sein:

controller = Thiscomponent.currentController
form = thisComponent.drawpage.forms.getByName("MainForm")
field1 = form.getByName("txtEingabe")
field1C = controller.getControl(field1)
field2 = form.getByName("txtBezeichnung")
field2C = controller.getControl(field2)
field2c.Text = field1c.Text

Eine Erklärung kann ich allerdings nicht anbieten, das Verhalten ist für mich auch rätselhaft.

Grüße
Gerhard

Jetzt nochmal an die Liste, hab den Extrabutton übersehen.

Danke für die Hilfe, der Tipp von Gerhard hat geklappt.