2017-02-09 5 views
0

J'essaie d'obtenir des mails sélectionnés à partir de Lotus Notes via OLE. Jusqu'à présent, je faisais comme ceci:Lotus Notes ne reçoit que les mails sélectionnés via OLE

UIView := FLNotes.CURRENTVIEW; 
UIDocuments := UIView.DOCUMENTS; 

    for counter := 1 to UIDocuments.Count do begin 
    if counter = 1 Then 
     aDocument := UIDocuments.GETFIRSTDOCUMENT 
    else 
     aDocument := UIDocuments.GETNEXTDOCUMENT(aDocument); 

    ProcessDokument (aDocument) 

Quand je suis dans ce point de vue mail fonctionne comme prévu, je reçois seulement les mails que je mets la coche à côté (si je reçois 2 mails) enter image description here maintenant Je veux rechercher un poste particulier qui a « ETM » quelque part, et je passer à l'onglet de recherche:

enter image description here

maintenant, j'ai le problème que mon code renvoie tous les documents visibles, et pas seulement celui que j'ai choisi. Ici, je n'ai pas sélectionné l'un d'entre eux, mais ma boucle for fonctionne toujours 7 fois pour chaque document.

Ma question, pourquoi tous les documents sont en cours de traitement, même si je n'ai pas sélectionné l'un d'entre eux, en particulier, pourquoi le comportement est différent de celui que je suis dans la boîte aux lettres. Et y a-t-il un moyen d'identifier seulement ceux que j'ai sélectionnés?

Cordialement

Répondre

0

La réponse est que, après la recherche en texte intégral, vous n'êtes pas vraiment en vue. Vous êtes dans une liste de résultats de recherche en texte intégral qui ressemble à une vue, mais c'est vraiment une superposition en haut de la vue. Si vous pouviez voir la vue réelle, les documents qui sont dans la liste des résultats seraient sélectionnés!

Il n'existe aucune méthode dans le NotesUIWorkspace class pour obtenir la liste actuelle des résultats de recherche en texte intégral que vous voyez (et aucune classe NotesUIFTSearchResults pour la représenter non plus), donc je ne crois pas qu'il existe un moyen d'accéder aux documents que vous avez sélectionné manuellement dans la liste des résultats. Ce que vous pourriez faire est d'obtenir des données pour tous les docs dans la liste des résultats, construire une boîte de dialogue et montrer que pour l'utilisateur, laissez l'utilisateur sélectionner les docs dans la boîte de dialogue plutôt que dans le résultat Lister lui-même, puis faire agir votre code sur ceux que l'utilisateur a sélectionnés - mais sans voir votre code et savoir ce qu'il essaie de faire dans votre routine ProcessDokument(), je ne sais pas si c'est raisonnable ou non.