Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


Hei Hans-Werner,

sicher? hab dein Makro grad mal getestet...  und so sieht es bei mir auch:

http://prntscr.com/kgaoqb

Eigentlich wie Du es wolltest, oder?

VG

Thomas

Ach ja: Win 10, LO 5.3.1  64bit




Am 08.08.2018 um 19:14 schrieb OoOHWHOoO:
Hallo Thomas,

danke für Deinen Hinweis, hat aber leider nicht funktioniert.
Habe vor dem "setVisible" die Zeile »oTB.getCellByPosition(0,0).String = "Cursor"« eingefügt. In "A1" steht auch "Cursor", aber der beschrieben Effekt ist noch immer vorhanden.

Gruß
Hans-Werner


Sub SetCursor_loadComponent

Dim oD as Object
Dim oTB as Object
Dim aB() as String
Dim X as Integer

aB = Array("A","B","C","D","E")

Const P1 = "private:factory/scalc"
Const P2 = "_blank"
Const P3 = 0
Dim aPV(0) as New com.sun.star.beans.PropertyValue
aPV(0).name = "Hidden"
aPV(0).value = True

oD = StarDesktop.loadComponentFromURL(P1,P2,P3,aPV())
oTB = oD.sheets(0)
For X=0 To UBound(aB) Step 1
oTB.getCellByPosition(X,0).String = aB(X)
Next X
oTB.getCellByPosition(0,0).String = "Cursor"
oD.getCurrentController().getFrame().getContainerWindow().setVisible(True)
oD.CurrentController.Select(oTB.getCellByPosition(4,0))

End Sub


------ Originalnachricht ------
Von: "Thomas Krumbein" <Thomas.Krumbein@documentfoundation.org>
An: users@de.libreoffice.org
Gesendet: 08.08.2018 18:54:37
Betreff: Re: [de-users] BASIC-Makro @ CALC - Cursor-Positionierung

Hallo Hans-Werner,

ohne es zu testen:

ein "hidden" geladenes Dokument hat zunächst keinen eigenen View-Controller. Der wird erst erzeugt, wenn es "visible" gestellt wird. Dann wird die aktive Zelle als Startzelle genommen. Die ist bei Dir E1 - also ist das die linke obere Ecke.  Aktiv deswegen, weil Du dort die letzte Eingabe gemacht hast.

Das "Select" anschliessend hat damit gar nicht zu tun.

Wähle lieber vorher die Zelle A1 - setzte dann das Sheet visible uns selektiere anschliessend die gewünschte Zelle.

Dann sollte es passen.

VG

Thomas



Am 08.08.2018 um 18:38 schrieb OoOHWHOoO:
Hallo,

folgendes kleines Problem im Kontext von BASIC-Makro @ CALC:

[1] Ein Standard ODS-Dokument wird geladen.
[2] Im "Hidden"-Modus wird ein Tabellenblatt beschrieben.
[3] Das Tabellenblatt wird sichtbar gemacht.
[4] Der Cursor wird auf die letzte Spalte der Zeile positioniert.
[5] Die befüllten Spalten belegen gerade mal die halbe Seitenbreite der CALC-Tabelle-Ansicht bei 100%-Zoom.

Funktioniert alles bestens, bis auf einen kleinen Schönheitsfehler:

Durch das Positionieren des Cursors wird die horizontale ScrollBar aktiviert, so dass alle Spalten nach links verschoben werden und nur die Zelle mit Eintrag "E" sichtbar ist. Gibt es eine Möglichkeit, dieses (automatische) Verschieben der Zellen nach links zu unterbinden ? Habe ich gegebenenfalls zur Cursor-Positionierung ein falsches Sprachkonstrukt genutzt ?

Arbeitet man nicht im "Hidden"-Modus, sondern im "Visible"-Modus mit "ThisComponent, tritt dieser Effekt nicht auf.

Anbei zwei Makros

+ Sub SetCursor_loadComponent =>"Hidden"-Modus-Beispiel
+ Sub SetCursor_ThisComponent => "Visible"-Modus-Beispiel

zum Nachvollziehen.

Hat jemand eine Idee, wo das Problem liegen und wie man es lösen könnte ?

Danke schon mal im Voraus,
Gruß
Hans-Werner ;-))


Sub SetCursor_loadComponent

Dim oD as Object
Dim oTB  as Object
Dim aB() as String
Dim X  as Integer

aB = Array("A","B","C","D","E")

Const P1 = "private:factory/scalc"
Const P2 = "_blank"
Const P3 = 0
Dim aPV(0) as New com.sun.star.beans.PropertyValue
aPV(0).name  = "Hidden"
aPV(0).value = True

oD = StarDesktop.loadComponentFromURL(P1,P2,P3,aPV())
oTB = oD.sheets(0)
For X=0 To UBound(aB) Step 1
oTB.getCellByPosition(X,0).String = aB(X)
Next X
oD.getCurrentController().getFrame().getContainerWindow().setVisible(True)
oD.CurrentController.Select(oTB.getCellByPosition(4,0))

End Sub


Sub SetCursor_ThisComponent

Dim oD as Object
Dim oTB  as Object
Dim aB() as String
Dim X  as Integer

aB = Array("A","B","C","D","E")

oD = ThisComponent
oTB = oD.sheets(0)
For X=0 To UBound(aB) Step 1
oTB.getCellByPosition(X,0).String = aB(X)
Next X
oD.CurrentController.Select(oTB.getCellByPosition(4,0))

End Sub






-- Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy




--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.