BasicMakro - Langzeitprojekt CORONA NEWS - BUG-Report

Guten Morgen Thomas,

ich habe mal eben (mit meinen Möglichkeiten - ohne "XRAY") einen kleinen Test gemacht, indem ich "oCALC.Store()" kommentierte.

Das Ergebnis: Im "hidden"-Mode bleibt die Zeilen-Fixierung erhalten. De-kommentiere ich hingegen "oCALC.Store()", verschwindet die Zeilen-Fixierung.

Das ist aber aber nicht das, was Du beschrieben hast: "[...] auch nach dem Aufruf der Methode Store() ist die Fixierung noch da - erst beim Aufruf der close-Methode verschwindet sie offensichtlich [...]".

Ich habe dann mal noch die "CALC.ods" entpackt und die "settings.xml" angeschaut.

Wenn man das Makro im "hidden"-Mode mit "oCALC.Store()" KOMMENTIERT startet, dann ist dieser Bereich enthalten:

config:config-item-map-indexed config:name="Views">
<config:config-item-map-entry>
<config:config-item config:name="ViewId" config:type="string">view1</config:config-item>
<config:config-item-map-named config:name="Tables">
<config:config-item-map-entry config:name="Tabelle1">
<config:config-item config:name="CursorPositionX" config:type="int">0</config:config-item>
<config:config-item config:name="CursorPositionY" config:type="int">1</config:config-item>
<config:config-item config:name="HorizontalSplitMode" config:type="short">0</config:config-item>
<config:config-item config:name="VerticalSplitMode" config:type="short">2</config:config-item>
<config:config-item config:name="HorizontalSplitPosition" config:type="int">0</config:config-item>
<config:config-item config:name="VerticalSplitPosition" config:type="int">1</config:config-item>
<config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item>
<config:config-item config:name="PositionLeft" config:type="int">0</config:config-item>
<config:config-item config:name="PositionRight" config:type="int">0</config:config-item>
<config:config-item config:name="PositionTop" config:type="int">0</config:config-item>
<config:config-item config:name="PositionBottom" config:type="int">1</config:config-item>
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
<config:config-item config:name="ZoomValue" config:type="int">100</config:config-item>
<config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
<config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
<config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
</config:config-item-map-entry>
</config:config-item-map-named>
<config:config-item config:name="ActiveTable" config:type="string">Tabelle1</config:config-item>
<config:config-item config:name="HorizontalScrollbarWidth" config:type="int">1234</config:config-item>
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
<config:config-item config:name="ZoomValue" config:type="int">100</config:config-item>
<config:config-item config:name="PageViewZoomValue" config:type="int">60</config:config-item>
<config:config-item config:name="ShowPageBreakPreview" config:type="boolean">false</config:config-item>
<config:config-item config:name="ShowZeroValues" config:type="boolean">true</config:config-item>
<config:config-item config:name="ShowNotes" config:type="boolean">true</config:config-item>
<config:config-item config:name="ShowGrid" config:type="boolean">true</config:config-item>
<config:config-item config:name="GridColor" config:type="int">12632256</config:config-item>
<config:config-item config:name="ShowPageBreaks" config:type="boolean">true</config:config-item>
<config:config-item config:name="HasColumnRowHeaders" config:type="boolean">true</config:config-item>
<config:config-item config:name="HasSheetTabs" config:type="boolean">true</config:config-item>
<config:config-item config:name="IsOutlineSymbolsSet" config:type="boolean">true</config:config-item>
<config:config-item config:name="IsValueHighlightingEnabled" config:type="boolean">false</config:config-item>
<config:config-item config:name="IsSnapToRaster" config:type="boolean">false</config:config-item>
<config:config-item config:name="RasterIsVisible" config:type="boolean">false</config:config-item>
<config:config-item config:name="RasterResolutionX" config:type="int">2290</config:config-item>
<config:config-item config:name="RasterResolutionY" config:type="int">450</config:config-item>
<config:config-item config:name="RasterSubdivisionX" config:type="int">0</config:config-item>
<config:config-item config:name="RasterSubdivisionY" config:type="int">0</config:config-item>
<config:config-item config:name="IsRasterAxisSynchronized" config:type="boolean">false</config:config-item>
<config:config-item config:name="AnchoredTextOverflowLegacy" config:type="boolean">false</config:config-item>
</config:config-item-map-entry>
</config:config-item-map-indexed>

Wenn man das Makro im "hidden"-Mode mit "oCALC.Store()" NICHT KOMMENTIERT startet, dann fehlt obiger Bereich.

