🙏 Helfen Sie mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Basic: Aufruf per Tabellen-Ereignis "DoppelKlick", dann Auswahl einer Zelle per current controller … [gelöst]

Alles zur Programmierung im LibreOffice.
Antworten
nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Basic: Aufruf per Tabellen-Ereignis "DoppelKlick", dann Auswahl einer Zelle per current controller … [gelöst]

Beitrag von nitja » So 24. Mär 2024, 09:03

… führt dazu, dass die zuletzt (per controller) ausgewählte Zelle in unerwünschten Modus (Eingabezeile aktiviert) versetzt wird. … eben so, als hätte ich auf diese Zelle selbst doppelt geklickt (Eingabezeile über der Tabelle aktiviert).
Das stoppt den Fluss bei der manuellen Eingabe der Daten in die (weiteren) Zellen dieser Zeile.
(Wenn ich die Zelle bei der manuellen Eingabe einfach klicke, kann ich den Wert eintragen ohne die Eingabezeile über der Tabelle zu aktivieren und z.B. mit der [→]-Taste die nächste Zelle auswählen.
(Zwischen dem auslösenden Ereignis und der Auswahl der genannten Zelle ändert das Makro noch Daten an anderen Zellen, passt sie an die Änderung in der auslösenden Zelle an.)

Das Verhalten lässt sich per IDE nicht ohne weiteres beobachten/korrigieren, da an Haltepunkten die IDE aktiviert und die Tabelle deaktiviert wird. Nach anschließendem Klick auf das Tabellenfenster, befindet sich die Zelle im erwünschten Modus.

Frage: Wie kann ich das gewünschte Verhalten erreichen, ggf. die Tabelle per Makro de- & sofort wieder re-aktivieren, ohne den Fluss bei der Eingabe zu unterbrechen?

(Merkwürdig ist auch, dass das Makro "onDblClk" erst nach einigen/etlichen Läufen im Menü Tabelle»Ereignisse angezeigt wird aber vom Öffnen der enthaltenden ods.-Datei an aktivierbar ist / auf Doppelklicks reagiert.)
Zuletzt geändert von nitja am So 24. Mär 2024, 18:42, insgesamt 1-mal geändert.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Basic: Aufruf per Tabellen-Ereignis "DoppelKlick" & nachfolgend Auswahl einer (anderen) Zelle per current controller

Beitrag von karolus » So 24. Mär 2024, 10:03

hallo
Um dir zu helfen wäre es hilfreich wenn du ein Beispiels_Dokument und das Makro postest!
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: Basic: Aufruf per Tabellen-Ereignis "DoppelKlick" & nachfolgend Auswahl einer (anderen) Zelle per current controller

Beitrag von nitja » So 24. Mär 2024, 10:45

karolus hat geschrieben:
So 24. Mär 2024, 10:03
… Dokument und das Makro postest!
Dank Dir für Deine Reaktion! … und klar, aber …
da steht schon sehr Persönliches drin, was ich nicht veröffentlichen möchte (per Mail an Einzelne wäre eher möglich).
Um eine neue .ods-Datei mit der Struktur u.s.w. zusammen zu bauen, würde ich mindestens bis morgen Mittag brauchen.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2533
Registriert: Fr 10. Dez 2010, 10:01

Re: Basic: Aufruf per Tabellen-Ereignis "DoppelKlick" & nachfolgend Auswahl einer (anderen) Zelle per current controller

Beitrag von karolus » So 24. Mär 2024, 11:00

Hallo

Es geht eigentlich recht schnell reale Daten z.B. per Suchen&ersetzen in »xxxyyyyzzz« zu verwandeln.

Vielleicht erschliesst sich das Problem auch schon nach Ansicht des MakroCodes?
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

mikele
* LO-Experte *
Beiträge: 1929
Registriert: Mo 1. Aug 2011, 20:51

Re: Basic: Aufruf per Tabellen-Ereignis "DoppelKlick" & nachfolgend Auswahl einer (anderen) Zelle per current controller

Beitrag von mikele » So 24. Mär 2024, 12:02

Hallo,
bei Doppelklick ist es das Dilemma, dass dieses Ereignis schon im System vergeben ist. Daher muss dem Makro mitgegeben werden, dass es so zu sagen anstellen des Systemereignisses fungiert. Das ist aber recht einfach, denn man muss im nur einen logischen Wert als Ergebnis mitgeben:

Code: Alles auswählen

Sub doppelklick (oevent) as boolean
	
	'dein Code
	
	doppelklick=true
End Sub

Gruß,
mikele

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: Basic: Aufruf per Tabellen-Ereignis "DoppelKlick" & nachfolgend Auswahl einer (anderen) Zelle per current controller

Beitrag von nitja » So 24. Mär 2024, 12:16

oops - das folgende geht @ 'karolus' - 2 posts hier drüber

Schon klar. Ich hatte gehofft, dass hier jemand liest, der schon mal selbst über das beanstandete Verhalten gestolpert ist und (s)eine Lösung parat hat.
Jetzt muss ich den Rechner für ~ 5h verlassen. Wenn ich dann zurück bin, werde ich eine (viel) kleinere Beispiel-.ods-Datei (mit u.a. anderen Gültigkeitsbedingungen, Beschriftungen und Symbolen - mit den reinen Daten ist's nicht erledigt) aufsetzen. Dass ich's noch vor Mitternacht hier posten kann, halt' ich für eher unwahrscheinlich.
Aber morgen ist ja (vermutlich) auch noch ein Tag und da ich seit Wochen (Monaten?) mit dem Projekt kämpfe, kommt's darauf nimmer an.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: Basic: Aufruf per Tabellen-Ereignis "DoppelKlick" & nachfolgend Auswahl einer (anderen) Zelle per current controller

Beitrag von nitja » So 24. Mär 2024, 12:25

mikele hat geschrieben:
So 24. Mär 2024, 12:02

Code: Alles auswählen

Sub doppelklick (oevent) as boolean
	
	'dein Code
	
	doppelklick=true
	
End Sub
:o Ha! :P Wenn das so einfach ist, hat sich ja meine ursprüngliche Hoffnung bestätigt.
Werde ich zw. 17 und 18h ausprobieren und mich dann wieder melden.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: Basic: Aufruf per Tabellen-Ereignis "DoppelKlick" & nachfolgend Auswahl einer (anderen) Zelle per current controller

Beitrag von nitja » So 24. Mär 2024, 18:41

mikele hat geschrieben:
So 24. Mär 2024, 12:02
… bei Doppelklick ist es das Dilemma, dass dieses Ereignis schon im System vergeben ist …
Das hatte ich geahnt. Und dass ich dem "System" mitteilen muss, dass es erledigt ist. … konnte mich freilich nicht mehr erinnern wie.

Code: Alles auswählen

function onDblClk(oCell as object) as boolean
	dim … <lokale Variablen>
	onDblClk=true						'' Bingo! Volltreffer!
	<
	… Verarbeitungscode …
	>
	with oDataSht						'' diese Variablen sind für das Modul definiert
		oCtrlr.select(.getCellByPosition(iCol,iRow))	'' (neue) iCol, iRow werden in der "Verarbeitung" 
	end with 'oDataSht					'' berechnet
end function 'onDblClk
Funktioniert wie gewünscht. (Dass die ausgewählte Zelle anders als bei manuellem Klick grau hinterlegt ist, stört nicht weiter.)

Also super-fettes Dankeschön an 'mikele'!
… und auch lieben Dank an 'karolus' für die erste, schnelle Reaktion auf diesen Thread!
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

mikele
* LO-Experte *
Beiträge: 1929
Registriert: Mo 1. Aug 2011, 20:51

Re: Basic: Aufruf per Tabellen-Ereignis "DoppelKlick", dann Auswahl einer Zelle per current controller … [gelöst]

Beitrag von mikele » So 24. Mär 2024, 19:44

Hallo,
schön, dass es funktioniert. Irgendwo habe ich auch mal eine Dokumentation/Erklärung dazu gelesen, aber die finde ich auch nicht mehr.
Um am Ende die Auswahl der Zelle zu beseitigen, gibt es den Trick ein Dummy-Zellobjekt auszuwählen:

Code: Alles auswählen

with oDataSht						'' diese Variablen sind für das Modul definiert
		oCtrlr.select(.getCellByPosition(iCol,iRow))	'' (neue) iCol, iRow werden in der "Verarbeitung" 		
	end with 'oDataSht
	REM Erzeugt einen leeren Service SheetCellRanges und wählt ihn aus.
	REM Dadurch bleibt NUR die aktive Zelle ausgewählt.
	oRanges = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
	oCtrlr.Select(oRanges)
	
siehe: Andrew Pitonyak: BASIC-Makros für OpenOffice und LibreOffice, Kapitel 15.8.1. Ausgewählte Zellen
https://makromador.wordpress.com/oome-o ... explained/
Gruß,
mikele

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: Basic: Aufruf per Tabellen-Ereignis "DoppelKlick", dann Auswahl einer Zelle per current controller … [gelöst]

Beitrag von nitja » Mo 25. Mär 2024, 00:18

👍 👏 !
Die Erweiterung macht tatsächlich die Ästhetik des Makros noch netter.
Das "Listing 478" im genannten Kapitel hatte ich für die Funktion schon angeschaut und Anregungen daraus getestet. Hat nicht funktioniert.
Auf die Idee, das anschließend  für die Kosmetik einzusetzen, bin ich ich blöder Weise nicht selbst gekommen. Erst Dein Vorschlag hat mich daran erinnert.
Also auch dafür ein fettes Dankeschön!
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten