Textausrichtung in Grid bei Benutzung von OnDrawCell



  • void __fastcall TMainMLVisard::DBGridDrawColumnCell(TObject *Sender,
          const TRect &Rect, int DataCol, TColumn *Column,
          TGridDrawState State)
    {
       DBGrid->Canvas->Pen->Color = clWindowText;
    
       DBGrid->Canvas->Brush->Color = clMoneyGreen;
       DBGrid->Canvas->Font->Color = clWindowText;
    
       DBGrid->Canvas->FillRect(Rect);
       DBGrid->Canvas->TextRect(Rect,Rect.Left,Rect.Top,"TEXT")
    }
    

    Soweit so, gut.
    Ich male meinen Hintergrund und meinen Text je Zelle in der Farbe meiner Wahl
    DBGrid->Canvas->TextRect zeichnet den Text.
    Dieser ist aber linksbündig (Rect.Left).
    Nun möchte ich ihn aber rechtsbündig haben (Numerische Werte in einer Tabelle).

    Wie mache ich das?

    P.S.
    @ akari
    Ich hab's endlich begriffen - in meiner Mittagspause (auch wenn die BCB-Hilfe das Bsp. verweigert [Error 141]).



  • Hier ist ein Beispiel: http://www.bytesandmore.de/rad/cpp/snipp/sc02007.php
    Der Link verweist irgendwie auf das falsche Beispiel, klicke auf Snippets und suche nach Grid. Das verlinkte Beispiel für TEdit ist nebenbei auch elegant gelöst.



  • @Fincki|work
    Merci. 👍 Das klappt gut.

    Auszug aus Bsp.

    //...
    DBGrid->Canvas->TextRect(Rect, Rect.Right - DBGrid->Canvas->TextWidth("Text") - 3, // im Original stand ne 2
          (Rect.Top+Rect.Bottom-DBGrid->Canvas->TextHeight(("Text"))/2, ("Text"));
    //...
    

    Für die Zukunft wärs perfekt, wenn der Subtrahent variabel wäre und ich wüßte wovon die Variable abhängig ist.



  • Ich glaube der Wert wird nur abgezogen, damit der Text nicht ganz am rechten Rand klebt.



  • Das ist korrekt. In meinem Fall stimmen es bei 3 die Zellen über DrawCell genau mit den Zellen überein, die im Standard gezeichnet wurden. Bei Zwei sind die Zellen ein wenig weiter Rechts als der Standard.

    => Irgendwie muß die Zwei ja zustande gekommen sein.



  • schau dir mal das beispiel zu TStringGrid in den FAQ an. das kannste analog auch auf dein DBGrid anwenden.



  • Sunday schrieb:

    schau dir mal das beispiel zu TStringGrid in den FAQ an. das kannste analog auch auf dein DBGrid anwenden.

    Ich bin zu blöd das Beispiel zu finden. 😡 Wenn ich die Forumsuche benutze und in FAQ VCL/CLX nach TStringGrid suchen lasse, erhalte ich keine Ergebnisse.

    Über FAQ-Inhaltsverzeichnid schon ...



  • zum FAQ-Index

    zu den Problemen der Suche

    BigNeal


Anmelden zum Antworten