Seite 1 von 2
Click-Ereigniss? abfangen
Verfasst: Do 25. Jul 2024, 20:18
von StefKe
Hallo, ich möchte gern bei Eingabe von
in die Zelle A1 den Wert in
ändern. In MS Office kann dazu das Click-Ereigniss verwendet werden. Gibt es ein Pendant in LO? Wie wird es angewendet?
Danke - Stefan
Re: Click-Ereigniss? abfangen
Verfasst: Fr 26. Jul 2024, 19:29
von nitja
Es gibt kein direktes Clkick-Ereignis in LO.
Aber: ein Click löst gleichzeitig 4 Select-Ereignisse mit identischen Werten für die/das geklickte Zelle/Objekt aus. Das kann man abfragen/abfangen. Funktioniert in meinen Anwendungen perfekt.
Re: Click-Ereigniss? abfangen
Verfasst: So 28. Jul 2024, 11:04
von Pit Zyclade
Egal, schon wieder eine neue Rechtschreibung? Click-Ereigniss ???
Kannst du mal beschreiben, was du da berichtet hast? Wenn man in der Tabelle den Bilddateinamen eingibt und drauf klickt wird was angezeigt? Das Erstellungsdatum? Das Kopierdatum? Das Tagesdatum mit Uhrzeit?
Was sollte mir das nutzen?
Re: Click-Ereigniss? abfangen
Verfasst: So 28. Jul 2024, 11:35
von mikele
Hallo,
1) wenn z. B. in A1 der Text
steht, dann könntest du in B1 folgende Formel verwenden
Code: Alles auswählen
=DATUMWERT(REGAUS(A1;"IMG_(....)(..)(..).*";"$1-$2-$3"))+ZEITWERT(REGAUS(A1;"IMG_.*_(..)(..)(..).*";"$1:$2:$3"))
um daraus ein Datum+Zeit zu generieren.
2) Möchtest es hingegen per Makro die EIngabe in A1 in ein Datumswert umwandeln (und damit die EIngabe "vernichten") könntest du das Tabellenereignis "Inhalt geändert" ausnutzen.
3) Wenn es beim Anklicken der Zelle oder der Auswahl der Zelle per Tastatur passieren soll könntets du das Tabellenereignis "Auswahl geändert" ausnutzen.
Die Nummer 2 entspricht am ehesten deiner Beschreibung. Allerdings verstehe ich nicht, warum man erst ""IMG_20240722_144828.jpg" eintippt, um dann daraus "22.07.24 14:48:28" zu machen. Dann kann mann doch gleich "22.07.24 14:48:28" eintippenn???
Re: Click-Ereigniss? abfangen
Verfasst: So 28. Jul 2024, 19:23
von StefKe
Hallo, danke...
@Pit: das mit der Rechtschreibungistmanchmalbisschenschwierig

tut mir leid
@nitja: es handelt sich um Bilder von Strom- und Wasserzähler welche mit den Smartphone aufgenommen werden. Der Zeitstempel der Ablesung soll per Copy und Paste des Dateinamens erfasst werden.
Die Variant 2 trifft genau das Ziel. O.k. dann versuche ich es mit 'Inhalt geändert'...
Danke - Stefan
Re: Click-Ereigniss? abfangen
Verfasst: So 28. Jul 2024, 22:36
von mikele
Hallo,
ich habe mal ein bisschen mit der Zwischenablage und Python gespielt.
Folgendes Makro sollte sich den kopierten Dateinamen (der dann noch in der Zwischenablage hängt) hernehmen, das Datum extrahieren und dann in die aktuell ausgewählte Zelle schreiben - also nicht erst den Dateinamen einfügen und dann ändern.
Code: Alles auswählen
import uno
def createUnoService(serviceName):
sm = uno.getComponentContext().ServiceManager
return sm.createInstanceWithContext(serviceName, uno.getComponentContext())
def zwischenablage_text():
oClip = createUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
DataObj= createUnoService("com.sun.star.datatransfer.clipboard.XTransferable")
DataObj= oClip.getContents()
DataTypSeq=DataObj.getTransferDataFlavors()
tmp=''
for art in DataTypSeq:
if art.MimeType[:10]=='text/plain':
tmp=DataObj.getTransferData(art)
return tmp
def datum_aus_Dateiname():
doc = XSCRIPTCONTEXT.getDocument()
zelle=doc.CurrentSelection
txt=zwischenablage_text()
if txt[:4]=='IMG_' and txt[-4:]=='.jpg':
datum=txt[4:8]+'-'+ txt[8:10]+'-'+ txt[10:12]
zelle.FormulaLocal = datum
Das Ganze ist nur grob gestestet und nicht robust ...
Re: Click-Ereigniss? abfangen
Verfasst: So 28. Jul 2024, 22:42
von StefKe
Boah, schau ich morgen an...
Danke - Stefan
Re: Click-Ereigniss? abfangen
Verfasst: Mo 29. Jul 2024, 09:42
von StefKe
Moin, das Makro läuft perfekt. Ich habe den Namen der Funktion noch geändert:
sonst gibt es eine Fehlermeldung.
PS: gibt es zur Funktionsweise von:
Code: Alles auswählen
def createUnoService(serviceName):
sm = uno.getComponentContext().ServiceManager
return sm.createInstanceWithContext(serviceName, uno.getComponentContext())
irgendwo ein Tutorial für völlige Dummies? Mit der Anwendung der API etc. stehe ich irgendwie völlig auf dem Schlauch....
Danke - Stefan
Re: Click-Ereigniss? abfangen
Verfasst: Mo 29. Jul 2024, 09:53
von karolus
Hallo
Das ganze mal anders rum gedacht, …
zuerst die Zielzelle auswählen und
dann die …jpg-datei per Dialog:
Code: Alles auswählen
from pathlib import Path
from uno import fileUrlToSystemPath as uri2path
from datetime import datetime as dt
createUnoService = XSCRIPTCONTEXT.ctx.ServiceManager.createInstance
def jpg_timestamp_via_file_dialog(*_):
doc = XSCRIPTCONTEXT.getDocument()
sel = doc.CurrentSelection
dialog = createUnoService("com.sun.star.ui.dialogs.FilePicker")
dialog.DisplayDirectory= (Path.home() / "Pictures" / "Neu").as_uri()
dialog.Title = "…jpg … Auswahl"
dialog.appendFilter("JPG", "*.jpg")
if dialog.execute():
try:
file_name = Path( uri2path( dialog.Files[0] ) ).name
_date = dt.strptime(file_name ,"IMG_%Y%m%d_%H%M%S.jpg")
sel.FormulaLocal= f"{_date:%Y-%m-%d %H:%M:%S}"
except ValueError:
sel.String = "Datei-name passt nicht"
Re: Click-Ereigniss? abfangen
Verfasst: Mo 29. Jul 2024, 09:59
von StefKe
Wenn das nicht kreativ ist, was dann?
Ich hab es dem 'Doppelklick' zugeordnet - läuft!
Danke - Stefan