Verständnisproblem Navigation in Tabellen

  • Hallo,

    ich erzeugen in einer Tabellenzelle der Haupttabelle eine weitere Untertabelle

    Code
      cell := WPRichText1.Table.rows[1].cols[2];
      // Nested table in second table
      utbl := cell.AppendChild(nil);
      utbl.ParagraphType := wpIsTable;
      urow := utbl.AppendNewRow(false);
      ucell := urow.AppendNewCell(false);
      ucell.ASet(WPAT_BorderFlags, WPBRD_DRAW_All4);
      WPRichText1.DelayedReformat;

    nun befindet sich der Cursor in dieser neuen Tabellenzelle und ich gehe aufwärts:

    Code
      par := WPRichText1.ActiveParagraph;
      // Zeile
      while par.ParentPar <> nil do
        par := par.ParentPar;

    damit habe ich die "Untertabelle"

    Aber jetzt komme ich nicht weiter, ich benötige die übergeordnete Haupttabelle aber eine ParentTable darüber ist Nil!

    Ich hoffe auf einen Denkanstoß!

    Ciao

    Stefan

    • Offizieller Beitrag
    Code
    while par.ParentPar <> nil do
       par := par.ParentPar;

    verlässt alle unter absätze sodass man in dem obersten Level wiederfindet. Das wäre nach der Beschreibung die erste Tabelle, also das Tabellenobjekt, nicht die

    Wenn man sich in einer Zelle befindet kann man mit Cell auf diese Zelle zugreifen, ausserdem gibt es noch ParentRow und ParentTable.

    Dies sind alles Funktionen welche den ParagraphType abfragen.

    Mit par := WPRichText1.ActiveParagraph.ParentTable; haben sie die aktuelle Tabelle, also evtl die Untertabelle bei Schachtelung.

    Tip.: Untertabellen würde ich nur sehr sparsam verwenden und wenn es wirklich Sinn macht.

  • Folgender Code:

    Code
    // Cursor steht in der Untertabelle
    // dessen Zelle
    par := WPRichText1.ActiveParagraph.ParentCell;
    //die Untertabelle
    utbl := par.parenttable;
    // Zelle der Haupttabelle in der die Untertabelle sitzt
    htbl := utbl.ParentCell; // ist Nil
    htbl := utbl.ParentPar; // ist Nil
    htbl := utbl.ParentTable; // ist Nil

    ich brauche die Haupttabelle und komme nicht hin!

    Eigentlich ist das, was ich da vorhabe, nur eine "Krampflösung" mit der Tabelle in der Tabelle, weil ich Probleme mit Tabellenzeilen mit fester Höhe habe!

    Dort verhält sich das Editieren sehr merkwürdig und für den Benutzer nicht nachvollziehbar:

    Solange man im verfügbaren Bereich tippt ist alles in Ordnung, kommen aber ein paar #10 Zeilenvorschübe und Text hinzu, bleibt der Cursor irgendwie am unteren Zellenrand, springt dann teilweise ein Zeichen zurück und selbst mit 'zig-fachem Del-Taste drücken bekommt man den unsichtbaren teil des Textes unten nicht wieder hoch! Auch de Cursortasten arbeiten dann in solch einem Text nicht mehr richtig!

    Deswegen wollte ich eine Zelle, die keine Höhenbegrenzung hat, in solch eine höhenbegrenzte Zelle einfügen, da funktioniert die Editiererei nämlich so wie erwartet...

    Ciao

    Stefan

    • Offizieller Beitrag

    ParentCell ist wie so dokumentiert:

    Retrieve the reference to the cell the table which is parent to this cell is located in. If the cell is not in a nested table ParentCell will be nil.

    Es handelt sich also bereits um die Zelle welche ihre unter Tabelle beinhaltet.

    Code
    par := WPRichText1.ActiveParagraph.ParentCell;
    if par=nil then raise Exception.Create('Nicht in Untertabelle');
    htbl := par.ParentTable
    Zitat

    Wenn man sich in einer Zelle befindet kann man mit Cell auf diese Zelle zugreifen, ausserdem gibt es noch ParentRow und ParentTable.

    Wenn Sie fragen zu einer Funktion haben, zögern Sie nicht bei gedrückter CTRL Taste in der IDE auf den Funktionsnamen zu klicken. Das bringt dann die Implementierung zum Vorschein, was oft Klarheit schafft.

    • Offizieller Beitrag
    Zitat

    Eigentlich ist das, was ich da vorhabe, nur eine "Krampflösung" mit der Tabelle in der Tabelle, weil ich Probleme mit Tabellenzeilen mit fester Höhe habe!

    Dort verhält sich das Editieren sehr merkwürdig und für den Benutzer nicht nachvollziehbar:

    Solange man im verfügbaren Bereich tippt ist alles in Ordnung, kommen aber ein paar #10 Zeilenvorschübe und Text hinzu, bleibt der Cursor irgendwie am unteren Zellenrand, springt dann teilweise ein Zeichen zurück und selbst mit 'zig-fachem Del-Taste drücken bekommt man den unsichtbaren teil des Textes unten nicht wieder hoch! Auch de Cursortasten arbeiten dann in solch einem Text nicht mehr richtig!

    Deswegen wollte ich eine Zelle, die keine Höhenbegrenzung hat, in solch eine höhenbegrenzte Zelle einfügen, da funktioniert die Editiererei nämlich so wie erwartet...

    Wenn Sie in einer höhenbegrenzten Zelle mehr als möglich Text eingeben muss der Text irgendwann versteckt werden. Ich sehe hier keine Fehlfunktion.