Autor Thema: Maske aktualisieren  (Gelesen 4242 mal)

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Maske aktualisieren
« am: 18.07.07 - 09:45:54 »
Hallo Forum,

ich habe eine Maske mit an die 40 Zahlen-Eingabefelder, die letztlich eine Gesamtbewertung in einem berechneten Feld ergeben.

Ich hätte es gerne, dass die Gesamtbewertung jedesmal sofort aktualisiert wird wenn ein Wert geändert wird. Daher wollte ich in den Eingabefeldern überall mit uidoc.Refresh in OnChange die Maske aktualisieren.

Meine Frage: Muss ich das tatsächlich bei allen 40 Eingabefeldern hinterlegen, oder gibt es eine zentrale Möglichkeit die Maske zu aktualisieren?

Die Einstellung "Felder automatisch aktualisieren" bei den Maskeneigenschaften bringt nicht viel, da immer erst aktualisiert wird, wenn man in die nächste Zeile nach der Gesamtbewertung klickt.

Wie löst ihr sowas?

Gruß
Thomas
« Letzte Änderung: 18.07.07 - 16:57:02 von iukhdh »
Thomas von der IuK

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Maske aktualisieren
« Antwort #1 am: 18.07.07 - 09:48:31 »
Eine zentrale Möglichkeit ist nur die Maskenoption "Felder automatisch aktualisieren". Wenn das nicht pratikabel ist, bleibt dir nur noch die Anpassung der Events der einzelnen Felder.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Maske aktualisieren
« Antwort #2 am: 18.07.07 - 10:32:21 »
Hmm,

ist nicht unbedingt das was ich hören wollte.  ;)

Nun gut, es handelt sich ja nun nur um ein paar Codezeilen, aber mal eine grundsätzliche Frage von einem Script-Rookie:

Muss ich diesen Code wirklich überall reinkopieren, es könnte ja auch weitaus mehr sein. Oder besteht im Script die Möglichkeit irgendwo solche Routinen einmalig zu hinterlegen, und diese dann nur im OnChange-Event aufzurufen?

Thomas
Thomas von der IuK

klaussal

  • Gast
Re: Maske aktualisieren
« Antwort #3 am: 18.07.07 - 10:38:47 »
Ich hatte schon mal in einer Maske einen Button ("Werte aktualisieren") eingebaut.

botschi

  • Gast
Re: Maske aktualisieren
« Antwort #4 am: 18.07.07 - 10:57:36 »
Ist zwar nicht GENAU das was Thomas wollte, aber nicht nur für den Entwickler und die Pflege leichter, sondern auch für den User durchaus zumutbar denke ich.

Matthias

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Maske aktualisieren
« Antwort #5 am: 18.07.07 - 10:58:46 »
Hmm,

ist nicht unbedingt das was ich hören wollte.  ;)


Das glaube ich dir.  ;)


Muss ich diesen Code wirklich überall reinkopieren, es könnte ja auch weitaus mehr sein. Oder besteht im Script die Möglichkeit irgendwo solche Routinen einmalig zu hinterlegen, und diese dann nur im OnChange-Event aufzurufen?

Du kannst den Code auch als Routine oder Funktion in eine Scriptbibliothek auslagern, diese dann mit Use "Name der Biblothek" im Options - Abschnitt in den Globals der Maske einbinden. Dann kannst du an allen Ecken der Maske diese Routine/Funktion aufrufen.


Ich hatte schon mal in einer Maske einen Button ("Werte aktualisieren") eingebaut.

Dann muss aber die Aktualisierung manuell passieren. Aber genau das soll ja hier vermieden werden.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Maske aktualisieren
« Antwort #6 am: 18.07.07 - 11:06:57 »
@klauss

Aha, anstatt auf F9 drückt man dann auf den Aktualisierungsbutton?    :D

@Axel

Na das muss ich mir mal genauer anschauen. Danke für den Tipp

Thomas
Thomas von der IuK

klaussal

  • Gast
Re: Maske aktualisieren
« Antwort #7 am: 18.07.07 - 11:10:13 »
Zitat
Aha, anstatt auf F9 drückt man dann auf den Aktualisierungsbutton?

Richtig ! Nicht jeder User kennt F9 (zumindest hier). Und so ein schöner, fetter, roter Button ist nicht zu übersehen...  ;D

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Maske aktualisieren
« Antwort #8 am: 18.07.07 - 15:01:54 »
Also irgendwie will das nicht.

Ich habe Axels Vorschlag wie folgt versucht umzusetzen:

folgende Scriptbibliothek "aktualisieren" angelegt:

Sub Initialize
   Dim nuiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = nuiws.CurrentDocument
   uidoc.Refresh
End Sub


Ins Options der Maske

Use "aktualisieren"

reingeschrieben.

Wenn ich nun die Maske aufrufe, bekomme ich die Fehlermeldung "Dokumentbefehl ist nicht verfügbar". Was bedeutet das?


Und ... wie rufe ich dann diese Bibliothek auf? Auch mit Use "aktualisieren" beim Onchange-event des Feldes?

Immer wenn ich das da reinschreibe, wird der Code nach Options des Felds verschoben. Also irgendwas krieg ich nicht hin.

