🙏 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. 🤗

Calc Ansich per Makro fixieren

Alles zur Programmierung im LibreOffice.
scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Calc Ansich per Makro fixieren

Beitrag von scientific » Mi 18. Mai 2016, 22:24

Hi Leute!

Ich fand div. Beispiele, wo ich in Calc mittels

Code: Alles auswählen

oDoc.getCurrentController().FreezeAtPosition(2,2)
die Ansicht einer Tabelle fixieren kann.

Das funktioniert auch wunderbar, solange das Dokument nicht versteckt ist.
Ich erstelle relativ umfangreiche Tabellen mit versteckten Dokumenten und setze sie auf Sichtbar, nachdem die Tabelle fertig ist. Das spart Zeit beim erstellen :)

Code: Alles auswählen

oDoc.getCurrentController().getFrame().getContainerWindow().setVisible(true)
Gibt es eine Möglichkeit diesen FreezeAtPosition auch beim versteckten Dokument einzustellen? Das wäre nämlich bei meinem Ablauf SEHR von Vorteil.

lg scientific

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Calc Ansich per Makro fixieren

Beitrag von balu » Mi 18. Mai 2016, 23:29

Hallo scientific,

vor dem Problem stand ich auch mal. Schau mal ins Nachbarforum 'de.openoffice.info': Hidden-Datei kein Fenster fixierbar?

Ich hatte damals mein Problem auf eine andere Art und Weise gelöst, genaueres steht in dem verlinkten Thread.



Gruß
balu

scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Re: Calc Ansich per Makro fixieren

Beitrag von scientific » Do 19. Mai 2016, 00:20

Vielen Dank für deine Antwort und den Lösungsvorschlag.

Das ist aber bei mir so nicht umsetzbar. Ich habe zu viele Unterschiedliche Wege vor der Erstellung bis zum Speichern...
Vor allem speichere ich in der Regel vor dem sichtbarmachen der Datei, damit diese gleich mit dem korrekten Dateinamen sichtbar wird.

Schätze ich muss da größer umbauen.

Wie könnte man die settings.xml bearbeiten?

lg scientific

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Calc Ansich per Makro fixieren

Beitrag von balu » Fr 20. Mai 2016, 23:24

scientific hat geschrieben: Wie könnte man die settings.xml bearbeiten?
Damit habe ich mich noch nicht befasst. Meine kenntnisse reichen dafür nicht aus. Hier gibt es aber bestimmt jemand der was dazu sagen kann, müsstest halt noch etwas warten bis das sich jemand meldet.

Sag mir ob ich falsch liege.
Du erstellst aus dem nichts deine Tabellen. Also quasi so:

Code: Alles auswählen

Dim mArgs()
oDocument = StarDesktop.loadComponentFromURL ("private:factory/scalc","_blank", 0, mArgs())
Dann geht natürlich meine Methode aus dem anderen Thread nicht nicht so einfach. Wenn Du aber eine leere Datei erstellst, in der das Makro aus dem anderen Thread drin gespeichert wird, dann könntest Du anstatt auf eine leere auf diese Datei zugreifen wo schon das Makro drin ist. Dann erstellst Du ganz normal die Tabellen, speicherst diese versteckte Datei, und lädst sie anschließend ganz normal aber nicht mehr versteckt im Hintergrund sonden im Vordergrund.

Und für den unwahscheinlichen Fall das die FreezeAtPosition nicht bei jeder Datei die gleiche Position ist, so liese sich da auch was machen. Das könnte ich dir dann erklären. Jedoch müsste ich dazu wissen ob Du meinen eben genanten Vorschlag in die Tat umsetzen kannst. Vorher möchte ich keine weiteren Angaben machen, da die Methode dafür schon etwas umfangreicher als nur 2 oder 3 Code-Zeilen sind.


Gruß
balu

scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Re: Calc Ansich per Makro fixieren

Beitrag von scientific » Di 15. Nov 2016, 12:51

Richtig. Ich erstelle die Datei aus dem "Nichts" und befülle sie dann mit Daten.

Ich hab das mittlerweile so gelöst, dass ich die Datei versteckt erstelle, dann in den Vordergrund hole und dann die Ansicht fixiere - abhängig vom Inhalt - und dann speichere.
Das ist zwar nicht ganz so sauber, wie ich es wollte, nämlich die bereits gespeicherte und in der Ansicht fixierte Datei in den Vordergrund holen... Damit der Dateiname bereits fix vergeben ist, falls jemand die Datei schließt, bevor sie gespeichert wurde.

liebe Grüße

scientific

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Calc Ansich per Makro fixieren

Beitrag von mikele » Di 15. Nov 2016, 21:41

Hallo,
das ist schon ein interessantes Ding.
Ich habe mal ein bisschen herumgespielt und scheinbar geht folgendes:
Die Datei nicht versteckt erstellen und sofort per .getCurrentController().getFrame().getContainerWindow().setvisible(false) unsichtbar machen.
Dann die Datei bearbeiten/befüllen und einfrieren und zum Schluss wieder sichtbar machen.
"Hidden" scheint etwas anderes zu sein als setvisible(false) :? Vielleicht weiß ja jemand darüber mehr ...
Gruß,
mikele

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Calc Ansich per Makro fixieren

Beitrag von balu » Mi 16. Nov 2016, 15:12

Mahlzeit :hi:

@mikele
"Hidden" scheint etwas anderes zu sein als setvisible(false) :? Vielleicht weiß ja jemand darüber mehr
Wenn man sich längere Zeit mit bestimmten Themen/Punkten nicht befasst, dann hat man stellenweise Erklärungslücken, deshalb will ich es mal ganz simpel ohne viel Schnick-Schnack versuchen zu erklären.

HIDDEN, die Datei ist nicht zu sehen, in der Taskleiste auch nicht. Einziger Indiz das sie geöffnet ist, ein Blick in den Dateimanager denn dort ist eine .~lock Datei zu sehen.
Sie befindet sich also in folge dessen NUR im Arbeitsspeicher.

SetVisible, die Datei ist geöffnet und sie wird auch in der Taskleiste angezeigt, jedoch ist sie nicht sichtbar, da sie so gesehen nicht den Fokus erhalten hat.
Hast Du z.B. 2 Dateien geöffnet, welche Bildschirmfüllend angezeigt werden (maximiert), dann kann immer nur eine Datei sichtbar angezeigt werden, die andere ist halt nicht Sichtbar man kann sie wirklich nicht sehen.

Hilft dir das?



@scientific
Sehr schön das Du dich noch meldest. :)
Ich bin ja nicht so der Experte, und von daher ist es schon schade das ich dir nicht helfen kann deinen Wunsch doch noch zu realisieren. Aber in meinem verlinkten Beitrag wurde ja schon gesagt das dies nur mittels (auf neudeutsch) streamen und settings.xml bearbeiten geht, wovon zumindest ich keine Ahnung habe -{noch immer nicht}-. Ich weiss nur, das ich das dort oder hier mal kurz gelesen habe das man die settings.xml bearbeiten kann, nur weiss ich nicht mehr den genauen ablauf, leider. :?



Gruß
balu

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Calc Ansich per Makro fixieren

Beitrag von mikele » Mi 16. Nov 2016, 16:24

Hallo,
SetVisible, die Datei ist geöffnet und sie wird auch in der Taskleiste angezeigt,
Das habe ich auch gedacht, aber wenn ich folgendes Makro laufen lasse, dann sehe ich das neue leere Dokument nicht einmal im Taskmanger! -irre-
Soeben noch einmal getestet unter LO 4.3.7.2 und Win7 prof.

Code: Alles auswählen

Sub Main

	oDoc=thiscomponent
	Dim myFileProp(0) as New com.sun.star.beans.PropertyValue
	myFileProp(0).name = "Hidden"
	myFileProp(0).Value = False
	oDoc2 = StarDesktop.loadComponentFromURL ("private:factory/scalc", "_blank", 0, myFileProp())
	myDocCtrl2 = oDoc2.getCurrentController()
	myDocCtrl2.getFrame().getContainerWindow().setvisible(false)

End Sub
Gruß,
mikele

balu
* LO-Experte *
Beiträge: 370
Registriert: Mi 1. Jun 2011, 16:21

Re: Calc Ansich per Makro fixieren

Beitrag von balu » Mi 16. Nov 2016, 20:09

Hai mikele,

jetzt weiss ich wieder was ich vergessen hatte.

Meine vorherigen Worte stimmen alle ganz genau. Aber man MUSS differenzieren zwischen *geöffnet* und *neu erstellte - Leere - Datei*.

Geöffnet bedeutet, die Datei hat einen Namen und sie existiert für das Programm.

Neu erstellt heißt, sie existiert noch nicht wirklich, da sie noch nicht gespeichert wurde und in folge dessen keinen Namen hat. Man kann wohl per Makro mit ihr arbeiten, z.B. Daten eingeben, aber vom Betriebssystem wird sie halt nicht erfasst, denn physikalisch existiert sie nicht da sie ja nur im Arbeitsspeicher existent ist.

Ich weiss, klinkt alles etwas konfus.
Und wenn man jetzt einfach so eine neue Leere Datei erstellt, also ohne Makro, dann hat sie wohl auch noch keinen Namen aber sie wird halt in der Taskleiste angezeigt. Der Mensch kann nur in einer [als Beispiel] Calc-Datei arbeiten, wenn er sie sieht, während dem PC das vollkommen schnuppe ist da er mit und in ihr auch ohne sie anzuzeigen arbeiten kann.

Durch das Nachbarforum 'openoffice info' (Du kennst es ja auch ;-)) war ich auf den so genannten *ComponentWalker* gestoßen. Damit kann man sich in Zahlen anzeigen lassen wieviele Dateien geöffnet sind, inklusive dem Makro-Editor. Er zeigt aber auf verlangen (wenn er dementsprechend programmiert wurde) die Dateinamen der existierenden Dateien an, alle anderen wie auch die nicht sichtbaren "neuen und leeren" Dateien werden als *Unbekannt* ausgegeben da sie ja noch halt unbekannt sind weil kein Dateiname zugeordnet ist. Aber nicht nur kein Dateiname ist zugeordnet, sondern auch keine Anwendung, und deshalb existiert sie auch nicht für das Betriebssystem und kann deshalb auch nicht verwaltet werden, nur LO (in diesem Falle) kann diese nicht existierende Datei verwalten.


Wenn Du, mikele, mit *setvisible* arbeiten willst, dann kannst Du doch das Makro ganz einfach auf das hier kürzen (das aber nur so am Rande).

Code: Alles auswählen

Sub Main
   oDoc=thiscomponent
   dim dummy()
   oDoc2 = StarDesktop.loadComponentFromURL ("private:factory/scalc", "_blank", 0, dummy())
   myDocCtrl2 = oDoc2.getCurrentController()
   myDocCtrl2.getFrame().getContainerWindow().setvisible(false)
End Sub


Gruß
balu

scientific
Beiträge: 131
Registriert: Do 25. Apr 2013, 17:27

Re: Calc Ansich per Makro fixieren

Beitrag von scientific » Do 17. Nov 2016, 12:05

balu hat geschrieben:Mahlzeit :hi:

@mikele
"Hidden" scheint etwas anderes zu sein als setvisible(false) :? Vielleicht weiß ja jemand darüber mehr
Wenn man sich längere Zeit mit bestimmten Themen/Punkten nicht befasst, dann hat man stellenweise Erklärungslücken, deshalb will ich es mal ganz simpel ohne viel Schnick-Schnack versuchen zu erklären.

HIDDEN, die Datei ist nicht zu sehen, in der Taskleiste auch nicht. Einziger Indiz das sie geöffnet ist, ein Blick in den Dateimanager denn dort ist eine .~lock Datei zu sehen.
Sie befindet sich also in folge dessen NUR im Arbeitsspeicher.

SetVisible, die Datei ist geöffnet und sie wird auch in der Taskleiste angezeigt, jedoch ist sie nicht sichtbar, da sie so gesehen nicht den Fokus erhalten hat.
Hast Du z.B. 2 Dateien geöffnet, welche Bildschirmfüllend angezeigt werden (maximiert), dann kann immer nur eine Datei sichtbar angezeigt werden, die andere ist halt nicht Sichtbar man kann sie wirklich nicht sehen.

Hilft dir das?



@scientific
Sehr schön das Du dich noch meldest. :)
Ich bin ja nicht so der Experte, und von daher ist es schon schade das ich dir nicht helfen kann deinen Wunsch doch noch zu realisieren. Aber in meinem verlinkten Beitrag wurde ja schon gesagt das dies nur mittels (auf neudeutsch) streamen und settings.xml bearbeiten geht, wovon zumindest ich keine Ahnung habe -{noch immer nicht}-. Ich weiss nur, das ich das dort oder hier mal kurz gelesen habe das man die settings.xml bearbeiten kann, nur weiss ich nicht mehr den genauen ablauf, leider. :?



Gruß
balu
Hab aufgrund meiner geänderten Arbeitsbedingungen dieses Thema ein wenig aus den Augen verloren... Aber es besetzt immer noch Raum in meinen Gedanken :)

Die Geschichte mit streamen und settings.xml war mir dann zu aufwändig, und ich hab das eben mit meinem geschilderten Würgaround realisiert. Ist halt nicht hübsch, aber es funktioniert wenigstens und war relativ einfach in meinem Makro zu implementieren.

Was ich jetzt so gelesen habe, ist das Problem, dass die Datei offenbar nicht existiert, obwohl sie doch existiert. :)
Was ich vermeiden wollte, ist zweimaliges abspeichern, da dies mit Netzaufwerken unter Win7Pro und einem VPN immer wieder zu gröberen Problemen führte.

Aber spannend find ich trotzdem, dass ich Zellen fixieren nur bei sichtbaren Dokumenten kann. Ich sehe das eher als Bug denn als Feature :)

lg scientific


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