dbgrid farbe der zeilen ändern...



  • hmmm also ich bin jetzt soweit:

    ich hab das defaultcolumndraw auf false gesetz.

    jetzt muss ich ja ondrawcolumncell "aktivieren" oder?!

    und dann hab ich mir das so gedacht:

    DBGrid1-> Columns,Rect,DataCol,Column,State;

    hier muss ich jetzt das Rect verändern oder?! hab in nem bsp gesehen das man das z.b. mit rect.left+1 machen kann aber leider zeigts bei mir garnix an...



  • Die Methode OnDrawColumnCell verwendest du doch schon um die Farben zu setzen.

    void __fastcall TForm3::DBGrid1DrawColumnCell(TObject *Sender, 
          const TRect &Rect, int DataCol, TColumn *Column, TGridDrawState State)
    

    Hast du mal in der Hilfe geschaut was die einzelnen Parameter bedeuten? z.B. DataCol oder Column? da "Column" ja auf deutsch "Spalte" heißt und es in beiden Worten vorkommt könnte es ja mit deinem Wunsch zu tun haben...



  • hilfe:

    Beschreibung
    Mit einer Ereignisbehandlungsroutine für OnDrawColumnCell können Sie eine benutzerdefinierte Anzeigeroutine für die Daten in den Gitterzellen bereitstellen. Die Darstellung in der Zelle erfolgt mit den Methoden der Eigenschaft Canvas.

    Eine OnDrawColumnCell-Ereignisbehandlungsroutine kann die Methode DefaultDrawColumnCell aufrufen, damit das datensensitve Datengitter den Datenwert in die Zelle schreibt. Die Methode DefaultDrawColumnCell kann die Ereignisbehandlungsroutine OnDrawColumnCell kann erweitern, um visuelle Auswahl- und Fokusselektoren bereit zu stellen.

    Hat DefaultDrawing den Wert true, werden die Daten bereits vor dem Ereignis OnDrawColumnCell in die Zelle geschrieben, und das Fokusrechteck wird nach dem Ereignis OnDrawColumnCell für die markierten Zellen angezeigt.

    Anmerkung: Hat die Eigenschaft State der Eigenschaft Columns den Wert csDefault, wird das Ereignis OnDrawDataCell vor dem Ereignis OnDrawColumnCell ausgelöst. Das Ereignis OnDrawDataCell ist veraltet und dient nur der Abwärtskompatibilität. Geben Sie nicht gleichzeitig Ereignisbehandlungsroutinen für die Ereignisse OnDrawDataCell und OnDrawColumnCell an.

    ich finde die hilfe ist leider nicht sehr hilfreich!!!

    das einzigste was ich hier hilfreicht finde ist, dass mann den defaultdrawcoloumncell auf false setzen muss!!!

    ja schon klar das mit dem coloumn aber wie setz ich die auf zeile 1?!

    sorry für das aufdemschlauchstehen 😕



  • Otz110 schrieb:

    ja schon klar das mit dem coloumn aber wie setz ich die auf zeile 1?!

    wieso jetzt auf einmal Zeile? 😮

    warum versuchst du nicht einfach mal was? z.B. indem du nur dann malst wenn DataCol den Wert 1 hat? oder wenn Column->FieldName den Wert der Spalte hat die du farbig haben willst?

    übrigends muß man den Wert von DefaultDrawing nicht umbedingt auf false setzen. Wenn man Änderungen am gezeigten Text haben will oder anderes schon, aber nur für die Farbe braucht man das nicht umbedingt.



  • ok und wie "bestätige" ich das dann?

    auch mit dem: DBGrid1->DefaultDrawColumnCell(Rect, DataCol,Column , State);

    weil wenn ich das mache, ist mein grid aufeinmal leer...



  • wieso werd ich das Gefühl nicht los, dass Programmierung nicht deine Stärke ist... 🙄

    als mal rein von der Logik her:
    du hast das OnDrawColumnCell-Ereignis, dort willst du daß nur die Spalte MHD je nach Datum in einer anderen Farbe kommt

    was also ist zu tun?
    1. fragst du ab ob die gerade gezeichnete Spalte die ist die du haben willst, das geht entweder über DataCol wenn du weißt dass MHD z.B. immer die 3. Spalte ist oder über Column->FieldName wenn die Position der Spalte verschieden sein kann
    2. wenn 1. zutrifft prüfst du ob das Datum einem deiner Zeitkriterien zugeordnet werden kann und setzt die Farbe, aber das hatten wir ja schon durch
    3. du verwendest die Funktion

    DBGrid1->DefaultDrawColumnCell(Rect, DataCol, Column, State);
    

    damit alle Zellen gezeichnet werden und zwar ganz zum Schluß des OnDrawColumnCell-Ereignisses

    mehr Hilfe gibts von mir dazu jetzt nicht :p


Anmelden zum Antworten