Thomas  :(

Thomas von der IuK

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Maske aktualisieren
« Antwort #9 am: 18.07.07 - 15:08:41 »
Ganz so funktioniert das nicht.

Du musst in der Scriptbibliothek eine neue Routine anlegen, z.B DokumentRefresh. Dazu gibst du im Options-Abschnitt einfach Sub DokumentRefresh ein. Es wird dann automatisch zu einer neuen Routine.

Dann kopierst du die Zeilen dort hinein. Das Ganze sieht zum Schluss so aus:

Sub DokumentRefresh
   Dim nuiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = nuiws.CurrentDocument
   uidoc.Refresh
End Sub

Aus Sub Initialize musst du die Zeilen löschen!

Das mit dem Use ist soweit richtig. In die Events der Felder muss dann

Call DokumentRefresh

als Aufruf der Routine rein.


Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Maske aktualisieren
« Antwort #10 am: 18.07.07 - 15:33:56 »
Zitat
Wenn ich nun die Maske aufrufe, bekomme ich die Fehlermeldung "Dokumentbefehl ist nicht verfügbar". Was bedeutet das?

Du kannst einen Refresh nur im Bearbeitungsmodus aufrufen.
Also:

...
if uidoc.EditMode Then
    uidoc.Refresh
end if
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Maske aktualisieren
« Antwort #11 am: 18.07.07 - 15:58:01 »
Also irgendwie ist heute nicht mein Tag.

Das mit der Routine in der Scriptbibliothek leuchtet mir ein. Hab ich nun auch so abgeändert und dort die Sub aktualisieren angelegt

Wenn ich nun aber im Onchange-event das call aktualisieren eingebe kommt jedesmal die Meldung Not a sub or funktion name:AKTUALISIEREN.

Bei den Options der Maske Eingabe  (bei Eingabe (Maske) ) steht Use "aktualisieren" drin.

 :-:
Thomas von der IuK

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Maske aktualisieren
« Antwort #12 am: 18.07.07 - 16:10:41 »
Wahrscheinlich stößt Notes sich an den doppelten Namen.

Benenn' mal die Bibliothek oder die Routine um.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Maske aktualisieren
« Antwort #13 am: 18.07.07 - 16:18:16 »
Modulname = Name der ScriptLib ist kein Problem.

Wurde die Reihenfolge des Einbinden eingehalten? Sicherheitshalber:
- Lib in Maske einbinden, speichern, Maske schliessen
- Erst jetzt die Sub im Event aufrufen

Bernhard

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Maske aktualisieren
« Antwort #14 am: 18.07.07 - 16:34:32 »
Also ich hab nun mal beide Hinweise versucht.

Die Script-Bibliothek heisst nun "Aktuell", die sub "aktualisieren".
Ich hab erst die ScriptLib Aktuell eingebunden bei 'Options, gespeichert, sogar den Designer geschlossen, dann beim onchange-event call aktualisieren eingegeben, er nimmt es nicht.

Hmm, ich verwende aber schon das richtige Options? Es gibt ja im Objekt Fenster erst mal eine Kategorie mit (Globals)Eingabe, dann eine Kategorie mit Eingabe(Maske). In der zweiten hab ichs eingebunden, bei der ersten klappts eh nicht.

Seltsam, seltsam.
Thomas von der IuK

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Maske aktualisieren
« Antwort #15 am: 18.07.07 - 16:39:02 »
Du musst das im Options-Abschnitt unter Globals der Maske einbinden. Nur dann gilt es an allen Ecken der Maske.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Maske aktualisieren
« Antwort #16 am: 18.07.07 - 16:56:35 »
Oh Mann, war das eine Geburt.

Ich habs tatsächlich in den falschen Options eingetragen, es hat aber vorher auch nie funktionert, was ich nun einfach mal auf das von Bernhard skizzierte Problem schiebe. Nachdem ich nun erst den Eintrag im richtigen Options eingetragen habe, dann gespeichert, geschlossen und dann den Rest eingetragen habe hats endlich geklappt.

Uff

Vielen Dank für die Hilfe an diesem heissen Nachmittag

  :knuddel:

Thomas
Thomas von der IuK

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Maske aktualisieren
« Antwort #17 am: 19.07.07 - 08:47:17 »
Hallo,
ich hätte das mit der Timerklasse von Notes gemacht, damit kann man alle 1, 2 oder x Sekunden, halt periodisch, Code ausführen und muss nicht überall ein Refresh einbauen.

--> global
Dim elapsedTimer As NotesTimer

--> postopen
Set elapsedTimer = New NotesTimer(3, "Die Zeit in Sekunden")
On Event Alarm From elapsedTimer Call meineFunktion

dann natürlich noch deine Funktion (global).

der Bubble
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Maske aktualisieren
« Antwort #18 am: 19.07.07 - 11:41:41 »
Ja, wäre auch eine Lösung gewesen, wobei ich mir da wieder meine User vorstelle, die alle naslang anrufen weil da irgendwas gaaaaanz komisch reagiert

 ;)

Danke trotzdem für den Tipp, das kann ich vielleicht woanders mal brauchen

Thomas
Thomas von der IuK

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz