Announcement

Collapse
No announcement yet.

String mit unterschiedlichen Formatierungen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • String mit unterschiedlichen Formatierungen

    Guten Abend Community

    Gibt es eine Möglichkeit einen String in eine Variable zu packen, der Text mit unterschiedlichen Farben, Schriftarten und Schriftgrössen besitzt. Oder gibt es eine andere Möglichkeit. Wie müsste man da vorgehen?


    Ich möchte auf keinen Fall eine RichTextBox benutzen. Der Text soll zu einem späteren Zeitpunkt per g.DrawString(....) auf der Form sichtbar sein.

    Danke für die Hilfe.


    Freundliche Grüsse

    exc-jdbi

  • #2
    Nein. Ggf. die Satzteile in je eine eigene Klasse (bsp. Klasse FormatierterText) packen, die die Attribute des Textes enthält.; alle Klassen in eine Liste. Bei g.DrawString die Liste durchgehen, Attribute setzen und Text auslesen.
    Christian

    Comment


    • #3
      Den Text als XML in der Variablen speichern.

      Da Du schreibst es soll keine RichTextBox sein und eine normale TextBox kann es nicht sein... befindest Du Dich in Word? Dort wäre es z.B. so:

      Hinweg:
      [highlight=vbnet]
      Dim oWord As Word.Application = Globals.ThisAddIn.Application
      Dim s As String = oWord.Selection.Range.XML
      [/highlight]
      Rückweg:
      [highlight=vbnet]
      oWord.Selection.Range.InsertXML(s)
      [/highlight]

      Comment


      • #4
        toller Beitrag. Wir unterstellen, es handelt sich um Word und posten irgendwelchen Code. In Word arbeitet man mit DrawString?
        Christian

        Comment


        • #5
          Tja, aus irgendeinem Steuerelement muss er den formatierten Text ja haben. Neben einer RichTextBox ist mir da nunmal Word als erstes eingefallen. Nun hätte ich natürlich ersteinmal eine Antwort abwarten können und dann entsprechend darauf reagieren.... Oder man traut sich und verschwendet einfach mal drei Zeilen Forenplatz mit einem Schuß ins Blaue - für Hin und Rückweg wohlgemerkt.

          Warum solle man sich die Mühe machen und mit DrawString arbeiten? Nur weil "man das so macht"? Da muss man den String analysieren, alle Attribute (Farbe, Größe, Schriftart, Ausrichtung....) inklusive zugehörigem Bereich abspeichern, und dann hinterher den String aus diesen Informationen wieder zusammenbasteln? Mit dem Stückchen von irgendwelchem Code geht das ohne nachzudenken in 3 Zeilen.

          Comment


          • #6
            "Tja, aus irgendeinem Steuerelement muss er den formatierten Text ja haben." -> Ahja, aber du kommst nicht auf die Idee, das der Text so vorliegt und der eben formatiert dargestellt werden soll? Den String und die Formatinformationen will er ablegen. Wozu muss er aus einem Control kommen? Und mit DrawString arbeitet man eben, weil man auf einem Graphickontext etwas direkt ausgeben will. Du kannst also mit deinem Wordcode die DrawString-Ausgabe ersetzen.
            Christian

            Comment


            • #7
              Nein, auf die Idee bin ich nicht gekommen, weil Exc-JDBI geschrieben hat "einen String ..., der Text mit unterschiedlichen Farben, Schriftarten und Schriftgrössen besitzt." und nicht "einen String, den ich darstellen und nach Vorgaben formatieren möchte." Ein bereits formatierter Text ist in vielen Fällen nunmal XML, und kommt aus irgendeinem Steuerelement, da die Variablen String, Integer usw. diese Informationen nicht halten können. Es sei denn man packt den XML String in einee String- Variable.

              Und ich will DrawString nicht ersetzen, ich will nur nicht mit einem 40Tonner zum Brötchen holen fahren. Da ist der Smart angenehmer.
              Zuletzt editiert von spufi; 23.07.2013, 14:44.

              Comment


              • #8
                Ein String kann keinen Text mit unterschiedlichen Farben, Schriftarten und Schriftgrössen besitzen!
                Insofern kann er keinen haben. Es hat nicht geschrieben, er hat XML mit Text und Formatinfos.
                Warum sowas nur in Steuerelementen vorkommt erschließt sich nicht und wie du mit WORD das DrawString ersetzen willst auch nicht.
                Christian

                Comment


                • #9
                  Natürlich kann ein String keine Formatierung enthalten. Das hat er aber geschrieben. Wenn man sich nun nicht an dem "einen String in eine Variable zu packen" aufhängt, wird er gemeint haben: Ich habe einen formatierten Text. Wenn ich den in eine String-Variable packe sind leider die Formatierungsinformationen weg. Wie kann ich diesen formatierten Text in einer Variablen speichern (weil ich den später wieder verwenden möchte - sonst wäre das vergebene Liebesmüh)?

                  Antwort Marquardt: Baue dir eine Klasse, analysiere den Text.... Antwort richtig, klappt.
                  Antwort spufi: Versuche an die XML Informationen des Textes heranzukommen. Die lassen sich dann in eine String-Variablen packen, in eine DB speichern und innerhalb einer Codezeile wieder anzeigen... Antwort genauso richtig.

                  In der Annahme, dass nicht ein Engelchen mit dem formatierten Text unter dem Arm in seinen Computer gefahren ist oder dieser Text aus anderer ominöser Quelle "einfach Mal da ist", sieht er auf dem Bildschirm diesen bunten Text, und möchte ihn behalten. Ergo Steuerelement. Natürlich kann es sich auch um eine Email handeln. Deswegen habe ich auch geschrieben "z.B." (ausgeschrieben: zum Beispiel). Man könnte ja durch diesen Denkanstoß auf die richtige Spur kommen.

                  Aber der Einzige der Licht in dieses Dunkel bringen kann traut sich schon garnicht mehr hier irgendwas zu schreiben. Und ich gehe jetzt mal wieder an die Arbeit.

                  Comment


                  • #10
                    Wenn man sich nun nicht an dem "einen String in eine Variable zu packen" aufhängt, wird er gemeint haben: Ich habe einen formatierten Text.
                    Warum sollte man das nicht tun? Das ist das was geschrieben wurde. Warum Mutmaßungen anstellen?

                    Antwort spufi: Versuche an die XML Informationen des Textes heranzukommen.
                    Die unterstellt, das diese vorliegt oder erzeugt werden kann. Warum liegen nicht Font-Objekte vor, wie sie dann auch im DrawString gebraucht werden. Das soll alles erst nach XML geandelt werden?

                    In der Annahme, dass nicht ein Engelchen mit dem formatierten Text unter dem Arm in seinen Computer gefahren ist oder dieser Text aus anderer ominöser Quelle "einfach Mal da ist", sieht er auf dem Bildschirm diesen bunten Text, und möchte ihn behalten.
                    Eine durch überhaupt nichts gestützte Behauptung.Warum kann man nicht einfach einen String im Programm haben. Ist Bedingung A erfüllt, soll dieser fett und rot ausgegeben werden, ist Bedingung B erfüllt eben kursiv und grün. Wo ist da ein Steuerelement beteiligt? Warum muss dieser erst auf dem Bildschirm zu sehen sein?

                    Fakt ist:
                    Es gibt einen Text und dazugehörige Formatierungen. Die sollen vorgehalten werden.sicher gibt es dazu verschiedene Ansätze.
                    Jedoch dazu in irgendeiner Weise Word zu benutzen ist aus meiner Sicht völlig abwegig. Die Ausgabe soll im graphics erfolgen. Da ist Geschwindigkeit gefragt und nicht das rumfuhrwerken mit Word oder das parsen von XML.
                    Christian

                    Comment


                    • #11
                      Originally posted by Christian Marquardt View Post
                      Warum sollte man das nicht tun? Das ist das was geschrieben wurde. Warum Mutmaßungen anstellen?
                      Weil der Satz "einen String ..., der Text mit unterschiedlichen Farben, Schriftarten und Schriftgrössen besitzt" keinen Sinn macht. Also muss man ihn interpretieren. Hsat Du übrigens auch gemacht.

                      Originally posted by Christian Marquardt View Post
                      Warum liegen nicht Font-Objekte vor, wie sie dann auch im DrawString gebraucht werden.
                      Möglich, eine andere Interpretation, aber noch lange keine bessere. Denn dann gehe ich (persönlich) davon aus (Achtung, nächste Annahme!) dass er selber darauf kommen würde wie man die Informatioen für DrawString speichert.

                      Originally posted by Christian Marquardt View Post
                      Eine durch überhaupt nichts gestützte Behauptung.Warum kann man nicht einfach einen String im Programm haben.
                      Ich verweise abermals an den Satz "einen String ..., der Text mit unterschiedlichen Farben, Schriftarten und Schriftgrössen besitzt". Der hat das schon, der soll die nicht bekommen.

                      Originally posted by Christian Marquardt View Post
                      Jedoch dazu in irgendeiner Weise Word zu benutzen ist aus meiner Sicht völlig abwegig.
                      Word war ein BEISPIEL! Ich habe nie gesagt er solle sich ein Word Objekt erstellen und das als XML Parser misbrauchen. Meine Worte waren: "befindest Du Dich in Word? Dort wäre es z.B. so:" Das ist eine Frage mit einer vorweggenommenen Antwort. Für den Fall er befände sich in der Word (Ribbon?) Programmierung wäre die auf den Doppelpunkt folgenden Codezeilen die einfachsten. Und nein, das ganze per g.DrawString auf die Form zu bringen geht dann nicht so einfach.

                      Comment


                      • #12
                        Und nein, das ganze per g.DrawString auf die Form zu bringen geht dann nicht so einfach.
                        Das will er aber.

                        Ich verweise abermals an den Satz "einen String ..., der Text mit unterschiedlichen Farben, Schriftarten und Schriftgrössen besitzt".
                        Ein String kann das nicht haben. Ein String enthält eine Zeichefolge die nicht formatiert sind. Die Formatinformationen müssen also woanders gehalten werden. Und davon, das es ein XML-String ist steht da nix. Es könnte dann genau so gut ein RTF,HTML oder sonstiges Format sein, das der String enthält.

                        Üblicherweise ist im EDV-Sprachgebrauch ein String eine Zeichenkette. Sonst spricht man von einem
                        XML-String
                        HTML-String
                        JSON-String
                        u.a

                        um kenntlich zu machen, der String hat einen besondern (hier formatierten) Inhalt.
                        Christian

                        Comment


                        • #13
                          Könntet ihr die Metadiskussion bitte per PM weiterführen? Wer was wann wie warum verstanden hat ist jetzt nicht so interessant

                          Comment


                          • #14
                            Guten Abend Community

                            Ich bitte vielmals um Entschuldigung. Ich war ein paar Tage weg. Eine rege Diskusion hat sich daraus entwickelt.
                            Ich möchte mich auf jedenfall für alle Antworten bedanken.

                            Der Text den ich ausgeben will ist vorhanden bzw. wird zusammengestellt, je nachdem wie ich das Programm bediene und was ich Eingebe. RichText wollte ich nicht nutzen, da es sich um einen simplen Text handelt den ich formatiert auf der Form ausgeben will.

                            Ich habe es jetzt so gelöst, wie Christian Marquardt vorgeschlagen hat. Mir schien dies der beste Weg zu sein.

                            Nochmals Danke für alles.


                            Freundliche Grüsse

                            exc-jdbi
                            Zuletzt editiert von Exc-JDBI; 06.08.2013, 22:53.

                            Comment

                            Working...
                            X