Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: bob am 04.07.03 - 22:25:21

Titel: Abfrage ob Feld = RTF
Beitrag von: bob am 04.07.03 - 22:25:21
Hi,

um abzufragen, ob das Feld, in dem sich der Cursor befindet ein RTF-Feld ist, nutze ich untenstehende Formel (über Abfrage ob Attachment angehängt werden kann).
Ist ja als Workaround soweit brauchbar, auch wenn nicht gerade elegant.

In dem Beispiel soll per Klick ein Dok-Link eingefügt werden; wenn der Cursor nicht in einem Richtext-Feld ist soll die Fehlermeldung kommen.

Klappt leider nicht ganz, die Fehlermeldung kommt erst nachdem der User in der Picklist ein Dok ausgewählt hat.
Liegt bestimmt daran, dass wohl @Command([EditInsertFileAttachment]) immer zum Schluss ausgeführt wird!?

Hat vielleicht jemand eine saubere Lösung?

bye,
Bob



_unid := @PickList([Custom]:[Single];"":"";"(DokLink_Picklist)"; "Auswahl";"Wählen Sie das Dokument aus";5);

@If(
   @IsError(
         @Command([EditInsertFileAttachment]));
         @Prompt([OK];"Fehler";"Um einen Dokument-Link einzufügen muss sich" +@Char(13)+ "der Cursor in einem Richtext-Feld befinden!");
      @Command([FileOpenDatabase];"":"";"(DokLink_unid)";_unid;"1";"1")
      + @Command([EditMakeDocLink])
      + @Command([FileCloseWindow])
      +@PostedCommand([EditPaste])         
)
Titel: Re:Abfrage ob Feld = RTF
Beitrag von: Meff am 04.07.03 - 23:03:28
Hast Du schonmal mit @PostedCommand gearbeitet? Diese Kommandos werden erst Nach Verarbeitung der restlichen Commands verarbeitet.

Meff
Titel: Re:Abfrage ob Feld = RTF
Beitrag von: bob am 04.07.03 - 23:15:31
Hi Meff,

danke, ja kenn ich.
Leider ist wohl der Befehl "FileAttach" so 'extrem' spät, dass dieser erst nach allem anderen ausgeführt wird, also auch nach den @PostedCommands....

D.h. auch wenn ich die @Commands durch @Posted's ersetze kommt trotzdem erst danach meine @Prompt-Meldung  >:(

bye,
Bob
Titel: Re:Abfrage ob Feld = RTF
Beitrag von: Meff am 04.07.03 - 23:26:00
Hast Du das ganze schonmal probiert in Script zu realisieren?

Meff
Titel: Re:Abfrage ob Feld = RTF
Beitrag von: bob am 04.07.03 - 23:32:11
Hi Meff,

 :)

Das traue ich mir noch nicht zu  :-\

Ich hab zwar gewisse Basiskenntnisse in Script (gelernt via Designer-Hilfe und Threads hier im Board) aber über eine Picklist einen Dok-Link einzufügen und die Abfrage ob aktuelles Feld = RTF ist mir leider noch zu heftig....

Script ist ja eigentlich simpel (logisch aufgebaut), aber z.B. bei Picklist bin ich jetzt noch überfragt.

Daher eben meine versuchte Lösung via Formelsprache  ;)

Bob
Titel: Re:Abfrage ob Feld = RTF
Beitrag von: ata am 05.07.03 - 00:02:40
... mit LS ist das gar nicht so schwer...

Dim ws As New NotesUIWorkspace
Dim docThis As NotesDocument
Dim RTitem As NotesRichTextitem

Set docThis = ws.CurrentDocument.Document
Set RTitem = docThis.GetFirstItem( "Name_des_Richtextfeldes" )
If Not RTitem is Nothing Then
   If RTitem.Type = 1 Then
      MsgBox "... es ist ein Richtextfeld"
   End If
End If

ata
Titel: Re:Abfrage ob Feld = RTF
Beitrag von: Axel_Janssen am 05.07.03 - 00:02:52
ist nicht so schwierig.

