2 Textzeilen in StringGrid-Zelle



  • Hallo,

    ich habe folgendes Problem: Ich muß in einem StringGrid in jeder Zelle zwei Zahlen ausgeben. Diese sollen untereinander stehen.

    Da StringGrid aber kein WordWarp unterstützt habe ich versucht den Text wie folgt auszugeben:

    void __fastcall TAusgabe::StringGridMatrixDrawCell(TObject *Sender,
          int ACol, int ARow, TRect &Rect, TGridDrawState State)
    {
       AnsiString Textcav;
       AnsiString Textcah;
    
       if(ARow && ACol)    // erste Zeile und erste Spalte sollen frei bleiben
       {
          Textcav = FloatToStrF(Matrix[ARow - 1][ACol - 1].cav, (TFloatFormat)0, 7, 7);
          Textcah = FloatToStrF(Matrix[ARow - 1][ACol - 1].cah, (TFloatFormat)0, 7, 7);
    
          StringGridMatrix->Canvas->TextRect(
                   Rect,
                   Rect.Right - StringGridMatrix->Canvas->TextWidth(Textcav) - 5,
                   Rect.Top + (((Rect.Bottom - Rect.Top) / 2) - StringGridMatrix->Canvas->TextHeight(Textcav)) / 2,
                   Textcav);
    
          StringGridMatrix->Canvas->TextRect(
                   Rect,
                   Rect.Right - StringGridMatrix->Canvas->TextWidth(Textcah) - 5,
                   Rect.Top + ((Rect.Bottom - Rect.Top) / 2) + (((Rect.Bottom - Rect.Top) / 2) - StringGridMatrix->Canvas->TextHeight(Textcah)) / 2,
                   Textcah);
    
       }
    
    }
    

    Die Werte sind in einem 2 dimensionalen DynamicArray abgelegt, das aus einer Stuct aufgebaut ist.

    Das Problem ist nun, dass der zweite Aufruf von TextRect die Ausgabe des ersten Aufrufs verdeckt oder löscht.
    Wie kann ich das Problem lösen, oder kann ich die Ausgabe anders realisieren?

    Vielen Dank
    chris_f



  • Verwende TextOut() an Stelle von TextRect(), dann klappt's auch mit'm Nachbarn. 😉



  • Tatsache... dann hat man den Durchblick. 😃

    Danke.


Anmelden zum Antworten