Festertitel ändern in OOO3

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Gödel2607
*
Beiträge: 15
Registriert: Fr, 22.06.2007 11:12
Wohnort: Mannheim

Festertitel ändern in OOO3

Beitrag von Gödel2607 »

Ich habe schon vor einiger Zeit in BASIC für OOO 2.X eine Büroanwendung geschrieben, die ein eigenes Fenster mit Buttons usw als Basis benutzt. Da wir jetzt auf OOO 3.X umsteigen wollen, habe ich diese Anwendung übertragen. Sie läuft auch fehlerlos, allerdings kann der Titel des Fensters nicht mehr gesetzt werden. Der folgende Code zeigt das Problem:

Code: Alles auswählen

REM  *****  BASIC  *****





Sub Main

   oAwtToolkit = CreateUnoService( "com.sun.star.awt.Toolkit" )

   oTopWindow = CreateTopWindow( oAwtToolkit, 100, 200, 500, 400 )

   oTopWindow.setBackground( RGB( 240, 240, 255 ) )

   oFrame = CreateUnoService( "com.sun.star.frame.Frame" )

   oFrame.initialize( oTopWindow )

   oFrame.setCreator( StarDesktop )

   oFrame.setTitle("TEST")

   'ThisComponent.CurrentController.Frame.title = "TEST"

End Sub



Function CreateTopWindow( oAwtToolkit, x, y, w, h )

   oWindowDesc = CreateUnoStruct( "com.sun.star.awt.WindowDescriptor" )

   With oWindowDesc

      .Type = com.sun.star.awt.WindowClass.TOP

      .WindowServiceName = ""

      .Bounds = MakeRectangle( x, y, w, h )

      .WindowAttributes = 0

      .WindowAttributes = .WindowAttributes + com.sun.star.awt.WindowAttribute.SHOW

      .WindowAttributes = .WindowAttributes + com.sun.star.awt.WindowAttribute.BORDER

      .WindowAttributes = .WindowAttributes + com.sun.star.awt.WindowAttribute.SIZEABLE

      .WindowAttributes = .WindowAttributes + com.sun.star.awt.WindowAttribute.MOVEABLE

      .WindowAttributes = .WindowAttributes + com.sun.star.awt.WindowAttribute.CLOSEABLE

   End With

   oXWindowPeer = oAwtToolkit.createWindow( oWindowDesc )

   CreateTopWindow = oXWindowPeer

end Function



Function MakeRectangle( ByVal nX As Long, ByVal nY As Long,_

                  ByVal nWidth As Long, ByVal nHeight As Long ) As com.sun.star.awt.Rectangle

   oRectangle = createUnoStruct( "com.sun.star.awt.Rectangle" )

   With oRectangle

      .X = nX

      .Y = nY

      .Width = nWidth

      .Height = nHeight

   End With

   MakeRectangle() = oRectangle

End Function 
Unter OOO 2.X war es problemlos möglich, den Fenstertitel mit oFrame.setTitle() zu setzen. Daß sich da etwas geändert hat, schreibt auch Thomas Krumbein in seinem Basic-Buch auf Seite 201/202. Die dort vorgeschlagene Methode ThisComponent.currentController funktioniert allerdings in dem Beispiel (und auch bei meiner Applikation) nicht sondern führt zu einer Fehlermeldung.
Weiß jemand Rat?
guenther
*
Beiträge: 19
Registriert: Mo, 26.04.2010 07:11

Re: Festertitel ändern in OOO3

Beitrag von guenther »

der befehl

Code: Alles auswählen

ThisComponent.CurrentController.Frame.Title = "xxx"
sollte schon funktionieren.

Aber: ThisComponent bezieht sich auf das modul, in dem der basic-code läuft.
das vermutlich nicht dein fenster.

du kannst den OOButler, formular frm_OBrowser verwenden http://members.aon.at/schardinger/openo ... utler.html um dir das anzusehen.
siehe auch Bsp01.odb

ich setze den title mit einem der fogenden events

Code: Alles auswählen

Form_BeimLaden  ' geht nur wenn Daten im Fenster
Dokument_Open    'geht immer
servus, günther
Gödel2607
*
Beiträge: 15
Registriert: Fr, 22.06.2007 11:12
Wohnort: Mannheim

Re: Festertitel ändern in OOO3

Beitrag von Gödel2607 »

der befehl

Code: Alles auswählen
ThisComponent.CurrentController.Frame.Title = "xxx"


sollte schon funktionieren.
In diesem Falle eben nicht. Probier's aus.

Günter
Antworten