0

Zeilenanzahl für Carbone io zählen

Grüßt euch,

ich würde oder besser muss einen Seitenumbruch Zeilen gesteuert festlegen für Carbone io. Wie weiß ich, nur benötige ich dafür die Zeilen anzahlen.

Die Anzahl der gewählten Optionen für die DMFA bekomme ich über cnt(numbers(DMFA)) die Abhängigkeiten sind auch kein Problem.

Doch wie bekomme ich die abgebildeten Zeilen von Rich-Text Feldern welche in HTML also mit Formatierung gedruckt werden???

 

Ein was hab ich auch noch.

Leo hatte mir ein Skript bereitgestellt, um alle Positionen von den verschiedenen DMFA in einer Printabelle auszugeben.

Hier in Carbon wird jedoch immer ab dem 2. Eintrag ein Leerzeichen davor gesetzt. Das Skript verstehe ich bis heute nicht, aber es geht toll. In der Ninox eigenen druck Engine ging es auch perfekt, mit Carbone und convCRLF ist hat das mit dem Versatz da.

delete (select Printtabelle);
do as server
    let me := this;
    let myNameSpace := ["Buffet", "Beilagen", "Salatbar", "Dessert", "Snacks", "Getränke"];
    let myValueSpace := ['Buffet auswahl', 'Buffet beilagen wählen', 'Salatbar auswahl', 'Dessert auswahl', 'Snack auswahl', 'Getränke wählen'];
    let myTableSpace := ["Buffet", "'Beilagen für Buffet'", "Salatbar", "Dessert", "Snacks ", "'Getränke'"];
    let myPos := 1;
    for i in range(cnt(myNameSpace)) do
        let new := (create Printtabelle);
        new.(Dashboard := me);
        new.(Pos := myPos);
        new.(Gruppe := item(myNameSpace, i));
        new.(Hinweise := join(for j in numbers(item(myValueSpace, i)) do
                text(eval(---
record({ item(myTableSpace, i) },{ j })."___________________________________"
                ---, me))
            end, "
") +
            "
");
        new.(Bezeichnung := join(for j in numbers(item(myValueSpace, i)) do
                " • " +
                text(eval(---
record({ item(myTableSpace, i) },{ j }).Position
                ---, me))
            end, "
") +
            "
");

{"Position":"Snacks","Name":" • Frische Baguettes\n • gargerer\n • eterertetr\n • terttertrert\n • retetertrterte\n • etrerrteertetr\n • werwerwerwerwe\n"}

Hier finde ich auch keinen Fehler. Der Umbruch wird mit \n ausgelöst.

5 Antworten

null
    • Michi.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Template

    • Michi.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hab mal eine DB reingestellt.

    Ab 96 Zeichen erfolgt im Layout der Umbruch, hinzu kommen noch die manuellen Umbrüche im Rich-Text. Nur wie bekomme ich die Zeilenanzahl??

      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Mit dem Skript von zählt ninox den harten Umbruch nach Textlänge. Dies klappt jedoch auch nur bei Text. Sobald es HTML wird, werden die Tags mitgezählt. Auch bleibt das Problem des manuellen Umbruchs. Klappt das überhaupt, was ich möchte?

      let textFeld := replacex(text('Rich-Text'), "\n", " ");
      let zeilen := 0;
      let laenge := length(text('Rich-Text'));
      let newArray := [""];
      newArray := null;
      let restString := textFeld;
      let counter := false;
      while counter = false do
          let teilString := [substr(textFeld, 0, 10)];
          let restString := substr(textFeld, 10, laenge);
          textFeld := restString;
          zeilen := zeilen + 1;
          newArray := array(newArray, teilString);
          if length(textFeld) < 10 then
              newArray := array(newArray, [restString]);
              counter := true
          end
      end
      ;
      zeilenanzahl := zeilen;
      'Rich-Text 2' := join(newArray, "
      ")
      

    • Michi.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Scheint halbwegs so zu klappen... keine Ahnung, ob das richtig ist.

    function fx_RemoveTags1(xText : text) do
        replace(replacex(xText, "(<[\/\!]*?[^<>]*?>)", ""), "&nbsp;", " ")
    end;
    function fx_formTextZeilenumbruch(xText : text) do
        let Text1 := replace(xText, "</ul><div>", "</ul>");
        Text1 := replace(Text1, "</ol><div>", "</ol>");
        Text1 := replace(Text1, "<div><ul>", "<ul>");
        Text1 := replace(Text1, "<div><ol>", "<ol>");
        Text1 := replace(text(Text1), "</div>", "");
        replace(Text1, "<div>", "<br>")
    end;
    function fx_formTextUebFett(vTextfeld : text) do
        let Text1 := replace(vTextfeld, "<h1><i>", "<h1><b>");
        Text1 := replace(Text1, "</i></h1>", "</b></h1>");
        Text1 := replace(Text1, "<h2><i>", "<h2><b>");
        Text1 := replace(Text1, "</i></h2>", "</b></h2>");
        Text1 := replace(Text1, "<h3><i>", "<h3><b>");
        replace(Text1, "</i></h3>", "</b></h3>")
    end;
    let ManUmbruch := 0;
    let autoUmbruch := 0;
    let myARRAY := split(fx_formTextUebFett(fx_formTextZeilenumbruch(text(raw('Rich-Text')))), "</b>");
    for i in myARRAY do
        ManUmbruch := ManUmbruch + 1;
        if length(fx_RemoveTags1(raw(i))) > 10 then
            autoUmbruch := autoUmbruch + 1
        end;
        Zeilenanzahl := ManUmbruch - 1 + autoUmbruch
    end
    
      • Michi.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Doch nicht richtig... klappt nur bei der, wenn die 1. Zeile den Autoumbruch hat, da die restlichen Zeichen nicht auf den nächsten Durchlauf darauf gerechnet werden 😡

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 5Antworten
  • 94Ansichten
  • 1 Folge bereits