Autor Thema: Verständisproblem bei der Feldberechnung in Dialogboxen.  (Gelesen 3081 mal)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Hallo Leute,

ich steckt mal wieder in einer Verständniskrise und hoffe einer von Euch kann mich daraus befreien.

Ich habe folgendes Problem.

Ich möchte in einer DB ein ganz bestimmtes Dokument erstellen, dazu rufe ich die Maske über einen Aktion auf.
Bevor die Maske aufgeht, wir einen Layoutbereich in einer Dialogbox geöffnet.
In der Dialogmaske sind Felder die gefüllt werden müssen um danach z.B. einen bestimmten Textbaustein in ein RichTextFeld zu kopieren etc.

Nun zu meinem Problem.
In der Dialogbox muss das letzte bearbeitbare Feld die "Kundennummer" sein und rechts daneben soll nach der Eingabe automatisch
der Name des Kunden angezeigt werden.
Das Feld für den Namen ist aber berechnet und soll so bleiben, weil das Feld dann nicht sichtbar ist und als Label fungieren kann.
Also habe ich das Script schon im Event "Exiting" und auch schon in "OnBlur" eingebaut.
Bei beiden Versionen wird das Script aber erst nach dem dritten mal Tab-Taste drücken ausgeführt, man möchte es aber gleich nach der Eingabe der Kundennummer haben.

Wie kriege ich es hin, dass der Namen des Kunden direkt nach der Eingabe der Kundennummer im berechneten Feld rechts daneben angezeigt wird?

Danke Euch schon mal im voraus für die Hilfe.
Gruß Gerry (Lancelot)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.873
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Verständisproblem bei der Feldberechnung in Dialogboxen.
« Antwort #1 am: 29.07.14 - 09:08:22 »
"...das Script schon im Exiting... eingebaut"... Welches Script?

"Nach der Eingabe": Was heisst das? wenn der Benutzer aufhört zu tippen?  Wenn der Benutzer das Feld verlässt?

Sei mal bitte ein wenig konkreter.

Wenn das Feld "Name" berechnet ist, dann reicht eigentlich im Exiting vom Kundennummer- Feld ein ws.CurrentDocument.Refresh...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 477
Re: Verständisproblem bei der Feldberechnung in Dialogboxen.
« Antwort #2 am: 29.07.14 - 09:22:19 »
Um das Refresh zu testen, hilft oft der Einsatz von F9 - reagiert das Feld erst beim 2. oder 3. Versuch hängt dies in der Regel mit der internen Reihenfolge der Felder in der Maske zusammen.
Normalerweise berechnet Notes von links oben nach rechts unten - das gilt aber nicht für alte Layoutregionen, da wirkt der Zeitpunkt der Erstellung der Felder irgendwie mit - da hilft meistens nur die Umstellung auf eine Dialogbox auf Basis einer normalen Tabelle.
Alternativ geht auch (wenn auch nicht schön der mehrfache Aufruf von ws.CurrentDocument.Refresh() ).

Gruß

André

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Verständisproblem bei der Feldberechnung in Dialogboxen.
« Antwort #3 am: 29.07.14 - 09:51:47 »
@Tode:
Das Lotus Script das ich dabei verwende habe ich im Event Feld-Exeting eingebaut und auch schon im Event-onBlur.
Ich habe mich für Lotus Script entschieden, weil ich bevor der Namen des Kunden gezogen wird eine Berechnung der Prüfziffer machen muss.

Sobald man das Feld verlässt soll die Berechnung starten und den Namen des Kunden in das berechnete Feld dahinter eintragen.
Wie gesagt das soll beim Verlassen des Feldes funktionieren und nicht erst wenn z.B. die Dialogbox geschlossen wird.
Da aber hinter dem Feld wo die Kartennummer eingetragen wird kein bearbeitbares Feld mehr sondern nur noch das berechnete Feld kommt sieht es so aus als startet das Lotus Script nicht.
Erst wenn ich drei mal die Tab-Taste drückt wird die Berechnung durchgeführt.

@Andrè:
Ich kann tausend mal F9 drücken, da passiert in meiner Dialogbox überhaupt nichts.

Vielleicht wird es klarer wenn man die Box sieht, deswegen hier ein Screenshot davon.

Gruß Gerry (Lancelot)

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 477
Re: Verständisproblem bei der Feldberechnung in Dialogboxen.
« Antwort #4 am: 30.07.14 - 08:40:50 »
Hallo,

wenn der LotusScript-Code nur im Exiting-Evenmt des Feldes hängt, und das Feld das letzte in der Maske ist, verwundert das Verhalten nicht, da er bei den ersten beiden Tabs den Fokus zwar auf die Schaltflächen "OK" und "Abbrechen" verschiebt, aber das Feld erst wirklich verlässt, wenn beim 3. Tab der Cursor wieder in das erste Feld der Maske springt.
Das ist so und bei Eingaben über Textfelder gibt es da auch keine wirkliche Alternative. F9 hilft natürlich nur, wenn sich der Code entweder im Recalc-Ereignis befindet oder das Anzeigefeld selbst die Berechnung durchführt.
Ohne ein Umbauen der Dialogmaske, so dass es noch ein weiteres Feld hinter dem fraglichen Textfeld gibt, sehe ich hier keine echte Chance.

Nicht unbedingt opimal, aber eventuell eine Option wäre die Umstellung auf ein Feld vom Typ-Dialogbox (Liste berechnet zum aktuellen Feldwert) und der Option "Neue Werte zulassen". In Kombination mit der Option "Felder bei Schlüsselwortänderung aktualisieren" könnte man den Prüfcode im Recalc aufrufen, man muss dann nur auf die Performance aufpassen, da das Ereignis bei der Eingabe jedes Zeichens getriggert wird (zur Sicherheit sollte man vor der weiteren Berechnung also die Länge der bisher eingegebenen Nummer prüfen).

Gruß

André

Offline HH

  • Senior Mitglied
  • ****
  • Beiträge: 339
  • Geschlecht: Männlich
Re: Verständisproblem bei der Feldberechnung in Dialogboxen.
« Antwort #5 am: 30.07.14 - 12:34:09 »
Hallo,

ich würde hinter dem Eingabefeld einen quasi unsichtbaren Dummy-Hotspot positionieren, der bei Betätigung der Tab-Taste angesprungen wird.

Gruß
Hubert

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz