Steuerelemente per Skript ansteuern

Hallo,

ich würde gerne einen Button ausgrauen per Skript. Ich verstehe leider nicht, wie ich auf ein Steuerelement auf einer Registerkarte per Skript Zugriff bekomme. Da kennt ihr euch doch bestimmt mit aus.

Viele Grüße

Thomas

Der Grundansatz bei combit CRM Eingabemasken ist, dass die „Verfügbarkeit“ (Sichtbarkeit oder Bearbeitbarkeit, letzteres entspricht einem Button dem „Ausgrauen“) eines Steuerelementes von den Daten des dargestellten Datensatzes abhängt. Daher stehen in den Formeln, die die Sichtbarkeit und Bearbeitbarkeit steuern, eben die Felder das gerade angezeigten Datensatzes zur Verfügung.
Konstruiertes Beispiel: „Wenn das Geburtstagsfeld eines Kontaktes ausgefüllt ist, dann soll der Button ‚Geburtstagserinnerung setzen‘ verfügbar sein.“

Dass ein Script gezielt ein Steuerelement deaktiviert ist so nicht vorgesehen, es stellten sich dabei auch sofort folgende Probleme: Für wie lange? Wer setzt den Zustand wann wieder zurück? Wenn eine weiteres Ansichtenfenster derselben Ansicht geöffnet würde, wie wäre dann dort der Zustand der Schaltfläche? Was passiert, wenn in derselben Ansicht vom aktuellen Datensatz zu einem anderen navigiert wird? Bleibt die Schaltfläche ausgegraut? Warum? Wenn nein, müsste „dazwischen“ wiederum ein Script gestartet werden, das die Deaktivierung rückgängig macht. Diesen Mechanismus gibt es aber nicht. (Performance.)

Ergo: Wenn Sie die Verfügbarkeit über den „Zustand“ d.h die „Eigenschaften“ (Feldinhalt) des dargestellten Datensatzes ausdrücken können, dann sind Sie im Spiel. (Dieser Feldinhalt könnte natürlich per Script dann auch gesetzt/verändert werden. Klar.)

PS: an die ultra-kreativen Profis: jaaaaaa, man könnte theor. eine Sessionvariable per Script setzen und diese würde in der Bedingung verwendet werden können. Dies funktioniert aber nur bei „festen“ Sessionvariablen, d.h. die sich beim Öffnen einer Ansicht fest ergibt und die sich während der Lebensdauer des Ansichtenfensters auch nicht mehr ändert. Sehr speziell. Ich wollte daher diesen Ansatz hier nicht unnötig promoten. :innocent:

Mein Ansatz war, dass ich während eine Berechnung läuft einen Knopf ausgrauen wollte, damit dieser nicht mehrmals gedrückt wird. Aber dann werde ich das über einen Dialog regeln, der dem Anwender mitteilt, dass er warten soll. Vielen Dank für die ausführliche Information. Jetzt bin ich um einiges schlauer.

Gute Idee. Solch einen Wartedialog können Sie per cRM.StartWaitDialog und cRM.EndWaitDialog realisieren (siehe SDK Doku).