Re: [de-users] Listener im Dialog benutzen

2022-09-10 Diskussionsfäden Stefan Deutsch

HI Thomas,

hab den Fehler gefunden. Ich hab mein GridModel mit oGridModel =
oKommDia.Model.getByName("GridAnzeigeKommission") erstellt, du mit
oGridModel =
oDlg.Model.createInstance("com.sun.star.awt.grid.UnoControlGridModel").
Wenn ich das in meinem Code ändere, schlägt der Listener an. Muss noch
ein bisschen was anpassen, dann sollte mein Code klappen.

Danke für die Unterstützung!

Stefan

Am 10.09.2022 um 13:09 schrieb Stefan Deutsch:

Danke Thomas,

deine Tabelle klappt ohne Probleme. Ich werd nochmal drüber brüten, was
da genau anders ist und melde mich, wenn ich den Fehler gefunden hab.

Viele Grüße

Stefan

Am 10.09.2022 um 12:55 schrieb Thomas Krumbein:

Hei Stefan,

also ich weiss nicht. Ich schicke Dir mal direkt eine Calc-Datei in
die ich gerade den Listener eingebaut habe - gibt lediglich die msgbox
mit der markierten Zeile aus - funktioniert bei mir (Win 10) problemlos.

Wenn die bei Dir auch nicht geht... dann haste ne Problem;))

Viele Grüße

Thomas

Am 10.09.2022 um 12:42 schrieb Stefan Deutsch:

Hi Thomas,

war unsinnige Frage von mir. Du hast das in deinem Buch ja ausführlich
erklärt. Hab den Listener jetzt erst direkt vor dem execute zugefügt.
Dann hab ich aus dem Sub einfach mal alles rausgeschmissen und eine
einzige Tabellenzeile händisch befüllt und den Dialog nicht mehr über
ein anderes Sub sondern direkt mit Button aufgerufen. Am Verhalten
ändert sich nichts. Jetzt wollte ich es gerade unter Knopix testen, um
auszuschließen, ob es nicht am Windows-Betriebssystem liegt. Leider
fehlt da der Datenbanktreiber. Wär einer der Linux-User bereit, die
Datenbank mal kurz zu testen?

Viele Grüße Stefan

Am 09.09.2022 um 21:55 schrieb Thomas Krumbein:

Hei Stefan,

ja, ich nutze den Listener problemlos. Ich habe einen großen Dialog,
das Gridelement wird über eine Datenbank gefüllt. Der Dialog mit
execute() ausgeführt.

Teil des Codes hatte ich ja gepostet.

Der Listener reagiert korrekt, liefert den angeklickten Datensatz
zurück (der kommt dann in einen neuen Dialog für Weiterverarbeitung) -
der Hauptdialog bleibt bestehen.

Also, das funktioniert alles problemlos.

Im Grunde sieht Dein Code ziemlich ähnlich aus. Es gibt noch einen
Unterschied... Versuch könnte es wert sein:

Mein Listener wird ganz zum Schluss registriert - nach dem kompletten
Zusammenbau des Grids:

...

 oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)
  REM Größe und Position vom Rahmen frm_tab

  With oRaDlg.getControl("frm_tab").getPosSize()
    oGridControl.setPosSize(.X,.Y,.Width,.Height,
com.sun.star.awt.PosSize.POSSIZE)
  End with

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_",
"com.sun.star.awt.grid.XGridSelectionListener")

  oGridControl.addSelectionListener(oReAbgLis)

  oRADlg.execute()

Bei Dir änderst Du nach dem Registrieren des Listeners noch etwas am
Grid - das könnte den Listener schon auslösen!

Ich ändere nach der Auswahl eines Datensatzes ebenfalls den Datensatz
- in dem Fall wird der listener ebenfalls ausgelöst - was ich aber
nicht brauchen kann. Da arbeite ich mit Flags. Aber das ist zunächst
nicht wirklich wichtig - noch testest Du ja nur;)

Also, bei mir funktioniert es über alle Versionen (seit etwa 4.6 oder
so) - bin allerdings derzeit noch bei der 7.0.2.2 - vielleicht liegt
es an Deiner Version?

Viele Grüße

Thomas


Am 09.09.2022 um 21:04 schrieb Stefan Deutsch:

Hi Thomas,

nein ich habe keine Fehlermeldungen unterdrückt. Hab auch einfach mal
alles auskommentiert, außer den Print. Aber der kommt auch nicht.
Hast
du denn mal einen Listener in einem Dialog genutzt, der über excute
ausgeführt wird? Mich macht halt stutzig, dass disposing ausgeführt
wird, wenn ich den Dialog beende. Hab ebend auch mal den Dialog über
setVisible mit wait ausgeführt. Das ändert aber nichts.

Vielleicht fällt mir morgen noch was ein, sonst werde ich mal den Weg
versuchen, den Robert im Handbuch beschreibt.

Viele Grüße

Stefan






--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com



--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-10 Diskussionsfäden Stefan Deutsch

Danke Thomas,

deine Tabelle klappt ohne Probleme. Ich werd nochmal drüber brüten, was
da genau anders ist und melde mich, wenn ich den Fehler gefunden hab.

Viele Grüße

Stefan

Am 10.09.2022 um 12:55 schrieb Thomas Krumbein:

Hei Stefan,

also ich weiss nicht. Ich schicke Dir mal direkt eine Calc-Datei in
die ich gerade den Listener eingebaut habe - gibt lediglich die msgbox
mit der markierten Zeile aus - funktioniert bei mir (Win 10) problemlos.

Wenn die bei Dir auch nicht geht... dann haste ne Problem;))

Viele Grüße

Thomas

Am 10.09.2022 um 12:42 schrieb Stefan Deutsch:

Hi Thomas,

war unsinnige Frage von mir. Du hast das in deinem Buch ja ausführlich
erklärt. Hab den Listener jetzt erst direkt vor dem execute zugefügt.
Dann hab ich aus dem Sub einfach mal alles rausgeschmissen und eine
einzige Tabellenzeile händisch befüllt und den Dialog nicht mehr über
ein anderes Sub sondern direkt mit Button aufgerufen. Am Verhalten
ändert sich nichts. Jetzt wollte ich es gerade unter Knopix testen, um
auszuschließen, ob es nicht am Windows-Betriebssystem liegt. Leider
fehlt da der Datenbanktreiber. Wär einer der Linux-User bereit, die
Datenbank mal kurz zu testen?

Viele Grüße Stefan

Am 09.09.2022 um 21:55 schrieb Thomas Krumbein:

Hei Stefan,

ja, ich nutze den Listener problemlos. Ich habe einen großen Dialog,
das Gridelement wird über eine Datenbank gefüllt. Der Dialog mit
execute() ausgeführt.

Teil des Codes hatte ich ja gepostet.

Der Listener reagiert korrekt, liefert den angeklickten Datensatz
zurück (der kommt dann in einen neuen Dialog für Weiterverarbeitung) -
der Hauptdialog bleibt bestehen.

Also, das funktioniert alles problemlos.

Im Grunde sieht Dein Code ziemlich ähnlich aus. Es gibt noch einen
Unterschied... Versuch könnte es wert sein:

Mein Listener wird ganz zum Schluss registriert - nach dem kompletten
Zusammenbau des Grids:

...

 oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)
  REM Größe und Position vom Rahmen frm_tab

  With oRaDlg.getControl("frm_tab").getPosSize()
    oGridControl.setPosSize(.X,.Y,.Width,.Height,
com.sun.star.awt.PosSize.POSSIZE)
  End with

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_",
"com.sun.star.awt.grid.XGridSelectionListener")

  oGridControl.addSelectionListener(oReAbgLis)

  oRADlg.execute()

Bei Dir änderst Du nach dem Registrieren des Listeners noch etwas am
Grid - das könnte den Listener schon auslösen!

Ich ändere nach der Auswahl eines Datensatzes ebenfalls den Datensatz
- in dem Fall wird der listener ebenfalls ausgelöst - was ich aber
nicht brauchen kann. Da arbeite ich mit Flags. Aber das ist zunächst
nicht wirklich wichtig - noch testest Du ja nur;)

Also, bei mir funktioniert es über alle Versionen (seit etwa 4.6 oder
so) - bin allerdings derzeit noch bei der 7.0.2.2 - vielleicht liegt
es an Deiner Version?

Viele Grüße

Thomas


Am 09.09.2022 um 21:04 schrieb Stefan Deutsch:

Hi Thomas,

nein ich habe keine Fehlermeldungen unterdrückt. Hab auch einfach mal
alles auskommentiert, außer den Print. Aber der kommt auch nicht. Hast
du denn mal einen Listener in einem Dialog genutzt, der über excute
ausgeführt wird? Mich macht halt stutzig, dass disposing ausgeführt
wird, wenn ich den Dialog beende. Hab ebend auch mal den Dialog über
setVisible mit wait ausgeführt. Das ändert aber nichts.

Vielleicht fällt mir morgen noch was ein, sonst werde ich mal den Weg
versuchen, den Robert im Handbuch beschreibt.

Viele Grüße

Stefan






--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com

--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-10 Diskussionsfäden Thomas Krumbein

Hei Stefan,

also ich weiss nicht. Ich schicke Dir mal direkt eine Calc-Datei in die 
ich gerade den Listener eingebaut habe - gibt lediglich die msgbox mit 
der markierten Zeile aus - funktioniert bei mir (Win 10) problemlos.


Wenn die bei Dir auch nicht geht... dann haste ne Problem;))

Viele Grüße

Thomas

Am 10.09.2022 um 12:42 schrieb Stefan Deutsch:

Hi Thomas,

war unsinnige Frage von mir. Du hast das in deinem Buch ja ausführlich
erklärt. Hab den Listener jetzt erst direkt vor dem execute zugefügt.
Dann hab ich aus dem Sub einfach mal alles rausgeschmissen und eine
einzige Tabellenzeile händisch befüllt und den Dialog nicht mehr über
ein anderes Sub sondern direkt mit Button aufgerufen. Am Verhalten
ändert sich nichts. Jetzt wollte ich es gerade unter Knopix testen, um
auszuschließen, ob es nicht am Windows-Betriebssystem liegt. Leider
fehlt da der Datenbanktreiber. Wär einer der Linux-User bereit, die
Datenbank mal kurz zu testen?

Viele Grüße Stefan

Am 09.09.2022 um 21:55 schrieb Thomas Krumbein:

Hei Stefan,

ja, ich nutze den Listener problemlos. Ich habe einen großen Dialog,
das Gridelement wird über eine Datenbank gefüllt. Der Dialog mit
execute() ausgeführt.

Teil des Codes hatte ich ja gepostet.

Der Listener reagiert korrekt, liefert den angeklickten Datensatz
zurück (der kommt dann in einen neuen Dialog für Weiterverarbeitung) -
der Hauptdialog bleibt bestehen.

Also, das funktioniert alles problemlos.

Im Grunde sieht Dein Code ziemlich ähnlich aus. Es gibt noch einen
Unterschied... Versuch könnte es wert sein:

Mein Listener wird ganz zum Schluss registriert - nach dem kompletten
Zusammenbau des Grids:

...

 oGridControl = createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)
  REM Größe und Position vom Rahmen frm_tab

  With oRaDlg.getControl("frm_tab").getPosSize()
    oGridControl.setPosSize(.X,.Y,.Width,.Height,
com.sun.star.awt.PosSize.POSSIZE)
  End with

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_",
"com.sun.star.awt.grid.XGridSelectionListener")

  oGridControl.addSelectionListener(oReAbgLis)

  oRADlg.execute()

Bei Dir änderst Du nach dem Registrieren des Listeners noch etwas am
Grid - das könnte den Listener schon auslösen!

Ich ändere nach der Auswahl eines Datensatzes ebenfalls den Datensatz
- in dem Fall wird der listener ebenfalls ausgelöst - was ich aber
nicht brauchen kann. Da arbeite ich mit Flags. Aber das ist zunächst
nicht wirklich wichtig - noch testest Du ja nur;)

Also, bei mir funktioniert es über alle Versionen (seit etwa 4.6 oder
so) - bin allerdings derzeit noch bei der 7.0.2.2 - vielleicht liegt
es an Deiner Version?

Viele Grüße

Thomas


Am 09.09.2022 um 21:04 schrieb Stefan Deutsch:

Hi Thomas,

nein ich habe keine Fehlermeldungen unterdrückt. Hab auch einfach mal
alles auskommentiert, außer den Print. Aber der kommt auch nicht. Hast
du denn mal einen Listener in einem Dialog genutzt, der über excute
ausgeführt wird? Mich macht halt stutzig, dass disposing ausgeführt
wird, wenn ich den Dialog beende. Hab ebend auch mal den Dialog über
setVisible mit wait ausgeführt. Das ändert aber nichts.

Vielleicht fällt mir morgen noch was ein, sonst werde ich mal den Weg
versuchen, den Robert im Handbuch beschreibt.

Viele Grüße

Stefan




--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-10 Diskussionsfäden Stefan Deutsch

Hi Thomas,

war unsinnige Frage von mir. Du hast das in deinem Buch ja ausführlich
erklärt. Hab den Listener jetzt erst direkt vor dem execute zugefügt.
Dann hab ich aus dem Sub einfach mal alles rausgeschmissen und eine
einzige Tabellenzeile händisch befüllt und den Dialog nicht mehr über
ein anderes Sub sondern direkt mit Button aufgerufen. Am Verhalten
ändert sich nichts. Jetzt wollte ich es gerade unter Knopix testen, um
auszuschließen, ob es nicht am Windows-Betriebssystem liegt. Leider
fehlt da der Datenbanktreiber. Wär einer der Linux-User bereit, die
Datenbank mal kurz zu testen?

Viele Grüße Stefan

Am 09.09.2022 um 21:55 schrieb Thomas Krumbein:

Hei Stefan,

ja, ich nutze den Listener problemlos. Ich habe einen großen Dialog,
das Gridelement wird über eine Datenbank gefüllt. Der Dialog mit
execute() ausgeführt.

Teil des Codes hatte ich ja gepostet.

Der Listener reagiert korrekt, liefert den angeklickten Datensatz
zurück (der kommt dann in einen neuen Dialog für Weiterverarbeitung) -
der Hauptdialog bleibt bestehen.

Also, das funktioniert alles problemlos.

Im Grunde sieht Dein Code ziemlich ähnlich aus. Es gibt noch einen
Unterschied... Versuch könnte es wert sein:

Mein Listener wird ganz zum Schluss registriert - nach dem kompletten
Zusammenbau des Grids:

...

 oGridControl = createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)
  REM Größe und Position vom Rahmen frm_tab

  With oRaDlg.getControl("frm_tab").getPosSize()
    oGridControl.setPosSize(.X,.Y,.Width,.Height,
com.sun.star.awt.PosSize.POSSIZE)
  End with

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_",
"com.sun.star.awt.grid.XGridSelectionListener")

  oGridControl.addSelectionListener(oReAbgLis)

  oRADlg.execute()

Bei Dir änderst Du nach dem Registrieren des Listeners noch etwas am
Grid - das könnte den Listener schon auslösen!

Ich ändere nach der Auswahl eines Datensatzes ebenfalls den Datensatz
- in dem Fall wird der listener ebenfalls ausgelöst - was ich aber
nicht brauchen kann. Da arbeite ich mit Flags. Aber das ist zunächst
nicht wirklich wichtig - noch testest Du ja nur;)

Also, bei mir funktioniert es über alle Versionen (seit etwa 4.6 oder
so) - bin allerdings derzeit noch bei der 7.0.2.2 - vielleicht liegt
es an Deiner Version?

Viele Grüße

Thomas


Am 09.09.2022 um 21:04 schrieb Stefan Deutsch:

Hi Thomas,

nein ich habe keine Fehlermeldungen unterdrückt. Hab auch einfach mal
alles auskommentiert, außer den Print. Aber der kommt auch nicht. Hast
du denn mal einen Listener in einem Dialog genutzt, der über excute
ausgeführt wird? Mich macht halt stutzig, dass disposing ausgeführt
wird, wenn ich den Dialog beende. Hab ebend auch mal den Dialog über
setVisible mit wait ausgeführt. Das ändert aber nichts.

Vielleicht fällt mir morgen noch was ein, sonst werde ich mal den Weg
versuchen, den Robert im Handbuch beschreibt.

Viele Grüße

Stefan




--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com

--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-09 Diskussionsfäden Thomas Krumbein

Hei Stefan,

ja, ich nutze den Listener problemlos. Ich habe einen großen Dialog, das 
Gridelement wird über eine Datenbank gefüllt. Der Dialog mit execute() 
ausgeführt.


Teil des Codes hatte ich ja gepostet.

Der Listener reagiert korrekt, liefert den angeklickten Datensatz zurück 
(der kommt dann in einen neuen Dialog für Weiterverarbeitung) - der 
Hauptdialog bleibt bestehen.


Also, das funktioniert alles problemlos.

Im Grunde sieht Dein Code ziemlich ähnlich aus. Es gibt noch einen 
Unterschied... Versuch könnte es wert sein:


Mein Listener wird ganz zum Schluss registriert - nach dem kompletten 
Zusammenbau des Grids:


...

 oGridControl = createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)
  REM Größe und Position vom Rahmen frm_tab

  With oRaDlg.getControl("frm_tab").getPosSize()
    oGridControl.setPosSize(.X,.Y,.Width,.Height, 
com.sun.star.awt.PosSize.POSSIZE)

  End with

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_", 
"com.sun.star.awt.grid.XGridSelectionListener")


  oGridControl.addSelectionListener(oReAbgLis)

  oRADlg.execute()

Bei Dir änderst Du nach dem Registrieren des Listeners noch etwas am 
Grid - das könnte den Listener schon auslösen!


Ich ändere nach der Auswahl eines Datensatzes ebenfalls den Datensatz - 
in dem Fall wird der listener ebenfalls ausgelöst - was ich aber nicht 
brauchen kann. Da arbeite ich mit Flags. Aber das ist zunächst nicht 
wirklich wichtig - noch testest Du ja nur;)


Also, bei mir funktioniert es über alle Versionen (seit etwa 4.6 oder 
so) - bin allerdings derzeit noch bei der 7.0.2.2 - vielleicht liegt es 
an Deiner Version?


Viele Grüße

Thomas


Am 09.09.2022 um 21:04 schrieb Stefan Deutsch:

Hi Thomas,

nein ich habe keine Fehlermeldungen unterdrückt. Hab auch einfach mal
alles auskommentiert, außer den Print. Aber der kommt auch nicht. Hast
du denn mal einen Listener in einem Dialog genutzt, der über excute
ausgeführt wird? Mich macht halt stutzig, dass disposing ausgeführt
wird, wenn ich den Dialog beende. Hab ebend auch mal den Dialog über
setVisible mit wait ausgeführt. Das ändert aber nichts.

Vielleicht fällt mir morgen noch was ein, sonst werde ich mal den Weg
versuchen, den Robert im Handbuch beschreibt.

Viele Grüße

Stefan 


--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-09 Diskussionsfäden Stefan Deutsch

Hi Thomas,

nein ich habe keine Fehlermeldungen unterdrückt. Hab auch einfach mal
alles auskommentiert, außer den Print. Aber der kommt auch nicht. Hast
du denn mal einen Listener in einem Dialog genutzt, der über excute
ausgeführt wird? Mich macht halt stutzig, dass disposing ausgeführt
wird, wenn ich den Dialog beende. Hab ebend auch mal den Dialog über
setVisible mit wait ausgeführt. Das ändert aber nichts.

Vielleicht fällt mir morgen noch was ein, sonst werde ich mal den Weg
versuchen, den Robert im Handbuch beschreibt.

Viele Grüße

Stefan

Am 09.09.2022 um 16:41 schrieb Thomas Krumbein:

Hey Stefan,

vielleicht liegt der Fehler ganz woanders? Hast Du evt im Makro
irgendwo Basic-Fehlermeldungen unterdrückt?

so etwas wie .. on error resume next  oder so?

In dem Code

Sub sel_change_selectionChanged(vEvent)
    Dim vCurrentSelection As Object
   vCurrentSelection =  vEvent.source.CurrentRow
   MsgBox "Selected Row = " & vEvent.source.CurrentRow
print 27
End Sub

zumindest dürfte das mit dem vCurrentSelection nicht funktionieren.
Die Variable ist als Objekt definiert, die Zuweisung liefert aber
einen Long-Wert zurück. Sollte eigentlich ne Basic-Fehler ergeben und
somit einen Stop des Makros.

Kommentiere mal die beiden Zeilen "Dim..." und "vCurrentSelection"
aus. Die Zeile mit der msgbox müsste eigentlich funktioniern.

Viele Grüße

Thomas


Am 09.09.2022 um 10:30 schrieb Stefan Deutsch:

Hi Thomas,

ich hab es sowohl als Global als auch mit Public probiert. Sie stehen
auch als erstes in dem Modul. Das kuriose ist ja, dass der disposing
anschlägt, wenn ich den Dialog über das Kreuz schließe. Ich hab Präfix
auch nochmal geändert in myselChange_. Das sollte wirklich eindeutig
sein. Werde später nochmal eine andere LiBo-Version ausprobieren, ob es
daran liegt.

Viele Grüße

Stefan
[..]


Am 08.09.2022 um 20:50 schrieb Stefan Deutsch:

Hi Thomas,

Hier mal die letzten Zeilen des Makros, in dem das GridControl mit
Inhalt gefüllt wird. Soweit ich das sehe, hab ich das vom Ablauf
gemacht
wie du in deinem Beispiel.

    oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
    oGridControl.setModel(oGridModel)
    oKommDia.addControl("GridAnzeigeKommission", oGridControl)
    oGridDataModel =
oKommDia.Model.getByName("GridAnzeigeKommission").GridDataModel

'Run this macro to start event intercepting
  sPrefix = "sel_change_"
  sService = "com.sun.star.awt.grid.XGridSelectionListener"

  'Create a listener to intercept the selection change events
  vSelChangeListener = CreateUnoListener(sPrefix, sService)

  'Register the listener to the document controller
oGridControl.addSelectionListener(vSelChangeListener)

    iData = oGridDataModel.getCellData(3, iRowAktuell)
    oKommDia.getControl("nf_ausgefasst").Value = iData
    oKommDia.Controls(7).deselectAllRows
    oKommDia.Controls(7).selectRow(iRowAktuell)
    oKommDia.execute()
End Sub

Und hier die beiden Subs. disposing wird auch ausgeführt, wenn
ich den
Dialog über das X beende.

Sub sel_change_disposing(vEvent)
print 21
End Sub

Sub sel_change_selectionChanged(vEvent)
    Dim vCurrentSelection As Object
   vCurrentSelection =  vEvent.source.CurrentRow
   MsgBox "Selected Row = " & vEvent.source.CurrentRow
print 27
End Sub
[..]




--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com

--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-09 Diskussionsfäden Thomas Krumbein

Hey Stefan,

vielleicht liegt der Fehler ganz woanders? Hast Du evt im Makro irgendwo 
Basic-Fehlermeldungen unterdrückt?


so etwas wie .. on error resume next  oder so?

In dem Code

Sub sel_change_selectionChanged(vEvent)
    Dim vCurrentSelection As Object
   vCurrentSelection =  vEvent.source.CurrentRow
   MsgBox "Selected Row = " & vEvent.source.CurrentRow
print 27
End Sub

zumindest dürfte das mit dem vCurrentSelection nicht funktionieren. Die 
Variable ist als Objekt definiert, die Zuweisung liefert aber einen 
Long-Wert zurück. Sollte eigentlich ne Basic-Fehler ergeben und somit 
einen Stop des Makros.


Kommentiere mal die beiden Zeilen "Dim..." und "vCurrentSelection" 
aus. Die Zeile mit der msgbox müsste eigentlich funktioniern.


Viele Grüße

Thomas


Am 09.09.2022 um 10:30 schrieb Stefan Deutsch:

Hi Thomas,

ich hab es sowohl als Global als auch mit Public probiert. Sie stehen
auch als erstes in dem Modul. Das kuriose ist ja, dass der disposing
anschlägt, wenn ich den Dialog über das Kreuz schließe. Ich hab Präfix
auch nochmal geändert in myselChange_. Das sollte wirklich eindeutig
sein. Werde später nochmal eine andere LiBo-Version ausprobieren, ob es
daran liegt.

Viele Grüße

Stefan
[..]


Am 08.09.2022 um 20:50 schrieb Stefan Deutsch:

Hi Thomas,

Hier mal die letzten Zeilen des Makros, in dem das GridControl mit
Inhalt gefüllt wird. Soweit ich das sehe, hab ich das vom Ablauf
gemacht
wie du in deinem Beispiel.

    oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
    oGridControl.setModel(oGridModel)
    oKommDia.addControl("GridAnzeigeKommission", oGridControl)
    oGridDataModel =
oKommDia.Model.getByName("GridAnzeigeKommission").GridDataModel

'Run this macro to start event intercepting
  sPrefix = "sel_change_"
  sService = "com.sun.star.awt.grid.XGridSelectionListener"

  'Create a listener to intercept the selection change events
  vSelChangeListener = CreateUnoListener(sPrefix, sService)

  'Register the listener to the document controller
oGridControl.addSelectionListener(vSelChangeListener)

    iData = oGridDataModel.getCellData(3, iRowAktuell)
    oKommDia.getControl("nf_ausgefasst").Value = iData
    oKommDia.Controls(7).deselectAllRows
    oKommDia.Controls(7).selectRow(iRowAktuell)
    oKommDia.execute()
End Sub

Und hier die beiden Subs. disposing wird auch ausgeführt, wenn ich 
den

Dialog über das X beende.

Sub sel_change_disposing(vEvent)
print 21
End Sub

Sub sel_change_selectionChanged(vEvent)
    Dim vCurrentSelection As Object
   vCurrentSelection =  vEvent.source.CurrentRow
   MsgBox "Selected Row = " & vEvent.source.CurrentRow
print 27
End Sub
[..]


--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-09 Diskussionsfäden Stefan Deutsch

Hi Thomas,

ich hab es sowohl als Global als auch mit Public probiert. Sie stehen
auch als erstes in dem Modul. Das kuriose ist ja, dass der disposing
anschlägt, wenn ich den Dialog über das Kreuz schließe. Ich hab Präfix
auch nochmal geändert in myselChange_. Das sollte wirklich eindeutig
sein. Werde später nochmal eine andere LiBo-Version ausprobieren, ob es
daran liegt.

Viele Grüße

Stefan

Am 09.09.2022 um 07:21 schrieb Thomas Krumbein:

Hey Stefan,

noch eine Frage/Lösungsansatz:  Ist Dein Listener (vSelChangeListener)
auch als globale Variable definiert? Also so etwas wie

public vSelChangeListener as variant   'Listener für die Auswahl

vor allen Makros?

Sonst geht es nicht...

Viele Grüße

Thomas


Am 08.09.2022 um 21:49 schrieb Stefan Deutsch:

Hi Tomas,

das hab ich gerade mal probiert, aber das Ergebnis bleibt leider das
Gleiche. Ich werde morgen mal den Vorschlag von RObert aus dem Handbuch
probieren.

Schönen Abend noch

Stefan

Am 08.09.2022 um 21:15 schrieb Thomas Krumbein:

Hey Stefan,

jo, sieht gut aus.

Das mit dem Print nach dem Execute() Befehlt ist normal. Das Makro
bleibt bei execute() stehen und läuft erst weiter, wenn der Dialog
wieder geschlossen wird. Das ist also alles korrekt.

Wenn es keine anderen Fehler gibt oder ich die nicht sehe, versuche
mal folgendes: Benenne den Listener anders, also, gib ihm eine andere
Prefix - so etwas wie "Test123_". Vielleicht wird der Name
"sel_change" bereits intern irgendwie genutzt - das könnte dann zu
Konflikten führen.

Einen Versuch wäre es wert

Viele Grüße

Thomas


Am 08.09.2022 um 20:50 schrieb Stefan Deutsch:

Hi Thomas,

Hier mal die letzten Zeilen des Makros, in dem das GridControl mit
Inhalt gefüllt wird. Soweit ich das sehe, hab ich das vom Ablauf
gemacht
wie du in deinem Beispiel.

    oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
    oGridControl.setModel(oGridModel)
    oKommDia.addControl("GridAnzeigeKommission", oGridControl)
    oGridDataModel =
oKommDia.Model.getByName("GridAnzeigeKommission").GridDataModel

'Run this macro to start event intercepting
  sPrefix = "sel_change_"
  sService = "com.sun.star.awt.grid.XGridSelectionListener"

  'Create a listener to intercept the selection change events
  vSelChangeListener = CreateUnoListener(sPrefix, sService)

  'Register the listener to the document controller
      oGridControl.addSelectionListener(vSelChangeListener)

    iData = oGridDataModel.getCellData(3, iRowAktuell)
    oKommDia.getControl("nf_ausgefasst").Value = iData
    oKommDia.Controls(7).deselectAllRows
    oKommDia.Controls(7).selectRow(iRowAktuell)
    oKommDia.execute()
End Sub

Und hier die beiden Subs. disposing wird auch ausgeführt, wenn ich den
Dialog über das X beende.

Sub sel_change_disposing(vEvent)
print 21
End Sub

Sub sel_change_selectionChanged(vEvent)
    Dim vCurrentSelection As Object
   vCurrentSelection =  vEvent.source.CurrentRow
   MsgBox "Selected Row = " & vEvent.source.CurrentRow
print 27
End Sub

Allerdings ist mir auch aufgefallen, dass ein Print, dass ich
hinter die
Zeile oKommDia.execute() setze, erst ausgeführt wird, wenn ich den
Dialog beende. Könnte es damit zusammenhängen, dass der Dialog die
anderen im aufrufenden Formular blockiert?

Schönen Abend noch!

Stefan

Am 08.09.2022 um 20:07 schrieb Thomas Krumbein:

Hey Stefan,

tia, wie meldest Du den Listner denn an? Codeschnipsel?

Er muss am Gridelement angemeldet werden, nachdem das Model
zugewiesen
wurde:

 oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_",
"com.sun.star.awt.grid.XGridSelectionListener")

  oGridControl.addSelectionListener(oReAbgLis)

Dies als Beispiel. Du brauchst dann mindestens noch die zwei
Funktionen

'
' REM Listener Funktionen
Sub ReAblSelection_selectionChanged(oEvt)
    dim aDSatz()

    If bAblFlag Then
      bAblFlag = false
      Exit sub
    End if
    'MsgBox "Markierte Zeile: " & oEvt.source.CurrentRow
    aDSatz =
oRaDlg.getControl("tab_g1").model.GridDataModel.getRowData(oRaDlg.getControl("tab_g1").getCurrentRow)


    REM Rechnungsdatendetails lesen und Eintragen
    AbgleichEinzelRechnung(aDSatz())

End Sub

Sub ReAblSelection_disposing(oEvt)
End Sub

Es wird immer die komplette Zeile zurückgeliefert - die weitere
Auswahl liegt dann an Dir bzw. dem Code

Vielleicht hilft es :)

Viele Grüße

Thomas



Am 08.09.2022 um 19:49 schrieb Stefan Deutsch:

Guten Abend,

Ich verwende gerade das erste Mal einen Listener in einem Makro. Und
zwar hab ich einen Dialog, das ein GridControl enthält. Dies kann
man
zwar einzeichnen, aber muss es ja im Makro zum Leben erwecken. Das
klappt auch soweit. Jetzt wollte ich einen Listener hinzufügen, der
auf
SelectionChange anschlägt. Diesen hab ich in dem Objekt angemeldet,
das
das UnoControlGrid enthält. 

Re: [de-users] Listener im Dialog benutzen

2022-09-08 Diskussionsfäden Thomas Krumbein

Hey Stefan,

noch eine Frage/Lösungsansatz:  Ist Dein Listener (vSelChangeListener) 
auch als globale Variable definiert? Also so etwas wie


public vSelChangeListener as variant   'Listener für die Auswahl

vor allen Makros?

Sonst geht es nicht...

Viele Grüße

Thomas


Am 08.09.2022 um 21:49 schrieb Stefan Deutsch:

Hi Tomas,

das hab ich gerade mal probiert, aber das Ergebnis bleibt leider das
Gleiche. Ich werde morgen mal den Vorschlag von RObert aus dem Handbuch
probieren.

Schönen Abend noch

Stefan

Am 08.09.2022 um 21:15 schrieb Thomas Krumbein:

Hey Stefan,

jo, sieht gut aus.

Das mit dem Print nach dem Execute() Befehlt ist normal. Das Makro
bleibt bei execute() stehen und läuft erst weiter, wenn der Dialog
wieder geschlossen wird. Das ist also alles korrekt.

Wenn es keine anderen Fehler gibt oder ich die nicht sehe, versuche
mal folgendes: Benenne den Listener anders, also, gib ihm eine andere
Prefix - so etwas wie "Test123_". Vielleicht wird der Name
"sel_change" bereits intern irgendwie genutzt - das könnte dann zu
Konflikten führen.

Einen Versuch wäre es wert

Viele Grüße

Thomas


Am 08.09.2022 um 20:50 schrieb Stefan Deutsch:

Hi Thomas,

Hier mal die letzten Zeilen des Makros, in dem das GridControl mit
Inhalt gefüllt wird. Soweit ich das sehe, hab ich das vom Ablauf 
gemacht

wie du in deinem Beispiel.

    oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
    oGridControl.setModel(oGridModel)
    oKommDia.addControl("GridAnzeigeKommission", oGridControl)
    oGridDataModel =
oKommDia.Model.getByName("GridAnzeigeKommission").GridDataModel

'Run this macro to start event intercepting
  sPrefix = "sel_change_"
  sService = "com.sun.star.awt.grid.XGridSelectionListener"

  'Create a listener to intercept the selection change events
  vSelChangeListener = CreateUnoListener(sPrefix, sService)

  'Register the listener to the document controller
      oGridControl.addSelectionListener(vSelChangeListener)

    iData = oGridDataModel.getCellData(3, iRowAktuell)
    oKommDia.getControl("nf_ausgefasst").Value = iData
    oKommDia.Controls(7).deselectAllRows
    oKommDia.Controls(7).selectRow(iRowAktuell)
    oKommDia.execute()
End Sub

Und hier die beiden Subs. disposing wird auch ausgeführt, wenn ich den
Dialog über das X beende.

Sub sel_change_disposing(vEvent)
print 21
End Sub

Sub sel_change_selectionChanged(vEvent)
    Dim vCurrentSelection As Object
   vCurrentSelection =  vEvent.source.CurrentRow
   MsgBox "Selected Row = " & vEvent.source.CurrentRow
print 27
End Sub

Allerdings ist mir auch aufgefallen, dass ein Print, dass ich hinter 
die

Zeile oKommDia.execute() setze, erst ausgeführt wird, wenn ich den
Dialog beende. Könnte es damit zusammenhängen, dass der Dialog die
anderen im aufrufenden Formular blockiert?

Schönen Abend noch!

Stefan

Am 08.09.2022 um 20:07 schrieb Thomas Krumbein:

Hey Stefan,

tia, wie meldest Du den Listner denn an? Codeschnipsel?

Er muss am Gridelement angemeldet werden, nachdem das Model zugewiesen
wurde:

 oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_",
"com.sun.star.awt.grid.XGridSelectionListener")

  oGridControl.addSelectionListener(oReAbgLis)

Dies als Beispiel. Du brauchst dann mindestens noch die zwei 
Funktionen


'
' REM Listener Funktionen
Sub ReAblSelection_selectionChanged(oEvt)
    dim aDSatz()

    If bAblFlag Then
      bAblFlag = false
      Exit sub
    End if
    'MsgBox "Markierte Zeile: " & oEvt.source.CurrentRow
    aDSatz =
oRaDlg.getControl("tab_g1").model.GridDataModel.getRowData(oRaDlg.getControl("tab_g1").getCurrentRow) 



    REM Rechnungsdatendetails lesen und Eintragen
    AbgleichEinzelRechnung(aDSatz())

End Sub

Sub ReAblSelection_disposing(oEvt)
End Sub

Es wird immer die komplette Zeile zurückgeliefert - die weitere
Auswahl liegt dann an Dir bzw. dem Code

Vielleicht hilft es :)

Viele Grüße

Thomas



Am 08.09.2022 um 19:49 schrieb Stefan Deutsch:

Guten Abend,

Ich verwende gerade das erste Mal einen Listener in einem Makro. Und
zwar hab ich einen Dialog, das ein GridControl enthält. Dies kann man
zwar einzeichnen, aber muss es ja im Makro zum Leben erwecken. Das
klappt auch soweit. Jetzt wollte ich einen Listener hinzufügen, der
auf
SelectionChange anschlägt. Diesen hab ich in dem Objekt angemeldet,
das
das UnoControlGrid enthält. Das hat auch geklappt (bzw. es kommt 
keine

Fehlermeldung). Allerdings wird mein Sub
sel_change_selectionChanged(vEvent) nie ausgelöst, egal, wie viel
ich in
der Tabelle rumklicke.

Hat jemand einen HInweis für mich?

Viele Grüße

Stefan








--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com


--
M.I.C. Consulting
Riederbergstr. 92
65195 Wiesbaden
Tel. 0611 - 188 53 39
Fax: 0611 - 188 53 40

Re: [de-users] Listener im Dialog benutzen

2022-09-08 Diskussionsfäden Gerhard Weydt

Hallo Stefan,

ich sehe auch nichts an dem Code, was falsch sein könnte. Ein vager 
Verdacht, dass es an dem Unterstrich in deinem Prefix liegen könnte, ist 
ja wohl durch den Test mit einem anderen Prefix - wie von Thomas 
vorgeschlagen - ausgeräumt.
Aber eine eventuelle Alternative habe ich (wohl auch aus Thomas 
Beispiel): musst du wirklich auf den Wechsel der Auswahl reagieren, oder 
reicht dir, die Auswahl beim Beenden des Dialogs zu verarbeiten? Im 
letzteren Fall kannst du Eigenschaften/Methoden des Dialogs verwenden, 
ohne einen Listener zu benötigen. Hier ein Schnipsel aus meinem 
Programm, es dürfte ohne Kontext verständlich sein:


   do
    select case DlgProblem.execute()
    case 1
        if oGridControl.hasSelectedRows then
            exit do
          else
            msgbox "Bitte eine Zeile auswählen"
            goto endcycle
        end if
    case 0
        exit sub
    end select
   endcycle:
   loop
   problemId = oDataModel.getRowHeading(oGridControl.currentRow)

(Die Id wurde in den header der Zeile geschrieben.)

Gruß
Gerhard

Am 08.09.2022 um 21:49 schrieb Stefan Deutsch:

Hi Tomas,

das hab ich gerade mal probiert, aber das Ergebnis bleibt leider das
Gleiche. Ich werde morgen mal den Vorschlag von RObert aus dem Handbuch
probieren.

Schönen Abend noch

Stefan

Am 08.09.2022 um 21:15 schrieb Thomas Krumbein:

Hey Stefan,

jo, sieht gut aus.

Das mit dem Print nach dem Execute() Befehlt ist normal. Das Makro
bleibt bei execute() stehen und läuft erst weiter, wenn der Dialog
wieder geschlossen wird. Das ist also alles korrekt.

Wenn es keine anderen Fehler gibt oder ich die nicht sehe, versuche
mal folgendes: Benenne den Listener anders, also, gib ihm eine andere
Prefix - so etwas wie "Test123_". Vielleicht wird der Name
"sel_change" bereits intern irgendwie genutzt - das könnte dann zu
Konflikten führen.

Einen Versuch wäre es wert

Viele Grüße

Thomas


Am 08.09.2022 um 20:50 schrieb Stefan Deutsch:

Hi Thomas,

Hier mal die letzten Zeilen des Makros, in dem das GridControl mit
Inhalt gefüllt wird. Soweit ich das sehe, hab ich das vom Ablauf 
gemacht

wie du in deinem Beispiel.

    oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
    oGridControl.setModel(oGridModel)
    oKommDia.addControl("GridAnzeigeKommission", oGridControl)
    oGridDataModel =
oKommDia.Model.getByName("GridAnzeigeKommission").GridDataModel

'Run this macro to start event intercepting
  sPrefix = "sel_change_"
  sService = "com.sun.star.awt.grid.XGridSelectionListener"

  'Create a listener to intercept the selection change events
  vSelChangeListener = CreateUnoListener(sPrefix, sService)

  'Register the listener to the document controller
      oGridControl.addSelectionListener(vSelChangeListener)

    iData = oGridDataModel.getCellData(3, iRowAktuell)
    oKommDia.getControl("nf_ausgefasst").Value = iData
    oKommDia.Controls(7).deselectAllRows
    oKommDia.Controls(7).selectRow(iRowAktuell)
    oKommDia.execute()
End Sub

Und hier die beiden Subs. disposing wird auch ausgeführt, wenn ich den
Dialog über das X beende.

Sub sel_change_disposing(vEvent)
print 21
End Sub

Sub sel_change_selectionChanged(vEvent)
    Dim vCurrentSelection As Object
   vCurrentSelection =  vEvent.source.CurrentRow
   MsgBox "Selected Row = " & vEvent.source.CurrentRow
print 27
End Sub

Allerdings ist mir auch aufgefallen, dass ein Print, dass ich hinter 
die

Zeile oKommDia.execute() setze, erst ausgeführt wird, wenn ich den
Dialog beende. Könnte es damit zusammenhängen, dass der Dialog die
anderen im aufrufenden Formular blockiert?

Schönen Abend noch!

Stefan

Am 08.09.2022 um 20:07 schrieb Thomas Krumbein:

Hey Stefan,

tia, wie meldest Du den Listner denn an? Codeschnipsel?

Er muss am Gridelement angemeldet werden, nachdem das Model zugewiesen
wurde:

 oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_",
"com.sun.star.awt.grid.XGridSelectionListener")

  oGridControl.addSelectionListener(oReAbgLis)

Dies als Beispiel. Du brauchst dann mindestens noch die zwei 
Funktionen


'
' REM Listener Funktionen
Sub ReAblSelection_selectionChanged(oEvt)
    dim aDSatz()

    If bAblFlag Then
      bAblFlag = false
      Exit sub
    End if
    'MsgBox "Markierte Zeile: " & oEvt.source.CurrentRow
    aDSatz =
oRaDlg.getControl("tab_g1").model.GridDataModel.getRowData(oRaDlg.getControl("tab_g1").getCurrentRow) 



    REM Rechnungsdatendetails lesen und Eintragen
    AbgleichEinzelRechnung(aDSatz())

End Sub

Sub ReAblSelection_disposing(oEvt)
End Sub

Es wird immer die komplette Zeile zurückgeliefert - die weitere
Auswahl liegt dann an Dir bzw. dem Code

Vielleicht hilft es :)

Viele Grüße

Thomas




Re: [de-users] Listener im Dialog benutzen

2022-09-08 Diskussionsfäden Stefan Deutsch

Hi Tomas,

das hab ich gerade mal probiert, aber das Ergebnis bleibt leider das
Gleiche. Ich werde morgen mal den Vorschlag von RObert aus dem Handbuch
probieren.

Schönen Abend noch

Stefan

Am 08.09.2022 um 21:15 schrieb Thomas Krumbein:

Hey Stefan,

jo, sieht gut aus.

Das mit dem Print nach dem Execute() Befehlt ist normal. Das Makro
bleibt bei execute() stehen und läuft erst weiter, wenn der Dialog
wieder geschlossen wird. Das ist also alles korrekt.

Wenn es keine anderen Fehler gibt oder ich die nicht sehe, versuche
mal folgendes: Benenne den Listener anders, also, gib ihm eine andere
Prefix - so etwas wie "Test123_". Vielleicht wird der Name
"sel_change" bereits intern irgendwie genutzt - das könnte dann zu
Konflikten führen.

Einen Versuch wäre es wert

Viele Grüße

Thomas


Am 08.09.2022 um 20:50 schrieb Stefan Deutsch:

Hi Thomas,

Hier mal die letzten Zeilen des Makros, in dem das GridControl mit
Inhalt gefüllt wird. Soweit ich das sehe, hab ich das vom Ablauf gemacht
wie du in deinem Beispiel.

    oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
    oGridControl.setModel(oGridModel)
    oKommDia.addControl("GridAnzeigeKommission", oGridControl)
    oGridDataModel =
oKommDia.Model.getByName("GridAnzeigeKommission").GridDataModel

'Run this macro to start event intercepting
  sPrefix = "sel_change_"
  sService = "com.sun.star.awt.grid.XGridSelectionListener"

  'Create a listener to intercept the selection change events
  vSelChangeListener = CreateUnoListener(sPrefix, sService)

  'Register the listener to the document controller
      oGridControl.addSelectionListener(vSelChangeListener)

    iData = oGridDataModel.getCellData(3, iRowAktuell)
    oKommDia.getControl("nf_ausgefasst").Value = iData
    oKommDia.Controls(7).deselectAllRows
    oKommDia.Controls(7).selectRow(iRowAktuell)
    oKommDia.execute()
End Sub

Und hier die beiden Subs. disposing wird auch ausgeführt, wenn ich den
Dialog über das X beende.

Sub sel_change_disposing(vEvent)
print 21
End Sub

Sub sel_change_selectionChanged(vEvent)
    Dim vCurrentSelection As Object
   vCurrentSelection =  vEvent.source.CurrentRow
   MsgBox "Selected Row = " & vEvent.source.CurrentRow
print 27
End Sub

Allerdings ist mir auch aufgefallen, dass ein Print, dass ich hinter die
Zeile oKommDia.execute() setze, erst ausgeführt wird, wenn ich den
Dialog beende. Könnte es damit zusammenhängen, dass der Dialog die
anderen im aufrufenden Formular blockiert?

Schönen Abend noch!

Stefan

Am 08.09.2022 um 20:07 schrieb Thomas Krumbein:

Hey Stefan,

tia, wie meldest Du den Listner denn an? Codeschnipsel?

Er muss am Gridelement angemeldet werden, nachdem das Model zugewiesen
wurde:

 oGridControl =
createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_",
"com.sun.star.awt.grid.XGridSelectionListener")

  oGridControl.addSelectionListener(oReAbgLis)

Dies als Beispiel. Du brauchst dann mindestens noch die zwei Funktionen

'
' REM Listener Funktionen
Sub ReAblSelection_selectionChanged(oEvt)
    dim aDSatz()

    If bAblFlag Then
      bAblFlag = false
      Exit sub
    End if
    'MsgBox "Markierte Zeile: " & oEvt.source.CurrentRow
    aDSatz =
oRaDlg.getControl("tab_g1").model.GridDataModel.getRowData(oRaDlg.getControl("tab_g1").getCurrentRow)

    REM Rechnungsdatendetails lesen und Eintragen
    AbgleichEinzelRechnung(aDSatz())

End Sub

Sub ReAblSelection_disposing(oEvt)
End Sub

Es wird immer die komplette Zeile zurückgeliefert - die weitere
Auswahl liegt dann an Dir bzw. dem Code

Vielleicht hilft es :)

Viele Grüße

Thomas



Am 08.09.2022 um 19:49 schrieb Stefan Deutsch:

Guten Abend,

Ich verwende gerade das erste Mal einen Listener in einem Makro. Und
zwar hab ich einen Dialog, das ein GridControl enthält. Dies kann man
zwar einzeichnen, aber muss es ja im Makro zum Leben erwecken. Das
klappt auch soweit. Jetzt wollte ich einen Listener hinzufügen, der
auf
SelectionChange anschlägt. Diesen hab ich in dem Objekt angemeldet,
das
das UnoControlGrid enthält. Das hat auch geklappt (bzw. es kommt keine
Fehlermeldung). Allerdings wird mein Sub
sel_change_selectionChanged(vEvent) nie ausgelöst, egal, wie viel
ich in
der Tabelle rumklicke.

Hat jemand einen HInweis für mich?

Viele Grüße

Stefan








--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com

--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-08 Diskussionsfäden Thomas Krumbein

Hey Stefan,

jo, sieht gut aus.

Das mit dem Print nach dem Execute() Befehlt ist normal. Das Makro 
bleibt bei execute() stehen und läuft erst weiter, wenn der Dialog 
wieder geschlossen wird. Das ist also alles korrekt.


Wenn es keine anderen Fehler gibt oder ich die nicht sehe, versuche mal 
folgendes: Benenne den Listener anders, also, gib ihm eine andere Prefix 
- so etwas wie "Test123_". Vielleicht wird der Name "sel_change" bereits 
intern irgendwie genutzt - das könnte dann zu Konflikten führen.


Einen Versuch wäre es wert

Viele Grüße

Thomas


Am 08.09.2022 um 20:50 schrieb Stefan Deutsch:

Hi Thomas,

Hier mal die letzten Zeilen des Makros, in dem das GridControl mit
Inhalt gefüllt wird. Soweit ich das sehe, hab ich das vom Ablauf gemacht
wie du in deinem Beispiel.

    oGridControl = 
createUnoService("com.sun.star.awt.grid.UnoControlGrid")

    oGridControl.setModel(oGridModel)
    oKommDia.addControl("GridAnzeigeKommission", oGridControl)
    oGridDataModel =
oKommDia.Model.getByName("GridAnzeigeKommission").GridDataModel

'Run this macro to start event intercepting
  sPrefix = "sel_change_"
  sService = "com.sun.star.awt.grid.XGridSelectionListener"

  'Create a listener to intercept the selection change events
  vSelChangeListener = CreateUnoListener(sPrefix, sService)

  'Register the listener to the document controller
      oGridControl.addSelectionListener(vSelChangeListener)

    iData = oGridDataModel.getCellData(3, iRowAktuell)
    oKommDia.getControl("nf_ausgefasst").Value = iData
    oKommDia.Controls(7).deselectAllRows
    oKommDia.Controls(7).selectRow(iRowAktuell)
    oKommDia.execute()
End Sub

Und hier die beiden Subs. disposing wird auch ausgeführt, wenn ich den
Dialog über das X beende.

Sub sel_change_disposing(vEvent)
print 21
End Sub

Sub sel_change_selectionChanged(vEvent)
    Dim vCurrentSelection As Object
   vCurrentSelection =  vEvent.source.CurrentRow
   MsgBox "Selected Row = " & vEvent.source.CurrentRow
print 27
End Sub

Allerdings ist mir auch aufgefallen, dass ein Print, dass ich hinter die
Zeile oKommDia.execute() setze, erst ausgeführt wird, wenn ich den
Dialog beende. Könnte es damit zusammenhängen, dass der Dialog die
anderen im aufrufenden Formular blockiert?

Schönen Abend noch!

Stefan

Am 08.09.2022 um 20:07 schrieb Thomas Krumbein:

Hey Stefan,

tia, wie meldest Du den Listner denn an? Codeschnipsel?

Er muss am Gridelement angemeldet werden, nachdem das Model zugewiesen
wurde:

 oGridControl = createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_",
"com.sun.star.awt.grid.XGridSelectionListener")

  oGridControl.addSelectionListener(oReAbgLis)

Dies als Beispiel. Du brauchst dann mindestens noch die zwei Funktionen

'
' REM Listener Funktionen
Sub ReAblSelection_selectionChanged(oEvt)
    dim aDSatz()

    If bAblFlag Then
      bAblFlag = false
      Exit sub
    End if
    'MsgBox "Markierte Zeile: " & oEvt.source.CurrentRow
    aDSatz =
oRaDlg.getControl("tab_g1").model.GridDataModel.getRowData(oRaDlg.getControl("tab_g1").getCurrentRow) 


    REM Rechnungsdatendetails lesen und Eintragen
    AbgleichEinzelRechnung(aDSatz())

End Sub

Sub ReAblSelection_disposing(oEvt)
End Sub

Es wird immer die komplette Zeile zurückgeliefert - die weitere
Auswahl liegt dann an Dir bzw. dem Code

Vielleicht hilft es :)

Viele Grüße

Thomas



Am 08.09.2022 um 19:49 schrieb Stefan Deutsch:

Guten Abend,

Ich verwende gerade das erste Mal einen Listener in einem Makro. Und
zwar hab ich einen Dialog, das ein GridControl enthält. Dies kann man
zwar einzeichnen, aber muss es ja im Makro zum Leben erwecken. Das
klappt auch soweit. Jetzt wollte ich einen Listener hinzufügen, der auf
SelectionChange anschlägt. Diesen hab ich in dem Objekt angemeldet, das
das UnoControlGrid enthält. Das hat auch geklappt (bzw. es kommt keine
Fehlermeldung). Allerdings wird mein Sub
sel_change_selectionChanged(vEvent) nie ausgelöst, egal, wie viel 
ich in

der Tabelle rumklicke.

Hat jemand einen HInweis für mich?

Viele Grüße

Stefan






--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-08 Diskussionsfäden Stefan Deutsch

Hi Thomas,

Hier mal die letzten Zeilen des Makros, in dem das GridControl mit
Inhalt gefüllt wird. Soweit ich das sehe, hab ich das vom Ablauf gemacht
wie du in deinem Beispiel.

    oGridControl = createUnoService("com.sun.star.awt.grid.UnoControlGrid")
    oGridControl.setModel(oGridModel)
    oKommDia.addControl("GridAnzeigeKommission", oGridControl)
    oGridDataModel =
oKommDia.Model.getByName("GridAnzeigeKommission").GridDataModel

'Run this macro to start event intercepting
  sPrefix = "sel_change_"
  sService = "com.sun.star.awt.grid.XGridSelectionListener"

  'Create a listener to intercept the selection change events
  vSelChangeListener = CreateUnoListener(sPrefix, sService)

  'Register the listener to the document controller
      oGridControl.addSelectionListener(vSelChangeListener)

    iData = oGridDataModel.getCellData(3, iRowAktuell)
    oKommDia.getControl("nf_ausgefasst").Value = iData
    oKommDia.Controls(7).deselectAllRows
    oKommDia.Controls(7).selectRow(iRowAktuell)
    oKommDia.execute()
End Sub

Und hier die beiden Subs. disposing wird auch ausgeführt, wenn ich den
Dialog über das X beende.

Sub sel_change_disposing(vEvent)
print 21
End Sub

Sub sel_change_selectionChanged(vEvent)
    Dim vCurrentSelection As Object
   vCurrentSelection =  vEvent.source.CurrentRow
   MsgBox "Selected Row = " & vEvent.source.CurrentRow
print 27
End Sub

Allerdings ist mir auch aufgefallen, dass ein Print, dass ich hinter die
Zeile oKommDia.execute() setze, erst ausgeführt wird, wenn ich den
Dialog beende. Könnte es damit zusammenhängen, dass der Dialog die
anderen im aufrufenden Formular blockiert?

Schönen Abend noch!

Stefan

Am 08.09.2022 um 20:07 schrieb Thomas Krumbein:

Hey Stefan,

tia, wie meldest Du den Listner denn an? Codeschnipsel?

Er muss am Gridelement angemeldet werden, nachdem das Model zugewiesen
wurde:

 oGridControl = createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_",
"com.sun.star.awt.grid.XGridSelectionListener")

  oGridControl.addSelectionListener(oReAbgLis)

Dies als Beispiel. Du brauchst dann mindestens noch die zwei Funktionen

'
' REM Listener Funktionen
Sub ReAblSelection_selectionChanged(oEvt)
    dim aDSatz()

    If bAblFlag Then
      bAblFlag = false
      Exit sub
    End if
    'MsgBox "Markierte Zeile: " & oEvt.source.CurrentRow
    aDSatz =
oRaDlg.getControl("tab_g1").model.GridDataModel.getRowData(oRaDlg.getControl("tab_g1").getCurrentRow)
    REM Rechnungsdatendetails lesen und Eintragen
    AbgleichEinzelRechnung(aDSatz())

End Sub

Sub ReAblSelection_disposing(oEvt)
End Sub

Es wird immer die komplette Zeile zurückgeliefert - die weitere
Auswahl liegt dann an Dir bzw. dem Code

Vielleicht hilft es :)

Viele Grüße

Thomas



Am 08.09.2022 um 19:49 schrieb Stefan Deutsch:

Guten Abend,

Ich verwende gerade das erste Mal einen Listener in einem Makro. Und
zwar hab ich einen Dialog, das ein GridControl enthält. Dies kann man
zwar einzeichnen, aber muss es ja im Makro zum Leben erwecken. Das
klappt auch soweit. Jetzt wollte ich einen Listener hinzufügen, der auf
SelectionChange anschlägt. Diesen hab ich in dem Objekt angemeldet, das
das UnoControlGrid enthält. Das hat auch geklappt (bzw. es kommt keine
Fehlermeldung). Allerdings wird mein Sub
sel_change_selectionChanged(vEvent) nie ausgelöst, egal, wie viel ich in
der Tabelle rumklicke.

Hat jemand einen HInweis für mich?

Viele Grüße

Stefan


--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com





--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com

--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-08 Diskussionsfäden Robert Großkopf

Hallo Stefan,


Ich verwende gerade das erste Mal einen Listener in einem Makro. Und
zwar hab ich einen Dialog, das ein GridControl enthält. Dies kann man
zwar einzeichnen, aber muss es ja im Makro zum Leben erwecken. Das
klappt auch soweit. Jetzt wollte ich einen Listener hinzufügen, der auf
SelectionChange anschlägt. Diesen hab ich in dem Objekt angemeldet, das
das UnoControlGrid enthält. Das hat auch geklappt (bzw. es kommt keine
Fehlermeldung). Allerdings wird mein Sub
sel_change_selectionChanged(vEvent) nie ausgelöst, egal, wie viel ich in
der Tabelle rumklicke.

Hat jemand einen HInweis für mich?


Schau einmal im Base-Handbuch
Dialog zum Bearbeiten von Daten aus einer Tabellenübersicht
(S. 572 ff im aktuellen Handbuch 7.4)
Da habe ich das Feld genutzt, um markierte Datensätze zu lesen und 
bearbeitete Datensätze wieder ein zu fügen.


Muss irgendwie so etwas sein wie
 oGrid = oEvent.Source
 IF oGrid.hasSelectedRows THEN
…

Das Ganze liegt dem Handbuch auch als "Beispiel_Dialoge.odb" bei.

Gruß

Robert
--
Homepage: https://www.familiegrosskopf.de/robert

--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


Re: [de-users] Listener im Dialog benutzen

2022-09-08 Diskussionsfäden Thomas Krumbein

Hey Stefan,

tia, wie meldest Du den Listner denn an? Codeschnipsel?

Er muss am Gridelement angemeldet werden, nachdem das Model zugewiesen 
wurde:


 oGridControl = createUnoService("com.sun.star.awt.grid.UnoControlGrid")
  oGridControl.setModel(oGridModel)

  oRaDlg.addControl("tab_g1", oGridControl)

  REM Selection Listener erzeugen
  oReAbgLis = CreateUnoListener("ReAblSelection_", 
"com.sun.star.awt.grid.XGridSelectionListener")


  oGridControl.addSelectionListener(oReAbgLis)

Dies als Beispiel. Du brauchst dann mindestens noch die zwei Funktionen

'
' REM Listener Funktionen
Sub ReAblSelection_selectionChanged(oEvt)
    dim aDSatz()

    If bAblFlag Then
      bAblFlag = false
      Exit sub
    End if
    'MsgBox "Markierte Zeile: " & oEvt.source.CurrentRow
    aDSatz = 
oRaDlg.getControl("tab_g1").model.GridDataModel.getRowData(oRaDlg.getControl("tab_g1").getCurrentRow)

    REM Rechnungsdatendetails lesen und Eintragen
    AbgleichEinzelRechnung(aDSatz())

End Sub

Sub ReAblSelection_disposing(oEvt)
End Sub

Es wird immer die komplette Zeile zurückgeliefert - die weitere Auswahl 
liegt dann an Dir bzw. dem Code


Vielleicht hilft es :)

Viele Grüße

Thomas



Am 08.09.2022 um 19:49 schrieb Stefan Deutsch:

Guten Abend,

Ich verwende gerade das erste Mal einen Listener in einem Makro. Und
zwar hab ich einen Dialog, das ein GridControl enthält. Dies kann man
zwar einzeichnen, aber muss es ja im Makro zum Leben erwecken. Das
klappt auch soweit. Jetzt wollte ich einen Listener hinzufügen, der auf
SelectionChange anschlägt. Diesen hab ich in dem Objekt angemeldet, das
das UnoControlGrid enthält. Das hat auch geklappt (bzw. es kommt keine
Fehlermeldung). Allerdings wird mein Sub
sel_change_selectionChanged(vEvent) nie ausgelöst, egal, wie viel ich in
der Tabelle rumklicke.

Hat jemand einen HInweis für mich?

Viele Grüße

Stefan


--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com



--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


[de-users] Listener im Dialog benutzen

2022-09-08 Diskussionsfäden Stefan Deutsch

Guten Abend,

Ich verwende gerade das erste Mal einen Listener in einem Makro. Und
zwar hab ich einen Dialog, das ein GridControl enthält. Dies kann man
zwar einzeichnen, aber muss es ja im Makro zum Leben erwecken. Das
klappt auch soweit. Jetzt wollte ich einen Listener hinzufügen, der auf
SelectionChange anschlägt. Diesen hab ich in dem Objekt angemeldet, das
das UnoControlGrid enthält. Das hat auch geklappt (bzw. es kommt keine
Fehlermeldung). Allerdings wird mein Sub
sel_change_selectionChanged(vEvent) nie ausgelöst, egal, wie viel ich in
der Tabelle rumklicke.

Hat jemand einen HInweis für mich?

Viele Grüße

Stefan


--
Diese E-Mail wurde von Avast-Antivirussoftware auf Viren geprüft.
www.avast.com

--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy