0

Befehlsschaltfläche nach einmaligem Gebrauch sperren

Hallo zusammen,

gibt es eine Möglichkeit, eine Befehlsschaltfläche nach einmaliger Anwendung (auf einem Datensatz) für eine weitere Verwendung zu sperren?

Usecase:

Erfassung von verschiedenen Budgetpositionen (einzelne Datensätze) für das kommende Finanzjahr 2021.
Im Herbst 2021 erfolgt dann die Erfassung der Budgetpositionen für das Finanzjahr 2022. Hierfür habe ich eine Schaltfläche mit einem Script belegt, welches mir erlaubt eine Budgetposition zu duplizieren und das Finanjahr um 1 hochstellt.
Dies soll nun aber nur einmal pro Datensatz möglich sein, damit es nciht zu doppelnennungen im selben Finanzjahr kommen kann.

Gibts so eine Möglichkeit oder einen WEg um dies zu erreichen (Einschränkung auf 1malige Kopie eines Datensatzes)?
N.B. Es ist mir bewusst, dass es in der Befehlsleiste eine Schalfläche für die Duplizierung gibt, und diese wohl auch weiterhin vorhanden sein wird.

4 Antworten

null
    • UweG
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Stonie.

    Eine Möglichkeit ist, mit einem verstecktem  Hilfsfeld (bspw. Ja/Nein) welches nach betätigen des Buttons und Ausführung deines Scriptes auf Ja gesetzt wird deinen Button zu verstecken. (Sichtbar wenn Ja/Nein = Nein)

    Eleganter wären vielleicht 2 Funktionsfelder mit dem Hilfsfeld. Das eine führt dein Script aus und setzt das Hilfsfeld auf Ja und ist sichbar wenn Hilfsfeld "Nein". Das andere erscheint an gleicher Stelle mit dem Hinweis "Bereits Dupliziert" oder in der Farbe Rot wenn Hilfsfeld "Ja" und hat keinerlei Script beim Trigger "Klick".

    Macht das Formular nicht kaputt und bietet gleichzeitig Information über den Zustand.

    Ein Beispiel findest du in 0002_Ninox Reference im Webinar bei dem Funktionsfeld "Schreibschutz aufheben (Click)" im den Funktions-Records.

    In 0002_Scriptcode sind auch die Scripte dafür hinterlegt.

    • Torsten_Stang.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    ... für die Alternativ-Variante von Uwe kann man durchaus mit einem Funktionsfeld arbeiten. Dazu nimmt man die Funktion nur für die Anzeige her

     

    if not Hilfsfeld then "duplizieren" else "bereits dupliziert" end

     

    und setzt die eigentliche Funktion in den On-Click-Bereich des Feldes

     

    if not Hilfsfeld then
       Code
    end

     

    lg, Torsten

    • UweG
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Da Torsten so schönen Script-Code geschrieben hat, probiere ich es auch einmal.

    Verstecktes Ja/Nein Feld mit Name "Dupliziert"

    Sichtbar wenn: null

    Funktionsfeld mit Name  "Duplizieren"

    Funktion:

    let vAnzeige := "";

    if Dupliziert  true then

    vAnzeige := "Bereits Dupliziert"

    else

    vAnzeige := "Duplizieren"

    end;

    vAnzeige

    -----

    Trigger "Beim Anklicken":

    if Dupliziert not true then

    Hier deinen Scriptcode zum duplizieren infügen;

    Dupliziert := true

    end

    • UweG
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Anmerkung zur Duplizier Schaltfläche in Ninox.
    Es gibt eine von Ninox nicht unterstützte Möglichkeit diesen nicht sichtbatr zu machen:

    Ein Funktionsfeld in das entsprechende Formular erstellen.

    Dieses muss sichtbar sein, kann aber per Farbdarstellung in der Textbox dem Formularhintergrund so angepasst werden, dass es nicht sichtbar erscheint.

    Folgendes Script in Funktion einfügen:

    html("
    <style>
    .hud-menu-button.i-32-24.i-light-grey.i-setting-copy{display: none;}
    ")

    ------

    Sollte das Formular mit Registern geteilt sein, muss jedes Register dieses Funktionsfeld enthalten. Bsp. fxHTML_Reg1, fxHTML_Reg2 etc.

    Das kann man auch für alle anderen Ninox Schaltflächen machen, wenn man diese Funktionen ausschließlich auf Buttons/Funktionsfelder legen möchte um ungewollte Aktionen per alert() oder dialog() abzufangen.