Lange Texte einlesen und in ComboBox ausgeben.

  • Hallo zusammen,

    ich suche ein Möglichkeit wie ich einen Langen Formatierten Text einlesen kann und ihn dann in einer ComboBox anzeigen lassen kann und mit zusätzlichen Details versehen kann.

    Beispiel:
    bisher habe ich das so versucht, was aber nicht sehr Produktiv ist da der Text fest in das Script geschrieben ist. Ich möchte die Texte gern einlesen wo man sie extern bearbeiten kann.

    Das ganze wird dann nachher per Mail gesendet deswegen die HTML Formatierung zwischen drin.

    [autoit]


    GUICtrlSetData($Edit1, "Sehr geehrte Damen und Herren,<br><br><br>"& @CRLF & @CRLF & @CRLF & "seit " & $zeit & " Uhr liegt folgender Ausfall in " & $anr & " vor:<br>" & @CRLF & $stoerung & @CRLF &"<br><br>Service Desk Call-Nr." & $ticket & @CRLF & @CRLF & _
    "<br><br>Bitte beachten Sie unsere HLG Infoseite auf der wir Informationen zur aktuellen Störung ausgeben.<br>" & @CRLF & _
    "Wir informieren Sie, sobald die Störung behoben ist.<br><br><br>" & @CRLF & @CRLF & @CRLF & "Mit freundlichen Grüßen With best regards<br><br>" & @CRLF & @CRLF & "Service Desk<br>"

    [/autoit]


    Es soll halt formatiert in der KomboBox sein als auch in der Mail die anschließend geschickt wird
    Natürlich müssen auch die Platzhalter $anr ,$stoerung etc. weiter enthalten bleiben.


    Gibt es eine Möglichkeit das zu realisieren ? dies hier funktioniert zwar aber ist nicht sehr schön und wenn man den Text ändern will muss gleich das ganze Programm neu Compiled werden.


    vielen Dank schon mal für gute Ideen.
    Gruß
    Florian

    Einmal editiert, zuletzt von NewProgger (20. September 2014 um 14:10)

  • Warum sprichst du die ganze zeit von Comboboxen?
    Die Frage ist echt kompliziert gestellt. Ich hoff mal ich habs richtig verstanden...
    Du willst im Edit @crlf haben und später in der Email stattdessen <br> oder?
    Ich seh nicht ganz wo das Problem liegt. Du musst doch einfach nur eine Übersetzung mit Stringreplace machen

  • ok ich hole etwas weiter aus. Zuerst einmal Sorry ich meinte natürlich Editbox...

    Also ich baue ein Tool für eine Notfallkommunikation per Mail, wo eine Störungsart etc. ausgewählt wird.
    Aus einer ini Datei wird der entsprechende Mailverteiler ausgelesen an den das ganze gehen soll. Zu der jeweiligen Störung soll eine Textvorlage gesendet werden, die in der GUI
    in einer EditBox die aber deaktiviert ist angezeigt werden soll.

    Die Textvorlage ist immoment in das Script eingebettet, das ist aber wie gesagt nicht das beste weil man das nicht schnell mal ändern kann.
    Das anzeigen in der EditBox dient nur der Ansicht, das der Nutzer sieht was drin steht in der Mail.

    Die Auszufüllenden Felder werden unten in den Text übernommen und der User kann nachher den gesamten Mailtext sehen wie er gesendet wird.


    So sieht das aus:

    [Blockierte Grafik: http://up.picr.de/19563802ms.jpg]


    Mir geht es nun darum den Mailtext von aussen (ausserhalb des Scripts) zu hinterlegen und auch ändern zu können und bei Programmstart wird dieser eingelesen.
    da die Formatierung ja nicht gleich der im Outlook ist sieht das natürlich echt wild aus. Autoit Formatierung mit HTML gemischt oO :-S
    Anders geht es aber anscheinend nicht.

    Ich hoffe ich konnte es nun etwas erleuchtender beschreiben ?

    Gruß
    Flo

  • Du könntest für deine Textvorlage eine extern gelagerte Datei einlesen. Dann kannst du im nachhinein einfach die Textdatei bearbeiten und das Programm muss nicht neu kompiliert werden

    Damit du deine Variablen weiterhin hast, könntest du z.B. gewisse "KeyWörter" mit der Funktion "StringReplace" ersetzen.

    Beispielsweise:

    "Hallo Peter es ist gerade %Uhrzeit"

    Dann nimmst du die Replace Funktion:

    [autoit]

    local $Nachricht
    $Nachricht = stringreplace("Hallo Peter es ist gerade %Uhrzeit Uhr","%Uhrzeit",@HOUR & ":"& @MIN)
    msgbox(0,"",$Nachricht)

    [/autoit]

    Also einfach gewisse Keywörter aus der eingelesenen Textdatei, die du vorher definiert hast, mit dem Inhalt deiner Variablen in AutoIT ersetzen. Dann kannst du den Text in deiner externen Datei wie gewünscht verändern und deine "Variablen" beliebig einfügen.


    Edit: 14:30
    Ich habe dir nochmal ein größeres Beispiel vorbereitet mit Text - Ladefunktion, das sollte deinen Wünschen schon relativ nahe kommen, siehe die .zip im Dateianhang!

  • Ja super das ist doch das was ich suche.

    Aber wie ist das jetzt mit der HTML Formatierung für den Import in Outlook ?
    Ich habe das noch nicht getestet aber ich schätze mal der nimmt das nun als fließtext wenn ich das Edit Feld mit GUICtrlRead auslese und in eine
    Variable schreibe die das dann an das Outlook UDF weitergibt oder ?

    so ne idee:

    sollte ich vielleicht auch hier mit Platzhaltern arbeiten und zum Beispiel "+" als newline zeichen durch <br> ersetzen bevor der Text aus dem
    Edit Feld ausgelesen wird?

    Also angezeigt wird es noch mit:

    Dies ist der erste Satz+
    Dies ist der zweite Satz+

    etc...

    und sobald man auf senden geht wird in die Variable "Dies ist der erste Satz<br>" geschrieben damit es in Outlook schön formatiert ist?

  • Naja man könnte auch eine Art weitere "intelligente-Funktion" einbauen, die bevor die E-Mail rausgeht, nochmal die EditBox auf ihre Zeilenumbrüche prüft und dann automatisch vorm Absenden als E-Mail, die entsprechenden "<br>" hinzufügt.

    Es gibt sicher eine Möglichkeit ein EditControl auf vorhandene Zeilenumbrüche zu überprüfen. Am Ende werden dann eben soviele <br> eingebaut, dass es in der E-Mail so ausschaut wie im EditControl bzw. im Textdokument.

    Das ganze speicherst du dann eben in einer Variable und übergibst es dann mit deiner UDF als E-Mail.

    Dann sieht es für den User des Programs auch übersichtlicher aus, wenn dort nicht von vornherein die "<br>" drinstehen, sondern dies erst nachträglich für den User unsichtbar, in einer Variable geschieht.

  • Wieso noch ein Platzhalter? Du hast am ende einen Zeilenumbruch und diesen musst du in <br> übersetzen
    Einfach nur

    [autoit]

    $sEdit = Stringreplace(Guictrlread($Edit1), @crlf, '<br>')

    [/autoit]
  • Ihr seid die besten :) der Tag so was von gerettet!!!

    Es klappt und sieht von der Formatierung her gut aus.
    Wenn da nicht so viele Firmenbezogene Daten drin wären würde ich den Code mal Posten.
    Vielleicht mache ich mir mal die mühe und setze dafür Dummy-Daten ein.


    DANKE