Das deckt sich auch mit Deiner Annahme: "[...] Das Fixieren der Zeilen/Spalten ist eine Eigenschaft des CurrentControllers - also der Viewansicht. Wo genau das abgespeichert ist, weiss ich nicht genau. Beim Öffnen "hidden" wird zwar das Objekt erzeugt, eine Viewansicht gibt es aber nicht wirklich. Ich denke, hier musst Du im Bug-Bericht ansetzen: Offensichtlich werden die Informationen zum View-Controller beim Speichern eines "hidden" geöffneten Dokumentes überschrieben durch Standardvorgaben?? Dadurch verschwinden dann natürlich auch die Infos zu fixierten Spalten/Zeilen.... [...]"

Allerdings scheint entgegen Deiner "XRAY"-Beobachtung nicht das "oCALC.Close()", sondern das "oCALC.Store()" der "Übeltäter" zu sein.

Zusammengefasst würde ich das Problem jetzt so formulieren:

Startet man das Makro

Sub TestFixedRow
Dim CALC As String : CALC = "E:\TMP\CALC.ods" ' May be to be modified !
Dim oCALC As Object
Dim aCALCpropv(0) As New com.sun.star.beans.PropertyValue
aCALCpropv(0).Name = "Hidden"
aCALCpropv(0).Value = True
oCALC = StarDesktop.loadComponentFromURL(ConvertToUrl(CALC),"_blank",0,aCALCpropv())
Wait(1000)
oCALC.Store()
oCALC.Close(True)
End Sub

im "hidden"-Mode, so löscht "oCALC.Store()" (die Informationen der VIEW-Ansicht und damit eben auch) die vorhandene "Zeilen-Fixierung".

Ehe ich den BUG-Report entsprechend ergänze, hätte ich schon gern eine kritische Beurteilung meiner "Erkenntnisse". Deshalb die Bitte an Dich und/oder andere: Was meinst Du/ihr dazu ?

Viele Grüße
Hans-Werner :-))

Morgen Hans Werner,

na ja, da könntest Du schon recht haben:) Wäre von der Logik her sogar wahrscheinlich.

In meinem Makro habe ich mit xray ja das Objekt im Speicher untersucht - und da ist auch nach der store() Methode die Fixierung noch vorhanden. Was ich nicht gemacht habe (Du aber:)) ist das tatsächlich gespeicherte Dokument zu untersuchen. Das hast Du aber getan.

Entscheidend ist ja diese Zeile in der Datei:

<config:config-item config:name="ActiveSplitRange" config:type="short">2</config:config-item>

Und wenn das nach dem Speichern nicht mehr in der Datei steht - dann ist die Methode fehlerhaft :slight_smile:

Insofern: Sehr gut.  Gute Analyse und gute Schlussfolgerung.

Ich könnte den Bug entsprechend bestätigen.

Viele Grüße

Thomas

Hallo Thomas,

danke für die Rückmeldung. Ja klar, die "ActiveSplitRange"-Zeile ist mir schon "ins Auge gefallen", habe aber wegen der Vollständigkeit den gesamten "verschwundenen Abschnitt" in meine vorherige Mail kopiert.

Wenn Du den BUG ( https://bugs.documentfoundation.org/show_bug.cgi?id=139539 ) entsprechend bestätigen könntest, wäre wunderbar, denn wenn ich was ergänze würde das kein CONFIRMED bewirken.

Danke Dir für Deine Tests und Hinweise,
haben mir gedanklich "auf die Sprünge geholfen",
viele Grüße
Hans-Werner :-))

------ Originalnachricht ------

Hey Hans Werner,

ich würde den Bug bestätigen, aber Du solltest den Bug-Report entweder überarbeiten oder neu gestalten.

Gibt keinen Bug in "LoadComponentFromURL()", sondern in der Speichermethode store(). Die Erkenntnisse haben wir doch gewonnen:)

Die Infos aus dem mailverlauf hier solltest Du schon mit einarbeiten - das kann dann ein Entwickler leichter nachvollziehen und schneller die zu fixende Stelle finden.

Viele Grüße

Thomas

Hallo Thomas,

ich habe jetzt mal geschaut, ob man die BUG-Überschrift ändern kann - ja, das geht. Wusste ich noch nicht :open_mouth:

Ich werde die BUG-Überschrift ändern und einen zusätzlichen COMMENT hinzufügen gemäß Deinem Hinweis (Mail-Verlauf). Das Ganze in Englisch dauert immer ein wenig länger. Werde ich im Laufe des Tages machen und dann hier mitteilen ...

Viele Grüße
Hans-Werner :-))

------ Originalnachricht ------