Hi,
zum (leidigen) Thema mit den Verbergeformel ...
wenn man mehrere kombiniert bekomm ich immer einen Knoten ins Hirn :-[
Meiner Meinung nach wären "Darstellungsformeln" besser gewesen,
meist hat man ja: die Schaltfläche will ich sehen, wenn...
Darum hab ich mir einen einfachen Trick angewöhnt:
Die Verbergeformel ist ja das Gegenteil der Darstellungsformel:
Verbergeformel = !(Anzeigeformel)
Wenns ums Anzeigen geht, schreib ich Verbergeformeln IMMER in eine grosse Klammer und negiere sie:
!(
FORMEL1 & FORMEL2 & FORMEL3
)
-> wird angezeigt wenn alle 3 Formel war sind
Ist aber das gleiche wie:
wird Verborgen wenn eine der Formeln falsch ist:
FORMEL1 | FORMEL2 | FORMEL3
In Deinem Fall wäre das dann:
Hardware soll es nur im Status=1 sehen:
!(
(@IsMember("[Hardware]";@UserRoles))
& Status=1
)
bzw.
Nicht Hardware oder nicht Status=1 soll es nicht sehen:
@IsNotMember("[Hardware]";@UserRoles)
| Status!=1
)
Eine ander Möglichkeit ist natürlich die Formeln zuerst in einfache Ausrück (true/false) zuzuweisen
und dann wirken lassen:
als negierte-Anzeigeformel
HardwareUser:= @IsMember("[Hardware]";@UserRoles);
StatusIstOK:= Status=1;
!(Hardwareuser & StatusIstOK)
als Verbergeformel:
Hardwareuser:= @IsMember("[Hardware]";@UserRoles);
StatusIstOK:= Status=1;
!Hardwareuser | !StatusIstOK
Viel Erflog, Pete(r)
Logik war halt irgendwann in meinem Studium,
Praxis ist heute....
Hi,
passt so.
Wie gesagt es muss ein Richtig/Falsch aus der Formel resultieren.
Ich setzte gerne nochmals eine Formel um die ausdrücke und jeden ausdruck in eine eigene Zeile.
Und kurz ein Kommentar in der ersten zeile ist auch manchmal hilfreich, wenn man später grübelt.
Dies ist zwar das selbe Resultat wäre aber Übersichtlicher:
REM {verbergen für nicht Hardware-User oder nach dem Status 9 };
(
@IsNotMember("[Hardware]";@UserRoles)
| (status >9)
)
Aber auch hier finde ich eine "Anzeigeformel" sprechender: ::)
REM {anzeigen für Hardware-User und nur bis zum Status 9 };
!(
@IsMember("[Hardware]";@UserRoles)
& (status <=9)
)
Teste es doch einfach mit einen "bearbeitbaren Feld" für Status, dieses kannst Du ja auch nur für die Rolle "[Desinger]" anzeigen, und für die anderen verbergen ;)
"Komplizierte" Formeln kannst Du auch in ein Feld "Berechnet zur Anzeige" berechenen lassen und dort prüfen.
Beachte noch, wenn Du immer Status := Status +1 setzt,
dass es kompliziert wird, wenn Du im nachhinein einen neuen Zwischenstatus einfügen musst.
(z.B. zwischen 4 und 5. Ok, hier gäbs zwar 4.1 4.2, aber 4.1+1 = 5.1 !=5)
Aus diesem Grund würde ich
zu den Stati 10 20 30 40 ... oder 100 200 300 ... raten
und definiere feste Stati in Deinem Workflow: der Button soll Status:=10 setzen, statt Status := Status +1 .
Wenn Du mehr als nur ein oder zwei Buttons/Texte Felder/Tabelle... einem "Status" verbergen willst, solltest Du noch über berechnete Teilmasken nachdenken.
z.B. @IF(Status=90; "TeilmaskeFreigabe";"TeilmaskeFreigabeDarstellung")
Viel Erfolg, Pete(r)
Hi,
Ein konstruktiver Vorschlag zur History.
Mittlerweile hast Du zugegeben, dass die adaptierte Script-aktionen dein momentanes Verständnis etwas übersteigen.
Das ist keine Schande! Im Gegenteil, zu wissen was man nicht weis und dies zuzugeben ist eine hohe Einsicht. Alle waren mal klein und keiner weiss alles.
Ich empfehle Dir nicht gleich zu versuchen eine perfekte Anwendung zu bauen! (gibts die überhaupt?)
Nutze die Mittel die da sind und verwende doch einfach mal einfachere Methoden, die Notes zu genüge bietet.
Scheue Dich nicht vor den @Funkitonen und @Commands.
Die mögen zwar uncool aussehen, reichen aber oft auch schon aus.
Also Vorschlag:
Du wills eine History die schreibt:
- User hat Button gedrückt:
Im Button
REM {hier kann weiterer Code im Button stehen};
tpEintrag:=@Text(@Now) + " Button durch " + @Name([CN];@UserName) + " gedrückt.";
@SetField("History"; History : tpEintrag );
REM {hier kann noch weiterer Code im Button stehen};
@PostedCommand([FileSave]);
@PostedCommand([FileCloseWindow]);
REM {hier sollte nichst mehr kommen}
History ist dabei
ein Mehfachwertfeld (in den Eigenschaften 1.Register),
Typ berechnet,
und damits schöner aussieht in den erweiterten Eigenschaften (3.Register): Mehrfachwerte getrennt anzeigen mit "neue Zeile"
Du Willst eine History die schreibt:
- User hat das Dokument gespeichert:
Das Historyfeld hat dann eine Formel, die Protokolliert, wann ein Dokument gespeichert wurde:
tpEintrag:= @Text(@Now) + " Dokument durch " + @Name([CN];@UserName) + " gespeichert. ";
@IF(
@IsDocBeingSaved; @ThisValue : tpEintrag;
@ThisValue)
Bums fertig ich hoff das reicht erstmal. ;)
Und wenn Deinen Chefs mehr wollen, dann sollen sie Dir auch eine Schulung o.ä. rausrücken!
Viel Erfolg! Pete(r)