AdvStringGrid -> Setzen von Editortext



  • Hallo,

    Ich habe folgendes Problem mit einem AdvStringGrid:

    AdvStringGrid mit 3 Spalten, die dritte Spalte editierbar.

    if(ACol == 2)
        AEditor = edNormal;
    

    Spalteninhalt wird durch den Nutzer editiert (Eingabe von beliebigen Zeichen). Bei Eingabe von '<' wird eine externe Listbox geöffnet, aus welcher vordefinierte Strings eingefügt werden können.
    z.B.

    Editiert: "1234xcv<"

    +aus Luistbox ausgewählt: "KMM_OW"

    ergibt zusammen: "1234xcv<KMM_OW"

    Bei Eingabe des Zeichens '>' wird die Listbox geschlossen und zum Editor der Zelle zurückgekehrt.

    Der Zellinhalt ist jetzt "1234xcv<KMM_OW>"

    Wenn jedoch der Editor der Zelle wieder aktiv ist, dann ist der Editortext

    "1234xcv"

    Das setzen des Editortextes sollte doch mit der Funktion 'GetEditText(...)' möglich sein.

    void __fastcall Tprofiltabelle::u1_gridGetEditText(TObject *Sender,
          int ACol, int ARow, AnsiString &Value)
    {
    
      if(static_cast<TAdvStringGrid*>(Sender)->Tag == 99)
      {
        Value = neweditstring;
    //    static_cast<TAdvStringGrid*>(Sender)->NormalEdit->Text = neweditstring; <-- diese Zeile ist ein Test von mir, funktioniert aber auch nicht
        static_cast<TAdvStringGrid*>(Sender)->Tag = 0;
      }
    
    }
    

    Mit dem Debugger und einem Haltepunkt in der Funktion sieht man, daß die Variablen 'Value' und 'neweditstring' den korrekten Wert (Zellinhalt) besitzen.
    Wie bekomme ich den Zellinhalt als Editortext angezeigt?

    Gruß Udo



  • Hallo,

    ich habe noch ein paar Tests gemacht und folgendes festgestellt:

    Alles was zwischen '<' und '>' in einem String steht (und auch dahinter) wird nicht in den Editortext übernommen.

    Wenn der String mit '<' beginnt und das Zeichen '>' fehlt, dann funktioniert das korrekt.
    Genauso wenn das Zeichen '>' enthalten ist, aber '<' nicht.

    Eventuell nützt diese Erkenntnis ja jemandem.

    Gruß Udo



  • Geht es hier um TAdvStringGrid von TMS Software? Dann dürfte das wohl ein recht spezifisches Problem sein, für das du dich am besten dort an den Support wenden solltest.
    Möglicherweise wird Text in '<>' von der Komponente intern als Steuerzeichen, HTML-Code oder was auch immer interpretiert und/oder ausgefiltert.



  • Hallo,

    ja, es geht um das TAdvStringGrid.

    @Jansen
    Möglicherweise wird Text in '<>' von der Komponente intern als Steuerzeichen, HTML-Code oder was auch immer interpretiert und/oder ausgefiltert

    So etwas in der Richtung vermute ich auch.
    In meinem Fall werden die in '<...>' eingeschlossenen Zeichen in einem Formelparser als Variablennamen interpretiert.

    Es besteht jedoch durchaus die Möglichkeit, die Definition der entsprechenden Zeichen im Parser zu ändern.

    Gruß Udo


Log in to reply