Announcement

Collapse
No announcement yet.

Endlos Schleife im OnDrawColumnCell

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Endlos Schleife im OnDrawColumnCell

    Hallo,

    ich versuche in einem DBGrid beim Zeichnen einer Zeile wenn die Zeile in der DB als "gelöscht" makiert ist Rot anzuzeigen. Was auch funktioniert. Allerdings scheint sich hier eine Endlosschleife zu bilden. Weiß jemand Rat?


    if (!qSchichtbuch->FieldByName("Delete")->AsBoolean){
    Column->Color=TColor(0x005CF1F5);
    }else{
    Column->Color=clRed;
    }

    // Funktioniert, aber hängt in einer Schleife fest.


    if(DataCol==0 ){

    if (!qSchichtbuch->FieldByName("Delete")->AsBoolean){
    DBGrid2->Canvas->Brush->Color=TColor(0x005CF1F5);
    /DBGrid2->Canvas->Rectangle(Rect);
    }else{
    DBGrid2->Canvas->Brush->Color=clRed;
    DBGrid2->Canvas->Rectangle(Rect);
    }

    // Funktioniert, aber Zeichnet erst mal nur die erste Spalte.


    qSchichtbuch ist ein SQL Query.

    Danke schon mal

  • #2
    Hallo,

    jeder schreibende Zugriff auf Column innerhalb der Funktion DBGridDrawColumnCell() führt zu einer Rekursion und damit zu einer Endlosschleife, bis das Programm durch einen Stacküberlauf abstürzt.
    Wie du schon richtig erkannt hast, darf innerhalb von DBGridDrawColumnCell() nur mit DBGrid2->Canvas-> gearbeitet werden.

    Und um alle Spalten rot zu zeichnen, mußt du die Bedingung "if(DataCol==0)" entfernen.

    if(DataCol==0) erste Spalte
    if(DataCol==1) zweite Spalte usw.

    Comment


    • #3
      Hallo,

      ja sicher bei näherem betrachten ist es klar, denn ein Schreibzugriff ruft ja dann wiederum dieses Ereigniss auf. usw....

      Danke

      Comment

      Working...
      X