Autor Thema: NotesUIDocument.GetSelectedText liefert immer vollen Feldinhalt  (Gelesen 6771 mal)

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Hallo,

ich möchte eine Editierungshilfe erstellen. Dabei soll der in einem Textfeld (kein Richtext, kein Multivalue, aber mehrere Zeilen erlaubt)  markierte Text ersetzt werden.

NotesUIDocument.GetCurrentField liefert einen korrekten Wert, aber GetSelectedText liefert stets den gesamten Feldinhalt, obwohl lt. Doku entweder den markierten Text oder "", wenn nichts markiert ist.

Warum ist das so?

Und warum liefert NotesUIDocument.GetCurrentField den Wert "", wenn ich keine Action, sondern einen Button verwende?

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Noch so ein Schwachfug bei Notes: Die Ursache meines Problems war die Tatsache, dass ich für das Feld den Native OS Style anstelle des Notes Style ausgewählt hatte...  :-:

Allerdings bleibt immer noch die Frage, warum ich bei keiner Selektion den kompletten Text erhalte und wieso das Ganze nicht mit einem (HotSpot-)Button funktioniert???
« Letzte Änderung: 25.08.06 - 12:10:47 von masseur81 »

Glombi

  • Gast
Wenn Du einen Button verwendest, ändert sich der Fokus. Der ist dann nämlich auf dem Button, da dieser Teil des Dokuments ist.
Wenn Du eine Aktion verwendest, bleibt der Fokus im Feld.

Andreas

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Das hab ich mir nun so auch gedacht, nur versteh ich dieses Konzept (mal wieder) nicht:

1. Wenn ich einen Button klicke, ändere ich den Fokus, aber nicht das aktell editierte Feld, weil ein Button ja kein Feld als Model hat.

2. Wie bekomme ich nun rund um mein Textfeld Buttons platziert, die diese Aktion starten können? Action Buttons werden doch immer am Rand des Formulars (oben) angezeigt, nicht im Formular selbst.

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
zu 1.

Aber genau bei Fokus liegt der Hase im Pfeffer. Die Methode GetCurrentField ermittelt über den Fokus das aktuelle Feld und beim klicken auf den Button änderst du den Fokus auf den Button und das ist nun mal kein Feld.

zu 2.

Ganz einfach. Du fügst in deiner Maske vor oder hinter dem entsprechenden Feld eine Schaltfläche oder eine Grafik über die du einen Hotspot legst ein.


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

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Vielleicht stell ich mich auch einfach nur blöd an ;-) , aber ich habe einen Action Hotspot über ein Bild gelegt, aber wenn ich da drauf klicke, ist das Bild selektiert und damit wieder CurrentField="".  :-:

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
... weil der Fokus nicht auf dem Feld sondern auf dem Hotspot liegt.

So kommst du auf keinen Fall weiter.

Rufst du GetSelectedText mit oder ohne Parameter (sprich den Namen des Feldes) auf?

In der Designer-Hilfe steht nämlich folgendes:

Syntax
text$ = notesUIDocument.GetSelectedText( [ fieldName$ ] )

Parameters
fieldName$
String. Optional. Restricts the return value to the selected text within the specified field.

Return value
text$

(With no parameter) the currently selected text, or an empty string if nothing is selected.

(With the parameter) the currently selected text within the specified field, or an empty string if nothing is selected within the specified field.



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

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Ist mir auch alles klar, nur möchte ich an der entsprechenden Stelle Text einfügen, und InsertText bietet einen solchen Parameter nicht.

EDIT: Bei mir funktioniert auch GetSelectedText(fieldName) nicht. Der Rückgabewert ist dann immer der Text des Hotspots, den ich anklicke. (das Feld heißt "text" und ich rufe ui.CurrentDocument.GetSelectedText("text") auf)
« Letzte Änderung: 29.08.06 - 08:54:24 von masseur81 »

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Schau dir in der Designer-Hilfe mal das 2.Beispiel zu GetSelectedText an. Das funktioniert.


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

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Schau dir in der Designer-Hilfe mal das 2.Beispiel zu GetSelectedText an. Das funktioniert.

