[C++Builder] DBGrid



  • Guten Morgen,

    weiß jemand, wie ich in einem DBGrid die Texte in den Fixed Cols zentriert in der Mitte ausrichten kann?
    Und weiß zufällig jemand, wie ich die einzelnen Zeilen farblich voneinander abheben kann.

    Mit einer normalen StringGrid-Komponenten benutze ich für diesen Zweck die DrawCell -Methode aber diese gibt es glaub ich nicht für DBGrid!

    TStringGrid* Grid=dynamic_cast<TStringGrid *>(Sender);
    
      // falls ungerade Spaltennummer und keine fixierte Zelle:
      if(Col%2 && !State.Contains(gdFixed))
      {
        // Falls nicht innerhalb der Auswahl:
        if(!State.Contains(gdSelected))
        {
          // Hintergrundfarbe auf gelb und die
          // Schriftfarbe auf rot setzen:
          Grid->Canvas->Brush->Color=clYellow;
          Grid->Canvas->Font->Color=clRed;
        }
        // Text linksbündig ausgeben:
        DrawCellText(Grid->Canvas, Grid->Cells[Col][Row], Rect, taLeftJustify);
      }
      else if(!State.Contains(gdFixed))
      {
        // Falls nicht innerhalb der Auswahl:
        if(!State.Contains(gdSelected))
        {
          // Hintergrundfarbe auf clAqua setzen:
          Grid->Canvas->Brush->Color=clAqua;
        }
        // Text rechtsbündig ausgeben:
        DrawCellText(Grid->Canvas, Grid->Cells[Col][Row], Rect, taRightJustify);
      }
      // Falls fixierte Zelle:
      else
      {
        // Fette Schrift verwenden:
        Grid->Canvas->Font->Style=Grid->Canvas->Font->Style << fsBold;
        Grid->Canvas->Font->Color = clBlue;
    
        // Text zentriert ausgeben:
        DrawCellText(Grid->Canvas, Grid->Cells[Col][Row], Rect, taCenter);
      }
    

    Danke für die Antworten!



  • Das funktioniert beim DBGrid genauso (OnDrawColumnCell). Nur mit dem Einfärben von Zeilen wirst Du Schwierigkeiten bekommen. Du könntest die Eigenschaft RecNo aus deinem DataSet verwenden um alle geraden und ungeraden Zeilennummern zu ermitteln und einzufärben. Diese RecNo wird aber nicht von allen Datenbanken bereit gestellt und ist oft genug einfach immer nur 0...


Anmelden zum Antworten