Beiträge von Praedha

    In den Masken, Ansichten, Pages...gibt es das onHelp-Event.
    Hier kann man sehr schön via Formel einen Agenten aufrufen.
    Über set doc = workspace.CurrentDocument.Document kann man für Masken den Namen bestimmen: doc.Name bzw. doc.Aliases.
    Wenn dabei nix rauskommt, ist es wohl eine Ansicht: workspace.currentview. In der/n Hilfedatenbanken kann man so das passende Hilfe-Dokument suchen zB. docHilfe = vw.getdocumentbykey, search...
    dann noch
    Call workspace.opendatabase(dbserver,dbname)
    Set uidb = workspace.currentdatabase
    Call uidb.openview("Hilfe")
    Set uivw = workspace.currentview
    Call uivw.selectdocument(docHilfe)
    Call workspace.viewrefresh()
    Call workspace.settargetframe("HilfeInhaltFrame")
    Call workspace.editDocument(True)


    so öffnet jedes F1 das passende Doc zum focussierten Designelement.

    Also,
    auf Beweis-Fotos verzichte ich jetzt mal.
    Ich habe festgestellt, dass wann/wieso auch immer die Returns mal als "break" und mal in verschiedenen "par" dargestellt werden, z.B. wenn die Texte unterschiedlich formatiert sind.


    Dann muss man halt noch den 2-Zeiler einfügen:
    [lstText(intCount) = Chr(13)
    intCount = intCount + 1]


    [ If parNodeList.NumberOfEntries > 0 Then
    For parPos = 1 To parNodeList.NumberOfEntries
    Set parNode = parNodeList.GetItem(parPos)
    Call rekursivChildNodes(parNode)
    lstText(intCount) = Chr(13)
    intCount = intCount + 1
    Next
    End If]


    An welchen Stellen Du dann vielleicht CHR(13) & CHR(10) einfügen musst, wirst Du schon rausfinden; wenn Du InlineImages und anderes Zeug hast etc., da wird's lustig mit zwischen > und <.

    die msgbox ist nicht sauber in der Darstellung, mein strText hat es aber richtig.
    noch angehängt:
    Set doc = col.GetFirstDocument
    doc.Test = strText
    Call doc.save(True, False)



    Geschlampt habe ich aber bei der col ->lstText
    da müsste noch ein Trenner für die einzelnen docs rein...


    Aber egal, hautsache läuft!

    Ich find's nett, dass Du Dein Script gepostet hast, man kann immer dazulernen.
    Wir hatten auch mal so eine User-Dominier-Anforderung, weil der User seine Returns optisch nach seinen Wünschen aufarbeiten können sollte ( -, **, ~, _). Frag mich nicht, warum, hab ich auch nicht mehr.
    Und der nächste kann sich die Arbeit sparen.


    Ausserdem ein Code sagt mehr als 1000 Worte.

    Habe mal 'nen Kollegen von der Arbeit abgehalten, weil ich kein Vista habe: wie Du sagst, da ist es, halt etwas versteckt:
    Standardprogramme einstellen, benutzerdefiniert auswählen und erweitern: dort findet sich der Mail-Default...
    Und wenn da kein Notes -> fröhliches Installieren...

    ...nur das es im IE unter Vista halt nicht mehr unter:
    Extras-Internetoptionen-Programme die Auswahlbox "E-mail" gibt.
    Wo das unter Vista ist, weiss er/ich nicht.
    Das heisst nicht, dass was mit der Installation fehlschlug.
    Wenn doch, klar -> Notes eventuell sogar Vista neu installieren.
    Ist aber doch einen Versuch in der ini Wert oder kannst Du beschreiben, wo das unter Vista im IE oder Explorer etc steht?
    Wohl eher im IE-Forum?

    Hi,
    wenn man den Eintrag
    DontCheckDefaultMail=1
    in der Notes.ini löscht,
    wird beim nächsten Start des NotesClients gefragt, ob man Notes zum Default Mail Client machen will.
    Wenn ja, sollte das beim nächsten Link im Browser funktionieren (keine Ahnung ob Neustart...) gehen.
    Ich als Grobmotoriker habe das extra deaktiviert, weil es ziemlich lang hat, bis Notes gestartet ist, wenn man aus Versehen auf einen SendTo-Link klickt oder im Kontextmenü statt "speichern unter" runter auf "Link senden" rutscht.


    Gruss


    edit:
    Notes zu
    .ini-Eintrag löschen.
    Notes starten - ja, ich will...
    Browser-Link ohne Neustart anklicken - et voila!

    So, jetze einen Button in die Ansicht:
    Sub mit subs und functions:


    Declarations:
    Dim lstText List As String
    Dim intCount As Integer


    Sub Click(Source As Button)
    Dim ws As New notesuiworkspace
    Dim ns As New notessession
    Dim db As notesdatabase
    Dim vw As notesview
    Dim col As Notesdocumentcollection
    Dim exporter As notesdxlexporter
    Dim parser As notesdomparser
    Dim importer As notesdxlimporter
    Dim strText As String
    Dim blnExport2HDD As Boolean
    Dim i As Integer

    Set db = ns.CurrentDatabase
    Set col = db.UnprocessedDocuments
    If col.count > 0 Then
    Set exporter = ns.CreateDXLExporter
    Set parser = ns.CreateDOMParser()
    Set importer = ns.CreateDXLImporter
    Call exporter.SetInput(col)
    Call exporter.SetOutput(parser)
    If blnExport2HDD Then 'DebugHelfer
    Msgbox "Pech gehabt.", 64, "Systemarbeiten..."
    Dim stream As notesstream
    Set stream = ns.CreateStream
    Call stream.Open("C:\Export.dxl")
    Call stream.Truncate
    Call parser.setOutput(stream)
    Else
    Call parser.setOutput(importer)
    Call importer.SetOutput(db)
    importer.ReplaceDBProperties = False
    importer.DocumentImportOption = DXLIMPORTOPTION_UPDATE_ELSE_CREATE
    importer.ReplicaRequiredForReplaceOrUpdate = False
    End If
    On Event PostDOMParse From parser Call ParseEvent
    Call exporter.process
    Forall x In lstText
    strText = strText + x
    End Forall
    Msgbox strText
    End If
    End Sub


    Sub ParseEvent(source As NotesDOMParser)
    Dim domdoc As notesDOMDocumentNode
    Dim rtNodeList As notesDOMNodeList
    Dim rtNode As notesDOMElementNode
    Dim rtPos As Integer
    Dim parNodeList As notesDOMNodeList
    Dim parNode As notesDOMNode
    Dim parPos As Integer

    Set domdoc = source.Document
    Set rtNodeList = domdoc.GetElementsByTagName("richtext")
    If rtNodeList.NumberOfEntries > 0 Then
    For rtPos = 1 To rtNodeList.NumberOfEntries
    Set rtNode = rtNodeList.GetItem(rtPos)
    Set parNodeList = domdoc.GetElementsByTagName("par")
    If parNodeList.NumberOfEntries > 0 Then
    For parPos = 1 To parNodeList.NumberOfEntries
    Set parNode = parNodeList.GetItem(parPos)
    Call rekursivChildNodes(parNode)
    Next
    End If
    Next
    End If
    Call source.serialize
    End Sub


    Sub rekursivChildNodes(parentNode As NotesDOMNode)
    Dim ChildNode As notesDOMNode

    Set childNode = parentNode.firstchild
    Do Until childNode.IsNull
    Call rekursivChildNodes(childNode)
    If childNode.NodeType = 3 Then
    lstText(intCount) = Replace(childNode.NodeValue, Chr(13), "")
    intCount = intCount + 1
    End If
    If childNode.NodeName = "break" Then
    lstText(intCount) = Chr(13)
    intCount = intCount + 1
    End If
    Set childNode = childNode.nextSibling
    Loop
    End Sub


    Ich denke es brauch noch ein bisschen Feintuning...

    also, ich nehme zur Ansicht für dxl den firefox, der macht das ganz hübsch finde ich. Das wollte ich dann hier einkopieren, sah über fürchterlich aus und bevor ich Steve_O einen neuen TFT verkaufe :-), habe ich das ausgeschnitten und in eine txt kopiert. Dabei ist wohl einiges ersetzt worden...TXT geht ja eh nicht, also habe ich das in jpg umgewandelt... Letzten Endes sehen die par-Tags etc. schon so aus wie bei Dir... Komisch nur, dass bei Dir gar keine <breaks> sind...
    Inhalt als HTML und MIME hast Du auch, sonst wäre da nur Salat...


    Bei Gelegenheit werde ich mal was basteln, wenn mir keiner zuvor kommt (erwartungsvoll)...momentan muss ich hier mal was tun...

    Kannst Du haben wird Dir aber auch nicht gefallen, weil viel Arbeit :-):
    Das Dokument per DXL exportieren, wie man hier nur schlecht sieht, sind die "echten" Umbrüche "Breaks" und die anderen muss man mit replace Filtern und dann die einzelnen Blöcke zusammensetzen...


    Halbwegs verständlich?


    edit: Sorry, wird alls html teilweise interpretiert, daher im Anhang...

    kann ich so bestätigen, ist tatsächlich ein Umbruch:


    myText = Implode(Split(item.Text, Chr(13)), "***")
    Msgbox myText


    aber in den Properties des Feldes kann ich es kopieren und im Editor eingefügt ist es ohne zuviel Umbrüche...


    Oder einfach:
    Messagebox item.Abstract(5000, True, False),, "Body abstract"

    habe mal einen Ordner Test erstellt, print in QO und QOD geschrieben.
    Dok mit C'n'P eingefügt. Dok öffnen zeigt print an.


    Nochmal beide gelöscht, Ordner neu angelegt, privaten durch Öffnen erzeugt und dann im Privaten geändert -> zeigt print an.


    Hast Du die Änderung im Hauptordner gemacht?
    Die wird nicht in den privaten "vererbt" -> alle privaten löschen damit Designänderungen übernommen werden.


    Oder habe ich was falsch verstanden?


    Gruss

    hmm, ich find hier keinen Edith-Button, also schreibe ich mal eine Antwort:


    Also, soviele Leser, so wenig Antworten:
    Ist die Frage unverständlich?
    Konnte das mal jemand nachvollziehen?


    Kurzanleitung:
    Neue db anlegen, leere Maske "0Test" anlegen, Script in Aktion kopieren in Default-Ansicht, Button drücken und im Designer Notesvorschau für das Form, im Notes-Client dann Time picken und stattdessen Datum erhalten.


    Datumsfeld löschen.


    Gleiches im 6er.


    sollte eine Zeit liefern.


    Oder kann mir jemand sagen, wo ich das als Bug melden kann ohne Warrant# oder Passport-Advantage-Vertrag?


    Irgendwelche Kommentare?


    Danke und Grüsse

    Hallo zusammen!
    In R6 ging/geht mein Code noch. Unter R7 nicht.


    Ich erzeuge (per DXL) ein Form und ein Datumsfeld, Anzeige "nur Zeit".
    Das fertige Form enthält zwar den richtigen Timepicker, aber egal was ich wähle, es zeigt das heutige Datum an.
    Das Export Tool zeigt mir exakt den gleichen XML-Code an, wenn ich das Form händisch erstelle.
    Witzigerweise (gleicher Export Code) verschwindet der Fehler, sobald ich den 2 Reiter der Feld-Properties aufrufe und dann speichere (zumindest für das eine Datumsfeld).


    Ich habe es mal mit einer angpassten 6er DTD probiert, gleiches Problem.


    Kann mir jemand den Bug bestätigen? Habe nix in den Hotfixes oder SPRs gefunden.


    Hier ein kleiner Bspl-Code auf das Wesentlichste gekürzt, daher bitte einfach mal ein leeres Form "0Test" anlegen und einen Ansichts-Aktionsbutton mit folgendem Inhalt drücken:


    Sub Click(Source As Button)
    Dim ns As New NotesSession
    Dim db As notesdatabase
    Dim vw As notesview
    Dim nc As NotesNoteCollection
    Dim doc As NotesDocument
    Dim exporter As notesdxlexporter
    Dim parser As notesdomparser
    Dim importer As notesdxlimporter
    Dim strID As String


    Set db = ns.CurrentDatabase
    Set nc = db.CreateNoteCollection(False)
    nc.SelectForms = True
    'Bitte ein leeres Form anlegen, ich erstelle keins, weil ich hier RTF-Copies mache, die in DXL nicht gehen...:
    nc.SelectionFormula = {$Title ="0Test"}
    Call nc.BuildCollection
    strID = nc.GetFirstNoteId
    Set doc= db.GetDocumentByID(strID)


    Set exporter = ns.CreateDXLExporter
    Set parser = ns.CreateDOMParser()
    Set importer = ns.CreateDXLImporter
    Call exporter.SetInput(doc)
    Call exporter.SetOutput(parser)
    Call parser.setOutput(importer)
    Call importer.SetOutput(db)
    importer.ReplaceDBProperties = False
    importer.DesignImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
    importer.ReplicaRequiredForReplaceOrUpdate = False


    On Event PostDOMParse From parser Call ParseEvent
    Call exporter.process
    End Sub


    Sub ParseEvent(source As notesdomparser)
    Dim domdoc As notesDOMDocumentNode
    Dim NodeList As NotesDOMNodeList
    Dim parNode As NotesDOMElementNode
    Dim runNode As NotesDOMElementNode
    Dim fontNode As NotesDOMElementNode
    Dim fieldNode As NotesDOMElementNode
    Dim datetimeformatNode As NotesDOMElementNode
    '%REM


    Set domdoc = source.Document


    Set NodeList = domdoc.GetElementsByTagName("par")
    Set parNode = NodeList.GetItem(1)
    'Set runNode = domdoc.CreateElementNode("run")
    'Set fontNode = domdoc.CreateElementNode("font")
    'Call fontNode.SetAttribute("size", "10pt")
    'Call runNode.appendChild(fontNode)


    Set fieldNode = domdoc.CreateElementNode("field")
    Call fieldNode.SetAttribute("usenotesstyle", "false")
    'Call fieldNode.SetAttribute("height", "0.2500in")
    'Call fieldNode.SetAttribute("width", "0.7in")
    'Call fieldNode.SetAttribute("multiline", "true")
    'Call fieldNode.SetAttribute("borderstyle", "none") 'do not work in R6, not necessary in R7
    Call fieldNode.SetAttribute("type", "datetime")
    'Call fieldNode.SetAttribute("kind", "editable")
    Call fieldNode.SetAttribute("name", "MyDateTime")
    Call parNode.appendChild(fieldNode)
    Set datetimeformatNode = domdoc.CreateElementNode("datetimeformat")
    Call datetimeformatNode.setAttribute("show", "time")
    'Call datetimeformatNode.setAttribute("date", "yearmonthday")
    'Call datetimeformatNode.setAttribute("fourdigityearfor21stcentury", "true")
    Call datetimeformatNode.SetAttribute("time", "hourminute")
    'Call datetimeformatNode.setAttribute("zone", "never")
    Call fieldNode.appendChild(datetimeformatNode)


    '%END REM
    Call source.serialize


    End Sub



    Ich habe mal alles ausgeremt, was ich mal für nötig hielt...
    Macht sich jemand mal die Mühe? Wäre echt nett...
    Danke im Voraus...


    Mit fröhlichen Grüssen.