Ist ein Zeilenumbruch im DBGrid-Feld möglich?



  • Hallo Leute,

    ich lasse in einem DBGrid-Feld einen variablen Text anzeigen. Dieser Text kann evt. so lang werden, dass dieser nicht mehr ganz im Grid angezeigt wird. Kann man für dieses Feld einen Zeilenumbruch aktivieren? Ich habe im Objektinspektor keinen Eintrag finden können?

    Gruß Torsten



  • wenn du das OnDrawColumnCell-Ereignis verwendest , sollte es ähnlich wie beim StringGrid OnDrawCell-Ereignis funktionieren (siehe FAQ)



  • Hi Linnea,

    ich habe in der FAQ gesucht, leider ohne Erfolg. Die Builder-Hilfe hat mir gezeigt, dass das Ereignis OnDrawColumnCell beim Zeichnen der Zellen aufgerufen wird. Nur wie gehe ich damit um? Was muss ich ins Ereignis proggen, damit die Zellen einen Zeilenumbruch bekommen???

    Gruß
    Torsten



  • so hab mal ne Weile getestet: also mehrere Zeilen untereinander geht nicht, zumindest nicht mit dem Standard DBGrid, einige Komponenten die im Netz rumschwirren könnnen so was aber

    den Zeilenumbruch entfernen oder nur bis zum ersten Zeilenumbruch ausgeben kannst du z.B. im OnDrawColumnCell-Ereignis

    void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
          const TRect &Rect, int DataCol, TColumn *Column,
          TGridDrawState State)
    {
    TDBGrid *Grid = dynamic_cast<TDBGrid*>(Sender);
    String  str = Column->Field->AsString;
    if (str.Pos("\r\n")> 0)
      {
      if (Grid->Columns->Items[DataCol]->FieldName == "DeineSpalte") //DeineSpalte durch den Namen der gewünschten Splate ersetzen
        {
        Grid->Canvas->FillRect(Rect);
        str.Delete(str.Pos("\r\n"),str.Length());
        Grid->Canvas->TextOut(Rect.Left+2, Rect.Top + 2, str);
        }
      else
        Grid->DefaultDrawColumnCell(Rect, DataCol, Column, State) ;
      }
    }
    

Log in to reply