Listener überwachen nur einer Spalte

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

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Listener überwachen nur einer Spalte

Beitrag von clag »

Hallo Leute

von Turtle47 habe ich diesen Code um in einer Tabelle Zellen zu überwachen

wie kann ich die Überwachung einer Spalte oder einen Bereich definieren
wo und was müsste ich da noch neuen oder anderen Code einfügen
zB ganze Spalte oder ein Bereich F10:E1000

Code: Alles auswählen

Sub initializeListener
	oListener = CreateUnoListener( "ClicListener_", "com.sun.star.view.XSelectionChangeListener" )
	oDocument = ThisComponent
	oDocument.getCurrentController.addSelectionChangeListener(oListener)
End Sub

Sub remove_Listener
	'Den Listener zu deaktivieren funktioniert leider nicht.
	'Dieser wird aber automatisch beendendet wenn das Dok geschlossen wird
	'remove the listener from controller
	'oDocument = ThisComponent   
	'oDocument.removeSelectionChangeListener(oListener)
End Sub


Sub ClicListener_selectionChanged(oEvent)
	Dim Selection As Object
	Dim bTest as Boolean
'	wait 200
	oSelection = oEvent.source.selection
	if oSelection.supportsService ("com.sun.star.sheet.SheetCell") then
	Doc = thisComponent
	mySheet = Doc.Sheets(0)
	oResentSelectedROw = oSelection.CellAddress.row
	oResentSelectedColnum = oSelection.CellAddress.Column
	CellString = oSelection.string
    if len (cellstring) > 0 then
    "DIESE AKTION"	
	end if
	end if
End Sub
schon mal Danke vorweg
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Listener überwachen nur einer Spalte

Beitrag von clag »

Moin Leutz

hey ich will doch nicht eure Konto Nummern haben :lol:

ich möchte doch nur von euch wissen wie der Code auszusehen hat
damit ein Listener einen definierten Bereich überwacht

nach stunden googlen habe ich folgendes Konkrete zum Thema gefunden
http://www.mail-archive.com/users@de.op ... 33703.html
'Zellbereich:
Sub Listener_registrieren()
objekt = ThisComponent.Sheets(0).GetCellRangeByName("A1:E10")
oCrngData = CreateUnoListener("CrngListener_","com.sun.star.util.XModifyListener")
objekt.addModifyListener(oCrngData)
End Sub
aber wenn ich den code aus Turtles47 Beispiel so abändere ändert sich leider nichts am verhalten
und der Listener reagiert weiter auf alle Zelle der Tabelle
Sub initializeListener
oListener = CreateUnoListener( "ClicListener_", "com.sun.star.view.XSelectionChangeListener" )
oDocument = ThisComponent.Sheets(0).GetCellRangeByName("E1:E10")
oDocument.getCurrentController.addSelectionChangeListener(oListener)
End Sub
seit doch nicht so grausam zu mir und lasst mich wissen wie es richtig gemacht wird :roll:

ich wüsste auch noch gern ob der Listener unterscheiden kann
ob eine Zelle den Focus(Cursor) erhält oder verliert
wenn ja wie man da auswertet
also praktisch zwei Makros ausführen
ein Makro mit der Adresse für die Zelle mit Focusverlust
und ein Makro mit Adresse der Zelle die den Focus bekommt ?

Im Idealfall sollte der Listener nur in einem definierten Bereich aktiv sein
und unterscheiden können ob eine Zelle den Focus erhält oder verliert

Ich hoffe ihr lasst mich nicht als StarBasic DAU sterben :wink:
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten