Listener für ein Tabellen Kontrollfeld (GridControl)

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Listener für ein Tabellen Kontrollfeld (GridControl)

Re: Listener für ein Tabellen Kontrollfeld (GridControl)

von slotty » Mo, 19.09.2011 14:06

Hallo DPunch,

sehr schön, dieses Event scheint mir besser geeignet. Vielen Dank.
Der Listener bleibt aber bei dem von mir beschriebenen Verhalten.
Sollte es da Unterschiede zwischen 3.2 und 3.3 geben ?

Gruß

Slotty

Re: Listener für ein Tabellen Kontrollfeld (GridControl)

von DPunch » Mo, 19.09.2011 13:33

Aloha

Was ist denn Dein Ziel?
Soll nur darauf reagiert werden, wenn Du die Zeile wechselst? Wenn ja, dann nimm doch einfach eins der Formular-Events (z.B. "Nach dem Datensatzwechsel").
slotty hat geschrieben:Leider nicht so wie ich es erwartet hätte. Er reagiert nämlich auf die Selektion von Spalten und auch nur wenn man in die Spaltenköpfe klickt. Ob das ein Bug oder ein Feature ist vermag ich nicht zu sagen. Da man aber im Allgemeinen in einer Tabelle Zeilen selektiert hat es mich schon verwundert. Schade, so kann ich ihn nicht gebrauchen.
Kann ich so nicht bestätigen, der SelectionChangeListener feuert bei mir (OOo 3.2.1, Win XP) bei jedweder Änderung der Selektion - ob nun ein Spaltenkopf angeklickt wurde, ein Zeilenkopf oder eine Zelle.

Re: Listener für ein Tabellen Kontrollfeld (GridControl)

von slotty » Mo, 19.09.2011 09:14

Hallo liebe Unterstützer,

es hat mir natürlich keine Ruhe gelassen.

@F3K Total
Das von dir genannte Ereignis liefert vom Prinzip das was ich suchte. Unschön ist nur, und das war es was ich nicht wollte, dass auch ein Event erzeugt wird wenn du in den Rand des Objektes klickst. Eine weitere Unschönheit ist, dass du bei jedem Klick ein Event erhälst und nicht nur wenn die Auswahl geändert wurde. Daher mein Versuch mit dem Listener. Aber alles Gute ist nie beisammen und daher werde ich mit deinem Vorschlag leben müssen.
Übrigens, das
oselection=event.source.selection
hat bei mir zu einem Fehler geführt

Mit
oselection=event.source.model.RowSet
erhalte ich aber Zugriff auf die Daten der gewählte Zeile.

Zudem hat Gevater Zufall wieder mitgespielt. Beim Ausprobieren habe ich neue Erkenntnisse zum Listener gewonnen.
1. Er funktioniert so wie ich ihn angemeldet habe.
2. Leider nicht so wie ich es erwartet hätte. Er reagiert nämlich auf die Selektion von Spalten und auch nur wenn man in die Spaltenköpfe klickt. Ob das ein Bug oder ein Feature ist vermag ich nicht zu sagen. Da man aber im Allgemeinen in einer Tabelle Zeilen selektiert hat es mich schon verwundert. Schade, so kann ich ihn nicht gebrauchen.

Gruß

Slotty

Re: Listener für ein Tabellen Kontrollfeld (GridControl)

von slotty » Mo, 19.09.2011 08:17

Hallo komma4,

da ich bei den Ereignissen für das Objekt nicht "Aktion bestätigen" zur Verfügung hatte, habe ich mich nach dieser Vorgehensweise umgeschaut. Das Objekt besitzt ja auch die Methode "addSelectionChangeListener" dem das Interface "XSelectionChangeListener" übergeben wird. Dieses wiederum unterstützt die von mir definierte Sub "selectionChanged".
Von daher sehe ich meinen Fehler bislang noch nicht.
Aber du hast recht das Event wird nicht gemeldet.

@F3K Total
Danke für den Hinweis. Ich werde mal schauen ob es das leistet was ich benötige.
Werde dann Bericht erstatten.

Gruß

Slotty

Re: Listener für ein Tabellen Kontrollfeld (GridControl)

von F3K Total » So, 18.09.2011 19:57

Hallo,
ich weiß zwar nicht genau was du vorhast, trotzdem folgender Hinweis:
Wenn Du einer Spalte des Grids dem Ereignis "Maustaste losgelassen" den Code

Code: Alles auswählen

Sub find_selection (event)
oselection=event.source.selection
xray oselection
end sub
siehst du die Selection.
HTH
Gruß R

Re: Listener für ein Tabellen Kontrollfeld (GridControl)

von komma4 » So, 18.09.2011 17:18

Im BEARBEITEN-Modus eines TableGrids sehe ich kein Ereignis Selection Changed.

Kann das sein, dass Du den Listener zwar registrieren kannst, das Ereignis aber nicht ausgewählt wird?

Listener für ein Tabellen Kontrollfeld (GridControl)

von slotty » Mi, 14.09.2011 11:56

Hallo miteinander,

seit geraumer Zeit versuche ich unter OO3.3m20 die Selektionsänderung in einem Tabellen Kontrollfeld mitgeteilt zu bekommen um anschließend davon abhängige Formularobjekte anzupassen.
Das Tabellenkontrollfeld TK1 befindet sich dabei in dem Formular frmTabkont.

Als Lösungsansatz habe ich einen Listener in folgender Form angemeldet:

Code: Alles auswählen

Global vSelChangeListener 
Global vSelChangeBroadCast

Dim sPrefix$
Dim sService$
dim vForm as object

sPrefix = "sel_change_"
sService = "com.sun.star.view.XSelectionChangeListener"

vForm = ThisComponent.DrawPage.Forms.GetByName( "frmTabkont" )
vSelChangeBroadCast = vForm.getbyName("TK1")

vSelChangeListener = CreateUnoListener(sPrefix, sService)
vSelChangeBroadCast.addSelectionChangeListener(vSelChangeListener)
Ferner existieren die Subs:

Code: Alles auswählen

Sub sel_change_disposing(vEvent)
Sub sel_change_selectionChanged(vEvent)
Die Anmeldung des Listeners erfolgt fehlerfrei. Leider wird aber bei einer Änderung der selektierten Zeile kein Aufruf der entsprechenden Sub durchgeführt.

Für Ideen oder weiterführende Debuggingmöglichkeiten wäre ich dankbar.

Gruß

Slotty



Moderation,4: CODE tags gesetzt

Nach oben