Seite 1 von 2

Sind Fenstergrößen für Dokumente individuell einstellbar?

Verfasst: Mi 28. Mai 2014, 15:58
von jair_ohmsford
Guten Tag!
Um mit einem anderen Programm problemlos zusammenarbeiten zu können, brauche ich 3 Dokumentfenster in unterschiedlichen Formaten (2 klein, in etwa quadratförmig, eines mit einer kleinen Höhe, aber relativ breit). Natürlich kann ich die 3 Fenster in jeder Sitzung in die richtige Form bringen. Aber gibt es vielleicht auch eine Möglichkeit, die Form (und evtl. auch die Position) der Fenster mit abzuspeichern, so dass sie ihr Format nicht immer wieder vergessen? Offenbar wird nur die Position und Größe des zuletzt abgespeicherten Fensters beibehalten.
Mein Betriebssystem ist Windows 7 Home Premium mit Service Pack 1.
Vielen Dank,
Jair

Re: Sind Fenstergrößen für Dokumente individuell einstellbar

Verfasst: Mi 28. Mai 2014, 21:08
von gogo
das "Fenster" kann diese Eigenschaft nicht speicehrn, zumal das ja eine betriebssystemspezifische Eigenschaft ist. Du kannst Dir aber ein paar Makros wie das untenstehende machen, und diese in den Symbolleisten festpinnen, auf Klick wird dann das Fenster verkleinert

Code: Alles auswählen

sub FenstergroesseSetzen(optional optHeight, optional optWidth, optional optZoom)

dim oWin as object
dim oGr as object
dim lHeight as long
dim lWidth as long

oWin = StarDesktop.getCurrentFrame().getContainerWindow()
oGr = oWin.getPosSize()

if ismissing(optHeight) then
     lHeight = CLng(300)
else
     lHeight = CLng(optHeight)
end if

if ismissing(optWidth) then
     lWidth  = CLng(500)
else
     lWidth = CLng(optWidth)
end if

if oWin.IsMaximized then oWin.IsMaximized = false

oWin.setPosSize(oGr.X, oGr.Y, lWidth, lHeight, 12)
' Falg 12 - siehe http://www.openoffice.org/api/docs/common/ref/com/sun/star/awt/XWindow.html#setPosSize

if ismissing(optZoom) then
     StarDesktop.getCurrentFrame.Controller.ViewSettings.ZoomValue = 100
else
     StarDesktop.getCurrentFrame.Controller.ViewSettings.ZoomValue = CLng(optZoom)
end if

end sub
Alternativ kann das Dokument natürlich auch Benutzerdefinierte Eigenschaften speichern, diese verstaust Du am Besten irgendwo/irgendwie unter

Code: Alles auswählen

.DocumentProperties.UserDefinedProperties
Die kann man beim Start des Dokumentes auslesen und dann eben alles Mögliche damit anstellen.

Außerdem wäre es möglich die Fenstertitel zu durchsuchen, und die passenden Fenster dann auf die jeweilige Größe zu bringen. Den Titel des Fensters bekommst Du über

Code: Alles auswählen

ThisComponent.CurrentController.Frame.Title
Vermutlich auch irgendwo bei "StarDesktop.getCurrentFrame..." ... oder so ähnlich - musst Du XRayen

Re: Sind Fenstergrößen für Dokumente individuell einstellbar

Verfasst: Mi 28. Mai 2014, 21:20
von jair_ohmsford
Vielen Dank für die Hilfe! Mit Makros hatte ich bisher noch nicht gearbeitet. Ich werde das bei nächster Gelegenheit mal ausprobieren.
Nochmals vielen Dank,
Jair

Re: Sind Fenstergrößen für Dokumente individuell einstellbar

Verfasst: So 3. Aug 2014, 11:52
von Mau
Liebe(r) gogo,

ich habe das gleiche Problem und zu deiner Antwort zwei Fragen.
gogo hat geschrieben:Alternativ kann das Dokument natürlich auch Benutzerdefinierte Eigenschaften speichern, diese verstaust Du am Besten irgendwo/irgendwie unter

