TStringGrid: Schriftformatierung für spezielle Zeller des Grids zuweisen



  • Moin

    im Objektinspektor kann ich zwar den Font des gesamten Grids ändern (fett/kursiv/normal, farben, schriftart, etc.)

    Kann ich auch z.B. einer ganz speziellen Zeile einen spezifischen Font zuweisen, z.B:

    StringGrid1->Cells[4][3]->Font->Style << fsBold; //bringt natürlich einen Fehler

    wie geht es richtig, sodass alle anderen Zellen unberücksichtigt bleiben (standardeinstellung halt)

    mfg



  • Hallo,

    schau in den BCB Foren FAQ unter StringGrid (farbige Zellen),
    das ist das selbe prinzip, also per canvas malen.

    mfg
    vergissEs



  • Thx

    hab das ganzre mal versucht zu iomplementieren, dass die erste fixierte Zeile fett gedruckt ist. es kommt aber weder fehlermeldung noch fettgedruckter text => was mach ich falsch?

    void __fastcall TForm1::IndexGridDrawCell(TObject *Sender, int ACol,
          int ARow, TRect &Rect, TGridDrawState State)
    {
        if( State.Contains( gdFixed ) )
        {
            IndexGrid->Canvas->Font->Style << fsBold;
        }
        // Zelle endlich zeichnen 
      IndexGrid->Canvas->FillRect(Rect);
    
      // noch ein Gimmick für die Textausrichtung
      int hAlign;   // text align, 0/1/2 - Left/Center/Right
      if (ACol % 2)
        hAlign = 1;
      else
        hAlign = 2;
    
      // und zum Schluss den Text in die Zelle malen
      DrawText( IndexGrid->Canvas->Handle,
                IndexGrid->Cells[ACol][ARow].c_str(),
                -1, &Rect,
                DT_SINGLELINE | DT_VCENTER | hAlign );
    }
    


  • StringGrid1->Canvas->Font->Style = StringGrid1->Canvas->Font->Style << fsBold;
    

    Siehe auch die FAQ zu "Umgang mit 'Set'".


Anmelden zum Antworten