MacGreg: Tabulatoren auf Richtextbox nach HTML

Hallo SelfHTML!

In einem bestehenden Access Projekt wird in einer RichTextBox ein Bericht eingegeben. Dieser wird anschließend als HTML gespeichert. Soweit so gut. Allerdings soll es nun möglich sein in dieser Richtextbox mit Hilfe der Tabulatortaste Daten bündig anzuordnen. Soweit auch kein Problem. Allerdings bereitet mir das konvertieren des in der RichTextBox gespeicherten Texts Kopfschmerzen :-)

Hat jemand eine Idee wie ich es schaffe, dass Daten die durch Tabulatoren bündig angeordnet wurden, so auch in einem HTML Dokument wiederzufinden sind? Habe schon an die Möglichkeit leerer Tabellenzellen gedacht, dabei besteht allerdings das Problem, dass dem umwandelnden Script ja nicht unbedingt klar ist wo denn nun die durch Tabulatoren getrennten Daten aufhören, wo also die Tabelle durch </tr></table> zu beschließen ist.

Ich freue mich auf Anregungen und Ideen,

MacGreg

  1. Hallo,

    Hat jemand eine Idee wie ich es schaffe, dass Daten die durch Tabulatoren bündig angeordnet wurden, so auch in einem HTML Dokument wiederzufinden sind?

    Die einfachste Möglichkeit ist, den Text einfach in ein PRE-Element zu legen.

    Sonst bietet sich die CSS-Eigenschaft margin-left für Einrückungen an.

    Bsp.:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
            "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    <head>
    <title>Text mit Einrückungen</title>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <style type="text/css">
    <!--
    p {margin:0; padding:0;}
    .tab1 {margin-left:1.25cm;}
    .tab2 {margin-left:2.5cm;}
    -->
    </style>
    </head>
    <body>
    <h1>Text mit Einrückungen, tab-stops: 1,25cm oder 5grad</h1>
    <pre>
    Das ist normaler Fließtext.
         Das ist mit einem Tab(^t) eingerückter Text.
              Das ist mit zwei Tab(^t) eingerückter Text.
         Das ist mit einem Tab(^t) eingerückter Text.

    </pre>
    <p>Das ist normaler Fließtext.</p>
    <p class="tab1">Das ist mit einem Tab(^t) eingerückter Text.</p>
    <p class="tab2">Das ist mit zwei Tab(^t) eingerückter Text.</p>
    <p class="tab1">Das ist mit einem Tab(^t) eingerückter Text.</p>
    </body>
    </html>

    viele Grüße

    Axel

    1. Hi Axel!

      Auf die Idee mit CSS bin ich auch schon gekommen und das ganze Problem wäre auch keines wenn nicht "der Anwender" auf die Idee kommen könnte nicht nur einen Absatz einzurücken, sondern auch noch ein "tabellarisches Layout" mit Tabstops zu basteln. Denn dann könnte ich zwar die durch Tabs getrennten Daten in einzelne Divs packen und deren horizontalen Abstand mit margin festlegen, aber spätestens in der darunterliegenden Zeile wären die Daten nicht mehr bündig, da ich ja nicht garantieren kann, dass die Daten in jeder "Zelle" gleich lang sind (also die Anzahl der Buchstaben / Zeichen).

      Weitere Ideen? :-)

      MacGreg

      1. Hallo,

        Auf die Idee mit CSS bin ich auch schon gekommen und das ganze Problem wäre auch keines wenn nicht "der Anwender" auf die Idee kommen könnte nicht nur einen Absatz einzurücken, sondern auch noch ein "tabellarisches Layout" mit Tabstops zu basteln.

        Das musst Du verbieten ;-)). Ansonsten wird es _sehr_ komplex, siehe unten.

        Denn dann könnte ich ...

        Nein, _dann_ musst Du eine HTML-Tabelle daraus bauen. Das wird aber schwierig, weil der Nutzer ja nicht nur:

        Name[  ^t   ]Vorname[  ^t   ]Geburtsdatum
        Müller[  ^t ]Klaus[  ^t     ]20.04.1967

        (Das wäre ja einfach.)

        sondern auch

        Name[  ^t   ][  ^t   ][  ^t   ]Vorname[  ^t   ][  ^t   ]Geburtsdatum
        Müller[  ^t ][  ^t   ][  ^t   ]Klaus[  ^t     ][  ^t   ]20.04.1967
        Maier-Niederwürschnitz[  ^t   ]Rosalinde-Marianne[  ^t ]20.05.1968

        benutzt haben kann.

        Zumindest musst Du also auf einer richtig[TM] formatierten Tabelle mit Tabstops bestehen.

        viele Grüße

        Axel

        1. Hi!

          (Das wäre ja einfach.)

          yep

          Name[  ^t   ][  ^t   ][  ^t   ]Vorname[  ^t   ][  ^t   ]Geburtsdatum
          Müller[  ^t ][  ^t   ][  ^t   ]Klaus[  ^t     ][  ^t   ]20.04.1967
          Maier-Niederwürschnitz[  ^t   ]Rosalinde-Marianne[  ^t ]20.05.1968

          ja, leider kann der Anwender auch solche "Schweinereien" machen :|

          Zumindest musst Du also auf einer richtig[TM] formatierten Tabelle mit Tabstops bestehen.

          und das bedeutet im Klartext?

          Liebe Grüße,

          MacGreg

          1. Hallo,

            ja, leider kann der Anwender auch solche "Schweinereien" machen :|

            Zumindest musst Du also auf einer richtig[TM] formatierten Tabelle mit Tabstops bestehen.
            und das bedeutet im Klartext?

            Dass Du solche Schweinereien unterbindest ;-)) oder zunächst mehrere aufeinanderfolgende ^t wie eins betrachtest und dann eine Tabelle daraus baust.

            Name[  ^t   ][  ^t   ][  ^t   ]Vorname[  ^t   ][  ^t   ]Geburtsdatum
            Müller[  ^t ][  ^t   ][  ^t   ]Klaus[  ^t     ][  ^t   ]20.04.1967
            Maier-Niederwürschnitz[  ^t   ]Rosalinde-Marianne[  ^t ]20.05.1968

            wird zu:

            Name[^t]Vorname[^t]Geburtsdatum
            Müller[^t]Klaus[^t]20.04.1967
            Maier-Niederwürschnitz[^t]Rosalinde-Marianne[^t]20.05.1968

            und dann zu:

            <td>Name</td><td>Vorname</td><td>Geburtsdatum</td>
            <td>Müller</td><td>Klaus</td><td>20.04.1967</td>
            <td>Maier-Niederwürschnitz</td><td>Rosalinde-Marianne</td><td>20.05.1968</td>

            viele Grüße

            Axel

            viele Grüße

            Axel

            1. Axel,

              Dass Du solche Schweinereien unterbindest ;-)) oder zunächst mehrere aufeinanderfolgende ^t wie eins betrachtest und dann eine Tabelle daraus baust.

              Wobei dann keine Zelle leer sein darf.

              Name[  ^t   ][  ^t   ][  ^t   ]Vorname[  ^t   ][  ^t   ]Geburtsdatum
              Müller[  ^t ][  ^t   ][  ^t   ][  ^t   ][  ^t   ][  ^t ]20.04.1967
              Maier-Niederwürschnitz[  ^t   ]Rosalinde-Marianne[  ^t ]20.05.1968

              Wird sonst zu:

              Name[^t]Vorname[^t]Geburtsdatum
              Müller[^t]20.04.1967
              Maier-Niederwürschnitz[^t]Rosalinde-Marianne[^t]20.05.1968

              Gunnar

              --
              Es más difícil ser rey sin corona que una persona más normal (Shakira, Octavo día)
    2. hi,

      Hat jemand eine Idee wie ich es schaffe, dass Daten die durch Tabulatoren bündig angeordnet wurden, so auch in einem HTML Dokument wiederzufinden sind?

      Die einfachste Möglichkeit ist, den Text einfach in ein PRE-Element zu legen.

      Sonst bietet sich die CSS-Eigenschaft margin-left für Einrückungen an.

      halte ich beides für wenig hilfreich.

      wie vielen zeichenbreiten ein tab entspricht, ist eine einstellung des benutzers an seinem system.
      also muss davon ausgegangen werden, dass diese auf einem anderen system einen anderen wert hat.

      und somit scheitert ein "ausrichten" über tabs zwangsläufig schon bei recht simplen konstrukten.

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      1. Hallo,

        und somit scheitert ein "ausrichten" über tabs zwangsläufig schon bei recht simplen konstrukten.

        Nicht, wenn es keine "Konstrukte" geben darf, sondern nur unterschiedlich weite Einrückungen von links.

        Dass die dann nicht den Einrückungen im RTF in mm entsprechen ist klar. Allerdings kann man die gewünschte Struktur so erhalten.

        viele Grüße

        Axel

        1. hi,

          und somit scheitert ein "ausrichten" über tabs zwangsläufig schon bei recht simplen konstrukten.

          Nicht, wenn es keine "Konstrukte" geben darf, sondern nur unterschiedlich weite Einrückungen von links.

          Dass die dann nicht den Einrückungen im RTF in mm entsprechen ist klar. Allerdings kann man die gewünschte Struktur so erhalten.

          nein, sehe ich nicht so.
          schon dein eigenes beispiel aus https://forum.selfhtml.org/?t=101854&m=625929 wiederlegt dich da:

          Name[  ^t   ][  ^t   ][  ^t   ]Vorname[  ^t   ][  ^t   ]Geburtsdatum
          Müller[  ^t ][  ^t   ][  ^t   ]Klaus[  ^t     ][  ^t   ]20.04.1967
          Maier-Niederwürschnitz[  ^t   ]Rosalinde-Marianne[  ^t ]20.05.1968

          hier bist du offenbar von einem tab-stop nach jedem neunten zeichen ausgegangen (auch wenn auch das schon wieder in der ersten zeile nach Name nicht hinkommt ...)

          ein user, der seinen tab-stop aber erst nach jedem 12. zeichen eingestellt hat, käme hier schon mit

          Name[    ^t ][    ^t    ]Vorname[ ^t ][    ^t    ]Geburtsdatum
          Müller[  ^t ][    ^t    ]Klaus[  ^t  ][    ^t    ]20.04.1967
          Maier-Niederwürschnitz[t]Rosalinde-Marianne[ ^t  ]20.05.1968

          aus.

          wenn du diese eingabe jetzt so bei einem user wieder anzeigen lässt, der nach dem 9. zeichen den tabstop eingestellt hat, käme da

          Name[^t ][   ^t  ]Vorname[][   ^t  ]Geburtsdatum
          Müller[t][   ^t  ]Klaus[^t][   ^t  ]20.04.1967
          Maier-Niederwürschnitz[ ^t]Rosalinde-Marianne[   ^t  ]20.05.1968

          heraus ...

          gruß,
          wahsaga

          --
          "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
          1. Hallo,

            Dass die dann nicht den Einrückungen im RTF in mm entsprechen ist klar. Allerdings kann man die gewünschte Struktur so erhalten.

            nein, sehe ich nicht so.
            schon dein eigenes beispiel aus https://forum.selfhtml.org/?t=101854&m=625929 wiederlegt dich da:

            Name[  ^t   ][  ^t   ][  ^t   ]Vorname[  ^t   ][  ^t   ]Geburtsdatum
            Müller[  ^t ][  ^t   ][  ^t   ]Klaus[  ^t     ][  ^t   ]20.04.1967
            Maier-Niederwürschnitz[  ^t   ]Rosalinde-Marianne[  ^t ]20.05.1968

            Ja, das war ja auch ein Negativbeispiel. Außerdem spreche ich auch _nicht_ von tabellarischen Darstellungen, sondern _nur_ von Fließtexteinrückungen _von links_, also _keine_ "Konstrukte".

            "Konstrukte", wie:
            ..........................L.....................L.............
            Name[  ^t                ]Vorname[  ^t         ]Geburtsdatum
            Müller[  ^t              ]Klaus[  ^t           ]20.04.1967
            Maier-Niederwürschnitz[^t]Rosalinde-Marianne[^t]20.05.1968

            müssten in eine Tabelle konvertiert werden.

            Das geht auch, wenn der Nutzer sich an die Konventionen der Textverarbeitung mit Tabulatoren hält, es also so macht wie in meinem jetzigen Positivbeispiel.

            viele Grüße

            Axel

  2. Moin!

    Hat jemand eine Idee wie ich es schaffe, dass Daten die durch Tabulatoren bündig angeordnet wurden, so auch in einem HTML Dokument wiederzufinden sind?

    Ich denke, du wirst einen Nichtproportionalfont wie Courier annehmen bzw. einsetzen müssen, und außerdem die in Access verwendete Tab-Breite in Leerzeichen wissen.

    Aus diesen beiden Komponenten kannst du jedes Tab in die korrekte Anzahl von &nbsp; oder Leerzeichen umformen und dann in ein <pre> ausgeben. Bedenke, dass 1 Tab != x Leerzeichen - die Zahl rechnet sich aus der vorhergehend vorhandenen Zahl von Zeichen.

    • Sven Rautenberg