Code: Alles auswählen

.DocumentProperties.UserDefinedProperties
Ich vermute, dass das eine Einstellung der Registry ist. Ist das richtig?
gogo hat geschrieben:Die kann man beim Start des Dokumentes auslesen und dann eben alles Mögliche damit anstellen.

Außerdem wäre es möglich, die Fenstertitel zu durchsuchen, und die passenden Fenster dann auf die jeweilige Größe zu bringen. Den Titel des Fensters bekommst Du über

Code: Alles auswählen

ThisComponent.CurrentController.Frame.Title
Vermutlich auch irgendwo bei "StarDesktop.getCurrentFrame..." ... oder so ähnlich - musst Du XRayen
Wie macht man das - XRayen?

Gruß,
Mau

Re: Sind Fenstergrößen für Dokumente individuell einstellbar

Verfasst: So 3. Aug 2014, 18:50
von lorbass
Mau hat geschrieben:Ich vermute, dass das eine Einstellung der Registry ist. Ist das richtig?
Nein, was du da vermutest, ist falsch. In der Windows-Registry werden Informationen über den Rechner, die eingerichteten Benutzer, Windows und die installierten Programme gespeichert. Es wäre ja geradezu absurd, wenn DocumentProperties in der Registry landen würden. Dann könnten diese Eigenschaften ja nur auf der Maschine verwertet werden können, in deren Registry sie eingetragen worden sind.
Mau hat geschrieben:Wie macht man das - XRayen?
Man benutzt das X-Ray Tool für Entwickler
   → https://wiki.documentfoundation.org/Macros
   → http://dvd.de.libreofficebox.org/entwicklung/

Gruß
lorbass

Re: Sind Fenstergrößen für Dokumente individuell einstellbar

Verfasst: So 3. Aug 2014, 19:12
von Mau
Liebe(r) lorbass,
danke für deine Antwort.
lorbass hat geschrieben:
Mau hat geschrieben:Ich vermute, dass das eine Einstellung der Registry ist. Ist das richtig?
Nein, was du da vermutest, ist falsch. In der Windows-Registry werden Informationen über den Rechner, die eingerichteten Benutzer, Windows und die installierten Programme gespeichert. Es wäre ja geradezu absurd, wenn DocumentProperties in der Registry landen würden. Dann könnten diese Eigenschaften ja nur auf der Maschine verwertet werden können, in deren Registry sie eingetragen worden sind.
Ja, so ähnlich hatte ich mir das tatsächlich vorgestellt, weil die Fensterposition und -größe in diesem Fall ja eine Einstellung des jeweiligen Anwenders ist. Ich möchte den, der meine Datei als nächster verwendet (in dem Fall zur Übersetzungskontrolle), ja nicht zwingen, dieselbe Fenstereinstellung zu verwenden. (Aber möglicherweise habe ich das wieder falsch verstanden.)
lorbass hat geschrieben:
Mau hat geschrieben:Wie macht man das - XRayen?
Man benutzt das X-Ray Tool für Entwickler
   → https://wiki.documentfoundation.org/Macros
   → http://dvd.de.libreofficebox.org/entwicklung/
Tja, ich habe mich in Sachen Computer und Software ja schon in vieles eingearbeitet. Aber das geht dann in eine Ebene hinunter, die ich nicht mehr beherrschen lernen werde.

Gruß,
Mau

Re: Sind Fenstergrößen für Dokumente individuell einstellbar

Verfasst: Di 5. Aug 2014, 01:02
von gogo
gogo hat geschrieben:...
Alternativ kann das Dokument natürlich auch Benutzerdefinierte Eigenschaften speichern, diese verstaust Du am Besten irgendwo/irgendwie unter

Code: Alles auswählen

.DocumentProperties.UserDefinedProperties
Die kann man beim Start des Dokumentes auslesen und dann eben alles Mögliche damit anstellen.
...
oops das wurde vermutlich missverstanden.
.UserDefinedProperties sind Eigenschaft(en) des Dokumentes die der User vollkommen frei definiert - eine Seriennummer, ein spezieller Text den man nicht im Dokument selbst darstellen möchte, oder eben Informationen die man für die Fenstergröße verwendet.
Man kann damit aber KEINE Information hinterlegen die das System per se ausliest und als Standardwert für irgendwas verwendet, das muss man dann schon selbst programmieren.
Für die Fenstergröße wäre das dann etwa so:
Beim Erstellen des Formulars überlegt sich der Programmierer: 500 Pixel Breite und 350 Pixel Höhe wären gut, die Zoomstufe soll 120% sein und die Symbolleisten und das Menü sollen ausgeblendet werden. Also erstellt er eine Eigenschaft mit einem neuen Namen "FirmaXYZ_FensterDeko" und füllt sie bei diesem Dokument mit folgendem Text:
"500,350,120,KeinMenue"
Beim Speichern des Dokumentes wird diese Info also mit abgespeichert, ohne dass der User an der "normalen" Oberfläche etwas erkennen kann. Unter Datei/Eigenschaften/Benutzerdefinierte Eigenschaften wird er aber folgende Zeile sehen:
BenDefEigenschaft.png
BenDefEigenschaft.png (20.7 KiB) 10681 mal betrachtet
Nun muss man nur noch die mitgespeicherte Info benutzen - d.h. ein Makro schreiben, dass beim Öffnen des Dokumntes diese Info ausliest und verarbeitet.
z.B.:

Code: Alles auswählen

Sub Autostartmakro
'Auslesen der Werte und Speichern in der Variable aWerte
aWerte() = SPLIT(ThisComponent.DocumentProperties.UserDefinedProperties.FirmaXYZ_FensterDeko, ",")

' Verarbeitung der Fenstergroesse und der Zoomstufe
call FenstergroesseSetzen( aWerte(0), aWerte(1) , aWerte(2) )
' Die Sub "FenstergroesseSetzen" im Post oben habe ich editiert - man kann ihr die zu setzenden Werte jetzt uebergeben.

' Aendern der Fensterdekoration:
call FensterAussehenEinstellen( aWerte(3) )
' die Sub "FensterAussehenEinstellen" sollte mit dem Wert "KeinMenue" etwas anfangen koennen :)

end sub
(Ich hab jetzt keine Programmierumgebung - daher ist der Code nicht getestet!)

Wenn die "Sub Autostartmakro" also abläuft, dann wird das Dokument mit den festgesetzten Werten dargestellt.
gogo hat geschrieben:...
oder so ähnlich - musst Du XRayen
Download hier: http://bernard.marcelly.perso.sfr.fr/index2.html
Installation per Klick, wenn man den Button im Dokument findet. Anwendungsbeispiele: siehe bei der Suchmaschine Deiner Wahl.

Re: Sind Fenstergrößen für Dokumente individuell einstellbar

Verfasst: Di 5. Aug 2014, 11:19
von Mau
Liebe(r) gogo,

danke für die ganzen Informationen. Ich habe jetzt erst einmal eine Benutzerdefinierte Einstellung hinzugefügt und die beiden Subroutinen an eine meiner Makrodateien angehängt.

Ausprobieren kann ich das Ganze erst später.

Aber vorab schon eine Frage noch:
Wie sorgt man dafür, dass der Autostartmakro gleich beim Öffnen der Datei abgearbeitet wird?

Gruß,
Mau

Re: Sind Fenstergrößen für Dokumente individuell einstellbar

Verfasst: Mi 6. Aug 2014, 00:17
von gogo
unter Extras/Anpassen/Ereignisse dem Ereignis "Dokument öffnen" das Makro zuweisen

Re: Sind Fenstergrößen für Dokumente individuell einstellbar

Verfasst: Mi 6. Aug 2014, 09:42
von Mau
OK, Dank dir!

(Wenn alles funktioniert hat und ich mich nicht noch einmal melden muss, gleich doppelt ... :) )

Gruß,
Mau