Hints:
a) NotesUiWorkspace hat eine PickListStrings-Methode (allerdings mit unübersichtlich vielen Parametern)

b) Klasse NotesUiDocument hat Property CurrentField

c) Klasse NotesItem hat Property Type

d) Klasse NotesRichTextItem hat die Methode EmbedObject


Erst b, dann damit etwa so (ist nicht so ganz einsichtig, hängt damit zusammen das NotesRichTextItem extends NotesItem:)

Dim nrti as NotesRichTextItem
[...]
set nrti = doc.getFirstItem(herausgefunden_in_b)
if (nrti.Type!= RICHTEXT) then
 msgbox "fehler"
else
    do a
     do d
end if

Titel: Re:Abfrage ob Feld = RTF
Beitrag von: Axel_Janssen am 05.07.03 - 00:29:14
bob,

verstehe etwas anderes nicht.

Zitat
In dem Beispiel soll per Klick ein Dok-Link eingefügt werden; wenn der Cursor nicht in einem Richtext-Feld ist soll die Fehlermeldung kommen.
Dir ist klar, das das event onClick bei Feldern ein JavaScript-Event ist??

Im LotusScript Event-Model haben nur Buttons und Aktionsschaltflächen ein LS-click-Event.
Wenn der User aber auf den Button klickt, ist der Cursor logischerweise nicht mehr im Feld !

Oder habe ich jetzt was übersehen?

Axel
Titel: Re:Abfrage ob Feld = RTF
Beitrag von: bob am 05.07.03 - 00:35:03
Hi Axel,

vielleicht hab ich mich auch unklar ausgedrückt.

OK, hier mal'n anderes Beispiel von mir:


@If(
   @IsError(
         @Command([EditInsertFileAttachment]));
         @Command([EditGotoField]; "A_Body")
         +@Command([EditInsertFileAttachment]);
@Success)


Die Formel ist als Hotspot in der Maske. Wenn Fehler (also kein RTF-Feld), geht der Cursor zum Feld A_Body.
Das klappt wirklich auch wunderbar.

Bob
Titel: Re:Abfrage ob Feld = RTF
Beitrag von: bob am 05.07.03 - 00:50:25
Hi,

danke Euch für die Script - Unterstützung.

Allerdings:

Die Prüfung ob RTF ist dank Script von Ata plausibel und klappt bestimmt.

Die Picklist dank der Hinweise von Axel hab ich auch mal getestet, leider ohne Erfolg.


Mittlerweile bin ich schon soweit dass ich Prioritäten setze:
Klar ist es prima, dass der Anwender VOR Auswahl eines Doks schon eine Fehlermeldung bekommt, wenn Feld nicht RTF, allerdings hält mich das ganze Thema jetzt sehr auf, was andere noch zu implementierende Funktionalitäten in die DB ausbremst.

Fazit: Danke Euch für die Lösungen, aber mangels Zeit und weiterer offener Umsetzzungen werde ich diesen hier geposteten Komfort für Anwender bis auf weiteres jetzt nicht im Script umsetzen.
Höchstens per [ToolsRunMacro] und dann Ata's Code aufrufen, aber dann hab ich bestimmt auch wieder Probleme mit der Reihenfolge. Oder ich lagere den ganzen Code in Agenten aus, aber dann ist es super unübersichtlich.....

Na ja, mal schaun.

Bob
Titel: Re:Abfrage ob Feld = RTF
Beitrag von: Meff am 05.07.03 - 12:12:34
Noch ne Idee: Warum gehst Du nicht einfach in das RichTextFeld um anschliessend das Ding zu erstellen?

Meff
Titel: Re:Abfrage ob Feld = RTF
Beitrag von: bob am 05.07.03 - 16:28:33
Zitat
Noch ne Idee: Warum gehst Du nicht einfach in das RichTextFeld um anschliessend das Ding zu erstellen?

Weil es leider mehrere RTF gibt, wo diese Funktion gehen soll...

Bob