Die verschiedenen Arten der Zuweisung von EventListenern

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

Moderator: Moderatoren

Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Maggus »

Hallo,
gerne wüsste ich, wie ich einem com.sun.star.drawing.RectangleShape ein EventListener hinzufügen kann.

Noch besser wäre, wenn mir jemand erklären könnte, wie ich selber herausfinde, wann ich einem Objekt wie einen Listener registriere.
Folgendes kann ich schon:

Auf der DrawPage:
com.sun.star.drawing.ControlShape

Code: Alles auswählen

  Dim oEvent as new com.sun.star.script.ScriptEventDescriptor
  oEvent.ListenerType = "com.sun.star.awt.XMouseListener"
  oEvent.EventMethod = "mouseReleased"
  oEvent.ScriptType = "StarBasic"
  oEvent.ScriptCode = "vnd.sun.star.script:Standard.Module1.meineSub"
  oForm.registerScriptEvent(nIndex, oEvent)
In einem Dialog:
com.sun.star.awt.UnoControlFixedTextModel

Code: Alles auswählen

...
  oListener = CreateUnoListener("MeinListener_", "com.sun.star.awt.XMouseListener")
  oControl = oDlg.getControl("MeinObjekt")
  oControl.addMouseListener(oListener)
...
Sub setStars_mousePressed(oEvent)
  'hier passiert was
End Sub

Sub setStars_mouseReleased()
End Sub
Sub setStars_mouseEntered()
End Sub
Sub setStars_mouseExited()
End Sub
Sub setStars_disposing
End Sub
Und dann habe ich gelesen für
com.sun.star.drawing.GraphicObjectShape auf der DrawPage solle es so gehen:

Code: Alles auswählen

  Dim aEventArgs(1) as new com.sun.star.beans.PropertyValue
  aEventArgs(0).Name = "EventType"
  aEventArgs(0).Value = "Script"
  aEventArgs(1).Name = "Script"
  aEventArgs(1).Value = "vnd.sun.star.script:Standard.Module1.meineSub?language=Basic&location=document"
  oshape.Events.replaceByName("OnClick",aEventArgs)
Wobei ich noch nicht nachvollziehen kann, wo hier das OnClick herkommt.

Davon abgesehen: Ich hab jetzt als Beispiel mal ein com.sun.star.drawing.RectangleShape und krieg partout nicht heraus, wie ich hier ein EventListener drauf krieg. Also bei Mausklick auf dasselbe.
Auch in der API Doku kann ich nichts finden. Gibt es irgendwo eine Übersicht wann man was nehmen muss? Und warum eigentlich so verschiedene Vorgehensweisen? :?

Gruß,
Maggus (:o)
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Frieder D. »

Hallo Maggus,

hier erstmal die Lösung deines Problems:

Code: Alles auswählen

Sub set_Rectangle_whith_Mouse_Listener
Dim oRect As object
dim oShape As object
Dim oDP As Object
dim i%
dim oSize As New com.sun.star.awt.Size
Dim aEventArgs(1) as new com.sun.star.beans.PropertyValue 
  oSize.Width = 6000
  oSize.Height = 6000
  oRect=ThisComponent.createInstance("com.sun.star.drawing.RectangleShape")
  oRect.Name = "Test1"
  oRect.Size = oSize
  oDP=ThisComponent.Sheets(1).Drawpage
  For i=0 To oDP.getcount -1
    If oDP.getByIndex(i).Name="Test1" Then
      oDP.getByIndex(i).Dispose 'Löschen falls schon vorhanden.
    end if
  Next
  oDP.add(oRect) 'Rechteck auf die Tabelle2 setzen

  aEventArgs(0).Name = "EventType"
  aEventArgs(0).Value = "Script"
  aEventArgs(1).Name = "Script"
  aEventArgs(1).Value = "vnd.sun.star.script:Standard.Module2.Test2?language=Basic&location=document"
  For i=0 To oDP.getcount -1
    If oDP.getByIndex(i).Name="Test1" Then
       oShape=oDP.getByIndex(i) 'Das ist das neue Rechteck
       oshape.Events.replaceByName("OnClick",aEventArgs) 'Den Listener setzen.
    end if
  Next
end sub
'----------------------------------------------------------
Sub Test2
  MsgBox "Hallo"
End sub
Gruß Frieder
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Frieder D. »

Hallo Maggus,

und nun zu den Listener Methoden:

zu Methode 1 und 3 .

Code: Alles auswählen

Dim oEvent as new com.sun.star.script.ScriptEventDescriptor
...
'und
Dim aEventArgs(1) as new com.sun.star.beans.PropertyValue
...
Diese Methoden setzen einen Event-Listener genau so, als wenn du ihn selber über die GUI gesetzt hättest.
Wobei Methode 1 für "Formular-Steuerelemente" gilt, und Methode3 für Alle Graphischen Object.
Diesen Methoden muss nur das eine auszuführende Makro zur Verfügung gestellt werden.
Alle anderen Benötigten Methoden werden vom Dokument selber bereitgestellt.
Listener, die mit Methode 1 und 3 erstellt werden, stehen auch nach dem beenden und Neuladen des Dokuments zur Verfügung.
Sie können von Hand, oder per Makro entfernt werden.
Die Listener, die einem mit diesen Methoden zur Verfügung stehen sind genau diejenigen, die einem auch in der GUI zur Verfügung stehen (aber mit englischen Namen.)
Ich kann also auf ein Graphik Object nicht die Methode "Bei Fokuserhalt" setzen, da ich diese Methode auch nicht in der GUI zur Verfügung habe.

Methode 2 ist ganz anders:

Code: Alles auswählen

oControl.addXxxxListener(oListener)
Welche Listener man mit dieser Methode ein Object zuweisen kann sieht man am einfachsten,
indem man das gewünschte Object mit Xray oder MRI Untersucht.
ein Xray Beispiel siehe Anhang.
ob ein solcher Listener vom "XEventListener" abstammt und somit die Methode "disposing" benötigt, sieht man z.B. in der API
Welche Methoden er unterstützt, sieht man ebenfalls in der API
die dort aufgeführten Methoden müssen neben der Methode "disposing" implementiert werden.
Zusätzlich muss der Listener als Globale Variable deklariert werden, damit er auch wieder entfernt werden kann.( Ein sehr ausführliches Beispiel)

Listener, die mit dieser Methode2 einem Object zugewiesen wurden, werden beim schließen des Dokuments automatisch entfernt,
und müssen nach jedem Neustart aufs neue zugewiesen werden.

Gruß Frieder

P.S.
Hier noch ein Screenshot der Methoden von "ThisComponent".
Wenn man bei Xray auf Details klickt, bekommt man auch gleich die richtigen Namen der Listener.

Code: Alles auswählen

addPropertyChangeListener ( aPropertyName as string, xListener as com.sun.star.beans.XPropertyChangeListener ) 
addPrintJobListener       ( xListener as com.sun.star.view.XPrintJobListener )                                         com.sun.star.view.XPrintJobBroadcaster 
addPropertyChangeListener ( aPropertyName as string, xListener as com.sun.star.beans.XPropertyChangeListener )         com.sun.star.beans.XPropertySet 
addStorageChangeListener  ( xListener as com.sun.star.document.XStorageChangeListener )   
Listener_ThisComponent.png
Listener_ThisComponent.png (54.81 KiB) 5295 mal betrachtet
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Maggus »

Hallo Frieder,

wow, das war ausführlich! Bringt ne Menge Licht in die Listener Geschichte.
Das heißt jetzt also: Es gibt nur diese 3 Methoden um Listener zu erstellen?

Ok, also das mit oControl.addXxxxListener(oListener) das kann man nachvollziehen, in Xray und so.

Und die anderen beiden Methoden com.sun.star.script.ScriptEventDescriptor und com.sun.star.beans.PropertyValue ?
Wo steht das, außer in deinem Post, welche Objekte womit belegt werden? In der API finde ich nichts darüber. Überhaupt habe ich noch nirgends so eine gute Beschreibung gefunden, wie die von dir hier.

Deine StarBasicMakros Seite hatte ich schon größtenteils gelesen. Auch sehr hilfreich, danke.

Gruß,
Maggus (:o)
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Maggus »

Frieder D. hat geschrieben:hier erstmal die Lösung deines Problems:
Also bei mir funktioniert das nicht. :( Es kommt ein BASIC-Laufzeit Fehler: Eigenschaft oder Methode nicht gefunden.
Kann ja auch gar nicht, denn ein com.sun.star.drawing.RectangleShape hat bei mir keine Property "Events" oder Methode "getEvents".

Hat das damit zu tun, dass wir uns hier in einem Calc Dokument befinden?
Ich arbeite mit OOo 3.0.0 unter Linux Fedora.

Gruß,
Maggus (:o)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Stephan »

Und die anderen beiden Methoden com.sun.star.script.ScriptEventDescriptor und com.sun.star.beans.PropertyValue ?
Beides sind keine Methoden, wie z.B. aus der IDL-Referenz ersichtlich:
http://www.openoffice.org/api/docs/comm ... iptor.html
http://www.openoffice.org/api/docs/comm ... Value.html
Wo steht das, außer in deinem Post, welche Objekte womit belegt werden?
Systematisch wohl nirgens weil üblicherweise niemand eine solche Information braucht.
(Deine Frage ist vergleichbar mit der Forderung unter dem Stichwort "Augenfarbe blau" eine Liste aller Menschen mit blauen Augen zu finden, in Realität ist es nur gerade andersrum nämlich das unter dem Namen eines bestimmten Menschen die Information seiner Augenfarbe eingeordnet ist.)

Welche Listener für ein Objekt ggf. anwendbar sind ergibt sich aus den entsprechenden Methoden des Objekts, einzusehen über XRAY oder anzuzeigen mit

Code: Alles auswählen

MsgBox <objekt>.dbg_methods 
Überhaupt habe ich noch nirgends so eine gute Beschreibung gefunden, wie die von dir hier.
In jedem Fall sollte das Standardwek von Pitonyak entsprechende Informationen enthalten:
http://www.pitonyak.org/book/



Gruß
Stephan
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Frieder D. »

Hallo Maggus
Also bei mir funktioniert das nicht. Es kommt ein BASIC-Laufzeit Fehler: Eigenschaft oder Methode nicht gefunden.
Kann ja auch gar nicht, denn ein com.sun.star.drawing.RectangleShape hat bei mir keine Property "Events" oder Methode "getEvents".
Diese Methoden stehen erst dann zur Verfügung, wenn das Rechteck der Drawpage zugewiesen wurden.
hier mein Beispiel Dokument.
RectangleShape.ods
(10.63 KiB) 184-mal heruntergeladen
Hat das damit zu tun, dass wir uns hier in einem Calc Dokument befinden?
Ich arbeite mit OOo 3.0.0 unter Linux Fedora.
Mein Beispiel bezieht sich auf ein Calc-Dokument.
In einem Writer Dokument kann ich einem Rechteck auch per GUI kein Mous-Listener Zuweisen.
Also geht es mit Methode3 nicht per Makro.
Da das Object auch nicht die Methode addMouseListener unterstütz, geht es mit Methode2 auch nicht.
(Methode1 geht sowieso nicht, da es kein Steuerelement ist.)
Gruß Frieder
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Maggus »

Frieder D. hat geschrieben:Diese Methoden stehen erst dann zur Verfügung, wenn das Rechteck der Drawpage zugewiesen wurden.
Ja, das habe ich verstanden. Aber es funktioniert zumindest in OOo 3.0.0 definitiv nicht. Die Beispieldatei entspricht ja genau dem von dir geposteten code. Ich bleibe bei der Aussage, dass bei mir das Shape auch wenn es bereits der Drawpage hinzugefügt wurde keine Events Property hat!!
Dementsprechend läuft deine Beispiel Datei bei mir auf denselben Fehler.

liegt das an der Version?

Gruß,
Maggus (:o)
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Maggus »

Hallo Stephan,
Stephan hat geschrieben:Beides sind keine Methoden, wie z.B. aus der IDL-Referenz ersichtlich
Ehhhm, ja. Etwas unglückliche Begriffswahl in diesem Zusammenhang. Ich bezog mich auf die Aussage von Frieder, vielleicht sollte man hier besser von 3 Möglichkeiten sprechen als von Methoden, um Verwechslungen vorzubeugen. :)
Stephan hat geschrieben:Systematisch wohl nirgens weil üblicherweise niemand eine solche Information braucht.
Schade, mir würde das nutzen um den Zusammenhang besser zu verstehen.
Stephan hat geschrieben:In jedem Fall sollte das Standardwek von Pitonyak entsprechende Informationen enthalten:
http://www.pitonyak.org/book/
Ja, natürlich hatte ich auch schon die deutsche Übersetzung von Volker angesehen. Durch die kurze knackige Erklärung von Frieder hab ichs jetzt aber erst verstanden. :)

Gruß,
Maggus (:o)
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Frieder D. »

Hallo Maggus
ch bleibe bei der Aussage, dass bei mir das Shape auch wenn es bereits...
solange du Meine Beispieldatei nicht ausprobiert hast, ist es einfach Ignorant so etwas zu behaupten.

Und ich weis immer noch nicht, ob du mit Writer, oder mit Calc arbeitest.(in Writer geht es nicht)

Vielleicht liegt es aber wirklich an der Version. ich arbeite mit Lo3.3.4.


Gruß Frieder
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Maggus »

Frieder D. hat geschrieben:solange du Meine Beispieldatei nicht ausprobiert hast, ist es einfach Ignorant so etwas zu behaupten.
Nie würde ich das behaupten, ohne es ausprobiert zu haben! Mir ist eben nur aufgefallen, dass es im Grunde der gleiche Code ist.
Frieder D. hat geschrieben:Und ich weis immer noch nicht, ob du mit Writer, oder mit Calc arbeitest.(in Writer geht es nicht)
Calc :)

hier eine Übersicht der Properties des mit deinem Code erstellten Shape, nachdem es der Drawpage hinzugefügt wurde:

Code: Alles auswählen

Anchor                    object                           pseudo-prop, read-only 
Bitmap                    object                           read-only 
BoundRect                 struct                           read-only 
CharAutoKerning           boolean                    True   
CharColor                 long                         -1   
CharContoured             boolean                   False   
CharCrossedOut            boolean                   False   
CharEmphasis              integer                       0   
CharEscapement            integer                       0   
CharEscapementHeight      byte                        100   
CharFontCharSet           integer                      12   
CharFontCharSetAsian      integer                      12   
CharFontCharSetComplex    integer                      12   
CharFontFamily            integer                       3   
CharFontFamilyAsian       integer                       6   
CharFontFamilyComplex     integer                       6   
CharFontName              string       "Liberation Serif"   
CharFontNameAsian         string        "DejaVu LGC Sans"   
CharFontNameComplex       string        "DejaVu LGC Sans"   
CharFontPitch             integer                       2   
CharFontPitchAsian        integer                       2   
CharFontPitchComplex      integer                       2   
CharFontStyleName         string                       ""   
CharFontStyleNameAsian    string                       ""   
CharFontStyleNameComplex  string                       ""   
CharHeight                single                       12   
CharHeightAsian           single                       24   
CharHeightComplex         single                       24   
CharKerning               integer                       0   
CharLocale                struct                            
CharLocaleAsian           struct                            
CharLocaleComplex         struct                            
CharPosture               integer                       0   
CharPostureAsian          integer                       0   
CharPostureComplex        integer                       0   
CharRelief                integer                       0   
CharScaleWidth            integer                     100   
CharShadowed              boolean                   False   
CharStrikeout             integer                       0   
CharUnderline             integer                       0   
CharUnderlineColor        long                         -1   
CharUnderlineHasColor     boolean                   False   
CharWeight                single                      100   
CharWeightAsian           single                      100   
CharWeightComplex         single                      100   
CharWordMode              boolean                   False   
CornerRadius              long                          0   
CustomShapeAdjustment     []long                  <empty>   
Dbg_Methods               string                    <...>  basic prop, read-only 
Dbg_Properties            string                    <...>  basic prop, read-only 
Dbg_SupportedInterfaces   string                    <...>  basic prop, read-only 
Description               string                       ""   
ElementType               type                             pseudo-prop, read-only 
End                       object                           pseudo-prop, read-only 
FillBackground            boolean                   False   
FillBitmap                object                   <null>   
FillBitmapLogicalSize     boolean                    True   
FillBitmapMode            integer                       0   
FillBitmapName            string                       ""   
FillBitmapOffsetX         long                          0   
FillBitmapOffsetY         long                          0   
FillBitmapPositionOffsetX long                          0   
FillBitmapPositionOffsetY long                          0   
FillBitmapRectanglePoint  integer                       4   
FillBitmapSizeX           long                          0   
FillBitmapSizeY           long                          0   
FillBitmapStretch         boolean                    True   
FillBitmapTile            boolean                    True   
FillBitmapURL             string                    <...>   
FillColor                 long                   10079487   
FillColor2                long                   10079487   
FillGradient              struct                            
FillGradientName          string                       ""   
FillGradientStepCount     integer                       0   
FillHatch                 struct                            
FillHatchName             string                       ""   
FillStyle                 integer                       1   
FillTransparence          integer                       0   
FillTransparenceGradient  struct                            
FillTransparenceGradientName string                    ""   
FontIndependentLineSpacing boolean                  False   
FontWorkAdjust            long                          3   
FontWorkDistance          long                          0   
FontWorkForm              long                          0   
FontWorkHideForm          boolean                   False   
FontWorkMirror            boolean                   False   
FontWorkOutline           boolean                   False   
FontWorkShadow            long                          0   
FontWorkShadowColor       long                   12632256   
FontWorkShadowOffsetX     long                          0   
FontWorkShadowOffsetY     long                          0   
FontWorkShadowTransparence integer                      0   
FontWorkStart             long                          0   
FontWorkStyle             long                          4   
FrameRect                 struct                            
GluePoints                object                           pseudo-prop, read-only 
HoriOrientPosition        long                          0   
ImageMap                  object                            
ImplementationId          []byte                           pseudo-prop, read-only 
ImplementationName        string           "SvxShapeText"  pseudo-prop, read-only 
IsFontwork                boolean                   False  read-only 
LayerID                   integer                       0   
LayerName                 string                  "vorne"   
LineColor                 long                          0   
LineDash                  struct                            
LineDashName              string                       ""   
LineEnd                   struct                           may be void 
LineEndCenter             boolean                   False   
LineEndName               string                       ""   
LineEndWidth              long                        200   
LineJoint                 integer                       4   
LineStart                 struct                           may be void 
LineStartCenter           boolean                   False   
LineStartName             string                       ""   
LineStartWidth            long                        200   
LineStyle                 integer                       1   
LineTransparence          integer                       0   
LineWidth                 long                          0   
LinkDisplayBitmap         object                           read-only 
LinkDisplayName           string                  "Test1"  read-only 
MetaFile                  []byte                           read-only 
MoveProtect               boolean                   False   
Name                      string                  "Test1"  pseudo-prop 
NumberingIsNumber         boolean                    True   
NumberingRules            object                            
ParaAdjust                integer                       3   
ParaBottomMargin          long                          0   
ParaFirstLineIndent       long                          0   
ParaIsCharacterDistance   boolean                    True   
ParaIsForbiddenRules      boolean                    True   
ParaIsHangingPunctuation  boolean                   False   
ParaIsHyphenation         boolean                   False   
ParaLastLineAdjust        integer                       0   
ParaLeftMargin            long                          0   
ParaLineSpacing           struct                            
ParaRightMargin           long                          0   
ParaTabStops              []struct                <empty>   
ParaTopMargin             long                          0   
ParaUserDefinedAttributes object                            
Parent                    object                           pseudo-prop 
Position                  struct                           pseudo-prop 
Printable                 boolean                    True   
PropertiesToDefault       []string                         pseudo-prop, write-only 
PropertySetInfo           object                           pseudo-prop, read-only 
PropertyToDefault         string                           pseudo-prop, write-only 
RotateAngle               long                          0   
Shadow                    boolean                   False   
ShadowColor               long                          0   
ShadowTransparence        integer                       0   
ShadowXDistance           long                        300   
ShadowYDistance           long                        300   
ShapeType                 string                    <...>  pseudo-prop, read-only 
ShearAngle                long                          0   
Size                      struct                           pseudo-prop 
SizeProtect               boolean                   False   
Start                     object                           pseudo-prop, read-only 
String                    string                       ""  pseudo-prop 
SupportedServiceNames     []string                         pseudo-prop, read-only 
Text                      object                           pseudo-prop, read-only 
TextAnimationAmount       integer                       0   
TextAnimationCount        integer                       0   
TextAnimationDelay        integer                       0   
TextAnimationDirection    integer                       0   
TextAnimationKind         integer                       0   
TextAnimationStartInside  boolean                   False   
TextAnimationStopInside   boolean                   False   
TextAutoGrowHeight        boolean                    True   
TextAutoGrowWidth         boolean                   False   
TextContourFrame          boolean                   False   
TextFitToSize             integer                       0   
TextHorizontalAdjust      integer                       1   
TextLeftDistance          long                          0   
TextLowerDistance         long                          0   
TextMaximumFrameHeight    long                          0   
TextMaximumFrameWidth     long                          0   
TextMinimumFrameHeight    long                          0   
TextMinimumFrameWidth     long                          0   
TextRightDistance         long                          0   
TextUpperDistance         long                          0   
TextVerticalAdjust        integer                       1   
TextWordWrap              boolean                   False   
TextWritingMode           integer                       0   
Title                     string                       ""   
Transformation            struct                            
Types                     []type                           pseudo-prop, read-only 
UINamePlural              string               "Quadrate"  read-only 
UINameSingular            string        "Quadrat 'Test1'"  read-only 
UserDefinedAttributes     object                            
VertOrientPosition        long                          0   
WritingMode               integer                       4   
ZOrder                    long                          1   

Gruß,
Maggus (:o)
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Frieder D. »

Hallo Maggus

Warum nimmst du nicht ein Beschriftungsfeld?
Es sieht genauso aus wie ein Rechteck, und du kannst Methode 1 Verwenden

Gruß
Frieder
Frieder D.
****
Beiträge: 115
Registriert: Di, 10.01.2012 10:51
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Frieder D. »

Hallo Maggus,

hier ein Beispiel mit einem Beschriftungsfeld:

Code: Alles auswählen

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

sub addLabelFixedText
  oSheet = thiscomponent.sheets(0)
  oPage = oSheet.drawpage

  Dim aPoint As New com.sun.star.awt.Point
  Dim aSize As New com.sun.star.awt.Size

  aPoint.x = 10000
  aPoint.y = 10000
  aSize.Width = 10000
  aSize.Height = 1600

  btn = thiscomponent.createInstance("com.sun.star.drawing.ControlShape")
  oControlModel = thiscomponent.createInstance( "com.sun.star.form.component.FixedText" )
  btn.control = oControlModel

  btn.Size = aSize
  btn.Position = aPoint

  btn.Control.Label = "Klick mich"
 btn.Control.BackgroundColor  =RGB(10,150,200)
 btn.Control.Name= "MyNameIsNonsens"
 btn.Control.Border=2
  oPage.add(btn)

  oForm = btn.control.parent

  nIndex = oForm.Count-1 'Der Button wurde soeben eingefügt, deshalb ist es sehr wahrscheinlich, dass er das letzte Element der Controls-Liste der Form ist.

  Dim oEvent as new com.sun.star.script.ScriptEventDescriptor
  oEvent.ListenerType = "com.sun.star.awt.XMouseListener"
  oEvent.EventMethod = "mousePressed"
  oEvent.ScriptType = "StarBasic"
  oEvent.ScriptCode = "vnd.sun.star.script:Standard.Module2.test4"
  oForm.registerScriptEvent(nIndex, oEvent)

  thiscomponent.currentcontroller.setformdesignmode(false)

end sub

sub test4(oEvent)
MsgBox "Hallo"
end sub
Der Code ist noch nicht ganz sauber, da ich ihn mir nur von hier geholt habe,
und lediglich ein par Änderungen gemacht habe.Er läuft zwar stabile, ist aber sehr unübersichtlich.
(ich war zu faul alles neu zu schreiben.)

Gruß Frieder
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Maggus »

Frieder D. hat geschrieben:Es sieht genauso aus wie ein Rechteck,...
Da liegt das Problem: ich habe dem Shape ein GradientStyle verpasst. Das geht bei einem Beschriftungsfeld wohl nicht. :( Die anhängende Datei macht deutlich wo mein Begehr ist.

Jetzt würde mich echt interessieren, ob das bei dir funktioniert...

Gruß,
Dateianhänge
createGradientShape.ods
(11.32 KiB) 202-mal heruntergeladen
Maggus (:o)
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Die verschiedenen Arten der Zuweisung von EventListenern

Beitrag von Maggus »

Frieder D. hat geschrieben:hier ein Beispiel mit einem Beschriftungsfeld
Ja, letztens, wo du mir HIER diesen guten Tipp gegeben hast, war das perfekt, da ein Beschriftungsfeld komplett unsichtbar gemacht werden kann.

In diesem Fall aber leider weniger brauchbar, da optisch nicht ansprechend gestaltbar..

Gruß,
Maggus (:o)
Antworten