von Toxitom » Fr, 03.09.2004 13:48
Hey Stephan,
ich bin leider auch kein Sun-Programmierer und kann dir weder die Historie noch den tieferen Sinn der Programmierung darlegen. Aus meinem gesammelten Wissen (ohne Anspruch auf Vollständigkeit):
Bis StarOffice 5.1 liefen alle Module von Staroffice in einer einheitlichen "Rahmenumgebung", erst mit StarOffice 6 und OOo 1.0 wurde diese Vorgehensweise aufgegeben und den Applikationen einzelne Fenster spendiert.
Unter 5.1 war es also dringend nötig, die Applikationen innerhalb des Rahmenobjektes anzusprechen - eben über die Zuordnung StarDesktop.CurrentComponent. Das funktioniert auch heute noch ohne Probleme, das heisst intern wird nach wie vor ein Objekt "StarDesktop" erzeugt und mit Methoden und Eigenschaften ausgestattet. StarDesktop ist also, auch wenn nicht mehr sichtbar, immer noch eine Art übergeordneter Rahmen. Über dieses Objekt kann ich auch andere, offene Soffice Applikationen ansprechen und manipulieren.
Über "thisComponent" erreichst du immer nur das aktuelle (und du hast natürlich recht, es geht auch, wenn das Makro nicht im Dokumnet gespeichert ist) Applikationsfenster, nicht aber die sonstigen Fenster und Hilfsanwendungen. Insofern kannst du auch in der IDE (die ja auch eine StarDesktop Anwendung darstellt) ein Makro laufen lassen, das mit "thisComponent" auf die aktuell geöffnete Applikation (Writer, Calc, Draw oder Impress) zugreift, nicht aber ein Makro, das mit StarDesktop.currentComponent das Objekt der gerade aktuellen Applikation liefert - jetzt eben die Basic-IDE.
Es reicht heute in der Regel, mit "thisComponent" zu arbeiten, solage sich die Makros auf das aktuelle Dokument beziehen.
Möchte man jedoch diverse Dokumente verschiedener Applikationen ansprechen, dann sollte man variieren.
OK, vielleicht nicht professionell erläutert, aber ich hoffe, es hilft weiter. Also ich nutze in der Regel "thisComponent" und hatte noch keine Probleme.
Gruss
Thomas
Hey Stephan,
ich bin leider auch kein Sun-Programmierer und kann dir weder die Historie noch den tieferen Sinn der Programmierung darlegen. Aus meinem gesammelten Wissen (ohne Anspruch auf Vollständigkeit):
Bis StarOffice 5.1 liefen alle Module von Staroffice in einer einheitlichen "Rahmenumgebung", erst mit StarOffice 6 und OOo 1.0 wurde diese Vorgehensweise aufgegeben und den Applikationen einzelne Fenster spendiert.
Unter 5.1 war es also dringend nötig, die Applikationen innerhalb des Rahmenobjektes anzusprechen - eben über die Zuordnung StarDesktop.CurrentComponent. Das funktioniert auch heute noch ohne Probleme, das heisst intern wird nach wie vor ein Objekt "StarDesktop" erzeugt und mit Methoden und Eigenschaften ausgestattet. StarDesktop ist also, auch wenn nicht mehr sichtbar, immer noch eine Art übergeordneter Rahmen. Über dieses Objekt kann ich auch andere, offene Soffice Applikationen ansprechen und manipulieren.
Über "thisComponent" erreichst du immer nur das aktuelle (und du hast natürlich recht, es geht auch, wenn das Makro nicht im Dokumnet gespeichert ist) Applikationsfenster, nicht aber die sonstigen Fenster und Hilfsanwendungen. Insofern kannst du auch in der IDE (die ja auch eine StarDesktop Anwendung darstellt) ein Makro laufen lassen, das mit "thisComponent" auf die aktuell geöffnete Applikation (Writer, Calc, Draw oder Impress) zugreift, nicht aber ein Makro, das mit StarDesktop.currentComponent das Objekt der gerade aktuellen Applikation liefert - jetzt eben die Basic-IDE.
Es reicht heute in der Regel, mit "thisComponent" zu arbeiten, solage sich die Makros auf das aktuelle Dokument beziehen.
Möchte man jedoch diverse Dokumente verschiedener Applikationen ansprechen, dann sollte man variieren.
OK, vielleicht nicht professionell erläutert, aber ich hoffe, es hilft weiter. Also ich nutze in der Regel "thisComponent" und hatte noch keine Probleme.
Gruss
Thomas