Announcement

Collapse
No announcement yet.

Zellen bediengt einfärben...

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

  • Zellen bediengt einfärben...

    Hallo,

    ich möchte die Zellen eines TDBGrid einfärben in Abhängigkeit anderer Zellwerte
    einer Zeile. Die Zellwerte für die Bedingung können vor bzw. hinter der
    einzufärben Zelle stehen.

    Da das DrawColumnCell-Ereignis das TDBGrid zeilen (von links-nach rechts)
    bzw. spaltenweise (von oben nach unten) durchläuft kann ich Felder nicht einfärben, deren bedingungs-zellwerte dahinter stehen (weil eben noch nicht vorhanden).

    Kann ich ein TDBGrid in ein StringGrid umwandeln und dann per x,y Angaben Zellwerte abfragen (Wie?). Bzw. Zellwerte per x,y angaben auslesen?

    Wie kann man das Problem lösen?

  • #2
    Ein anderes Grid benutzen. Eine Umwandlung ist nicht möglich.

    per x,y Angaben Zellwerte abfragen (Wie?). Bzw. Zellwerte per x,y angaben auslesen?
    Diese Methoden gibt es absichtlich nicht, da ja die DB-Connection die Oberhand hat und das Manipulieren der Wert so nicht möglich sein soll
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Ein anderes Grid benutzen.
      Was für ein anderes Grid?

      Comment


      • #4
        Na, entweder die Daten manuell in einem Stringgrid verwalten oder schauen, ob www.tmssoftware.com was hat
        Christian

        Comment


        • #5
          Such doch mal in der Delphi-Praxis nach "DBGrid einfärben". Da gibts einige Beispiele.

          Comment


          • #6
            Originally posted by Bernhard Geyer View Post
            Such doch mal in der Delphi-Praxis nach "DBGrid einfärben". Da gibts einige Beispiele.
            Ja super. ich bin dort fündig geworden. Mit:

            Column->Field->DataSet->FieldByName("FELDNAME")->As...
            kann man Zellen vor und hinter der einzufärbenden Zelle ereichen.

            so:
            if (DataCol == 4) {
            if (Column->Field->DataSet->FieldByName("SOLL")->AsString != "" && Column->Field->DataSet->FieldByName("ISTWERT")->AsString != "") {
            if (Column->Field->DataSet->FieldByName("ISTWERT")->AsInteger < Column->Field->DataSet->FieldByName("SOLL")->AsInteger) {
            thisGrid->Canvas->Pen->Color = clBlack;
            thisGrid->Canvas->Brush->Color = clRed;
            thisGrid->Canvas->Rectangle(Rect.Left,Rect.Top,Rect.Right,Rect.Bott om);
            thisGrid->Canvas->TextOut(Rect.Left+2,Rect.Top+2,Column->Field->AsString);
            }
            }
            }

            Comment

            Working...
            X