Code
Sub Click(Source As Button)
  Dim workspace As New NotesUIWorkspace
  Dim uidoc As NotesUIDocument
  Dim text As String
  Dim fieldName As String
  fieldName = "Subject"
  Set uidoc = workspace.CurrentDocument
  text = uidoc.GetSelectedText(fieldName)
  If text <> "" Then
    If Not uidoc.EditMode Then uidoc.EditMode = True
    Call uidoc.FieldSetText("Subject", text)
  End If
End Sub

Wie ich bereits erwähnte, funktioniert dies bei mir nicht... (ND 7.0.1)

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Ich hab's mit 6.5.5 als Aktion probiert und es hat funktioniert.

Kann's unter 7 im Moment leider nicht testen.

Wenn das unter 7 nicht funktionieren sollte, dann hab ich auch keine Idee mehr.

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

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Ihr quatscht aneinander vorbei.
Ich fasse zusammen:

- in einer Aktion funktioniert das immer, weil die Aktion den Fokus nicht verschiebt
- in einem Hotspot funktioniert das NIE, und es gibt auch keinen (mir bekannten) Workaround, der Klick auf den Hotspot (egal ob Hotspot über Bild, Schaltfläche, Hotspot über text....) verändert IMMER den Fokus.

2 mögliche Ansätze, um eventuell doch zum Ziel zu kommen:

1. prüfen, ob im Exiting des Feldes der fokus noch korrekt ist und wenn ja: die Information z.B. über die Clipboard- Klasse (ich meine die ist irgendwo hier im Forum zu finden) oder über Environment merken. Diese "gemerkte" Information dann im Hotspot- Code benutzen

2. vielleicht gibt es ja über die API noch ne möglichkeit...

Beide nur so ins blaue geschossen...

Tode
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 Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
So, nun hab ich das Beispiel auch mal unter 7.0.1 als Aktion getestet und wie es nicht anders zu erwarten war, funktioniert es.

Was spricht denn gegen einen Action-Button am oberen Rand der Maske? Was soll denn das überhaupt werden?

Axel

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

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Was soll denn das überhaupt werden?

Ich habe ein Texteingabefeld, in das u.a. auch eigene Tags eingegeben werden müssen. Den Benutzer möchte ich dabei unterstützen, so wie hier im Forum auch durch Buttons/Link/wasauchimmer. Die Buttons sollten also unter/neben dem Textfeld liegen, zumal es in dem Dokument sogar 2 solcher Felder gibt, da sonst die Zuordnung nicht ganz klar ist.

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
In dem Fall kommst du mit GetSelectedText nicht weiter. Du musst mit Sicherheit einige Umwege fliegen. Tode hat es ja schon angedeutet.

Und selbst dann wird es sehr schwierig an die aktuele Cursorposition innerhalb des Feldes ranzukommen.

Mir fällt da auf Anhieb keine brauchbare Lösung ein.


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

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
Genau das ist ja meine Misere mit Lotus Notes. Einfache Formulare, schnell erstellte Anwendungen - kein Problem! Aber wenn es mal darum geht, etwas Usability-KnowHow einbringen zu wollen, versagt Notes kläglich.

Naja, danke erstmal für die vielen Antworten.

Glombi

  • Gast
Vielleicht kann da der embedded editor weiterhelfen, den es ab R7 gibt. Ich habe das Teil aber bis dato nicht nicht wirklich verinnerlicht, also kann ich nicht sagen, ob es was bringt.

Andreas

Offline masseur81

  • Junior Mitglied
  • **
  • Beiträge: 90
In Domino Notes 6 ist es Entwicklern möglich, eine eingebettete Ansicht und einen sogenannten eingebetteten Editor auf einer Maske unterzubringen und miteinander zu verknüpfen. In der eingebetteten Ansicht markierte Dokumente werden im Editor inklusive aller notwendigen Funktionalitäten (Aktionen, Schaltflächen) angezeigt. So können Benutzer Dokumente aus der Ansicht der Reihe nach abarbeiten, ohne die Dokumente jeweils in einem neuen Fenster öffnen zu müssen.

Ist also leider nicht das, was ich suche.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz