Fehler bei Combobox-Ereignis "Text modifiziert"

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

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Fehler bei Combobox-Ereignis "Text modifiziert"

Beitrag von Stephan »

Hallo,

auf einem größeren Dialog hatte ich Probleme mit einer Combobox und glaubte zuerst da liefe etwas durcheinander, weil sich mehrere Ereignisse 'stören'. Nachdem ich jetzt Stunden probiert habe, habe ich das Ganze auf einem ganz einfachen Dialog nachgestellt und bin überrascht, auch da tritt der Fehler auf.

Auf dem Dialog ist eine Combobox mit diesem Ereignismakro für "Text modifiziert":

Code: Alles auswählen

Sub action_test()
	dia_person.title = dia_person.title & "#"
End Sub
Gibt man in diese Combobox Text ein startet bei jeder Textänderung das Makro und schreibt zur Kontrolle ein "#" in die Titelzeile. Soweit so problemlos.

Löscht man jetzt aber einzelne Buchstaben des Textes mit der ENTF-Taste wird das Ereignismakro augenscheinlich immer zwei Mal ausgeführt. Beobachtet unter OO und LO.
(Löscht man per Markierung und Maus-Kontextmenü tritt das Problem nicht auf!)

Kann dazu jemand etwas sagen?


Meiner Beobachtung nach hilft auch Folgendes nicht:

Code: Alles auswählen

Public laueft

'...

Sub action_test()
	If laueft = 1 Then Exit Sub
	
	laueft = 1
	dia_person.title = dia_person.title & "#"
	laueft = 0		
End Sub

Gruß
Stephan
Dateianhänge
OO-LO_Combobox-Test.odt
(11.88 KiB) 114-mal heruntergeladen
mikeleb
*******
Beiträge: 1315
Registriert: Fr, 09.12.2011 16:50

Re: Fehler bei Combobox-Ereignis "Text modifiziert"

Beitrag von mikeleb »

Hallo Stephan,
ich kann deine Beobachtung zunächst nur bestätigen. Das gleiche Verhalten tritt allerdings auch bei Textboxen auf.
Gruß,
mikeleb
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Fehler bei Combobox-Ereignis "Text modifiziert"

Beitrag von Stephan »

mikeleb hat geschrieben: So, 21.01.2018 21:01 Hallo Stephan,
ich kann deine Beobachtung zunächst nur bestätigen. Das gleiche Verhalten tritt allerdings auch bei Textboxen auf.
Auf jeden Fall danke für die Bestätigung. Ich kann den Fehler nämlich kaum glauben, weil ich einfach nicht verstehe das der mir in den letzten 10 Jahren noch nicht aufgefallen ist. (ein neuer Fehler ist das nicht, denn zumindest in OOo 3.3.0 ist der auch präsent)


Gruß
Stephan
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Fehler bei Combobox-Ereignis "Text modifiziert"

Beitrag von Toxitom »

Hei Stefan, *,

ob es wirklich ein Fehler ist, bin ich mir nicht so sicher. Bestätigen kann ich das Verhalten jedenfalls auch. Und es wäre einen Versuch wert, es als Bug zu melden.

Doch überlegen wir mal, wie der Fehler zustande kommen könnte:

- das Ereignis "Text modifiziert" reagiert auf jede Eingabe/Änderung. Soweit ok.
- Das Löschen eines Zeichens in der API ist wahrscheinlich ähnlich wie in einem Textbereich: Du erzeugst einen Textcursor, gehst hinter das letzte Zeichen.
-- nun markierst Du das letzte Zeichen durch Rückschritt ein Zeichen mit Parameter "True" (dürfte das Ereignis auslösen?)
-- nun überschreibst du den markierten Teil mit "nichts" (löst noch mal aus?)

Ist aber reine Vermutung. Dazu müsste man in den C-Code einsteigen :)

Aber: gib doch mal ne Bug auf - gerne mache ich das bei LO, falls Du dort das nicht machen möchtest.

VG
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Fehler bei Combobox-Ereignis "Text modifiziert"

Beitrag von Stephan »

Bestätigen kann ich das Verhalten jedenfalls auch.


Ich verstehe nicht warum mir das Verhalten nie aufgefallen ist, denn Entf-Taste in einer Combobox bei Ereignis Textänderung ist doch in Praxis sehr häufig. Mir fiel es aktuell nur auf weil ein langes Makro zugeordnet ist, ich deshalb einen Warten-Hinweis (Dialog) anzeige und dieser Dialog flackerte, als erschiene er zweimal.

Das Hauptproblem ist das ich keinen workaround finde, weil das mit der 'Stopp-Variable nicht klappt und es mir insgesamt auch nicht hilft wenn ich das Tastaturereignis separat abfange (außer ich würde jeden einzelnen Tastenanschlag kontrollieren, so das ich quasi jederzeit (ohne .Text auszulesen) den Wert von .Text kenne.
Und das praktische Problem ist die Zeit-/Kostenfrage, mein Kunde sieht bestimmt das es flackert, also muss ich etwas tun, aber diese Bagatelle hat mich inzwischen 3 Stunden gekostet, ohne das ich eine Lösung habe...

Und es wäre einen Versuch wert, es als Bug zu melden.
Also ich werde jetzt erstmal auf die deutsche OO-dev schreiben, in der Hoffnung das dort ein Entwickler antwortet (seit einiger Zeit posten da wieder Entwickler) und falls nicht dann auf der internationalen dev.

Frage:
Falls ich mich entschließe eine Issue für OO zu schreiben, schreibst Du den für LibreOffice?

Doch überlegen wir mal, wie der Fehler zustande kommen könnte:
...
-- nun markierst Du das letzte Zeichen durch Rückschritt ein Zeichen mit Parameter "True" (dürfte das Ereignis auslösen?)
nö, wieso denn, das ist nur eine Markierung und keine Textänderung (schau Dir vergleichsweise das Eingabeverhalten der Combobox bei Tastatureingabe an, dort wird wenn Du den richtigen Teiltext eintippst der zugehörige Gesamttext angezeigt, aber nur der nicht-eingegebene Teil ist markiert, jedoch ist der komplette Text in diesem Moment schon .Text der Combobox und nicht nur ein Teil)


Gruß
Stephan
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Fehler bei Combobox-Ereignis "Text modifiziert"

Beitrag von Toxitom »

Frage:
Falls ich mich entschließe eine Issue für OO zu schreiben, schreibst Du den für LibreOffice?

Ja, mache ich. Ping mich an, wenn Du ihn bei AOO unter gebracht hast - ich mache es dann simultan im LO Bugzilla:)

VG Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten