Benutzereingabe abfangen und Zellenwert ändern.

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

Moderator: Moderatoren

Andre_B
Beiträge: 8
Registriert: Fr, 06.12.2013 20:09

Benutzereingabe abfangen und Zellenwert ändern.

Beitrag von Andre_B »

Hi,
kann ich irgendwie die Eingabe des Benutzers nach verlassen des Feldes abfangen und die Eingabe in der Zelle ändern? So wie man es halt aus JavaScript kennt. GetElementByID(xyz).value....
Gibt es sowas? Ich bin leider kein häufiger Nutzer in der Tiefe des Programms und muss leider diese Einfach Frage stellen.

Selbst beim einfachem Hallo Welt Script bekomme ich schon eine Fehlermeldung und das macht mich echt irre.

Code: Alles auswählen

    importClass(Packages.com.sun.star.uno.UnoRuntime);
    importClass(Packages.com.sun.star.text.XTextDocument);
    var oModel = XSCRIPTCONTEXT.getDocument();
    var oTextdoc = UnoRuntime.queryInterface(XTextDocument, oModel);
    var oText = oTextdoc.getText();
    var oCursor = oText.createTextCursor();
    oText.insertString(oCursor, "Hello World", false);
Fehlermeldung:
TypeError: Cannot call method "getText" of null (vnd.sun.star.tdoc:/1/Scripts/javascript/jscript_bib/checkValue.js/ucb/#5
Was auch immer er mir damit sagen will, ich verstehe es nicht und kann es nicht beheben. Wäre nett, wenn jemand mir nen Hinweis oder gar eine Lösung geben könnte.

lg und Danke
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Benutzereingabe abfangen und Zellenwert ändern.

Beitrag von F3K Total »

Hi,
ich kann kein Java, aber ein

Code: Alles auswählen

com.sun.star.text.XTextDocument
ist sicherlich ein Writer Dokument und kein Calc.
Anbei ein Basic Beispiel dass beimTabellenereignis auf Tabelle 1, "Inhalt geändert" in der Spalte A (A2:A500) dieTextveränderung auslöst. Extras/Zellinhalte/Autoeingabe muss ausgestellt werden.

Code: Alles auswählen

Sub S_R_W(oEvt)
    oSheet = Thiscomponent.sheets.getbyname("Tabelle1")
    oCellRange = oSheet.getCellRangeByName("A2:A500")'aktiver Bereich in dem die Änderungen vorgenommen werden sollen
    if oEvt.supportsService("com.sun.star.sheet.SheetCell") then
       if oCellRange.queryIntersection(oEvt.RangeAddress).count = 1 then'
           select case oEvt.String
           case "r"
           oEvt.String = "readable"
           case "R"
           oEvt.String = "readable"
           case "w"
           oEvt.String = "writable"
           case "W"
           oEvt.String = "writable"
           end select
       endif
    endif
End Sub
Gruß R
Antworten