StringGrid, Farbe, rechte Maustaste



  • Hallo,

    in einem StringGrid möchte ich die angeklickte Zeile bei einem Linksklick gelb markieren, per Rechtsklick soll wieder die ursprüngliche Hintergrundfarbe angezeigt werden.

    Was ich bisher machte:

    objGridMouseUp

    int iCol, iRow;
    	objGrid->MouseToCell(X, Y, iCol, iRow);
    
    	TGridRect myRect;
    	myRect.Left = iCol;
    	myRect.Top = iRow;
    	myRect.Right = iCol;
    	myRect.Bottom = iRow;
    	objGrid->Selection = myRect;
    
    	if (Button == mbLeft) {
    		objGrid->Cells[3][iRow] = "1";
    	}
    	if (Button == mbRight) {
    		objGrid->Cells[3][iRow] = "0";
    	}
    

    objGridDrawCell

    if (objGrid->Cells[3][ACol] == "1") {
    		objGrid->Canvas->Brush->Color = clYellow;
    		objGrid->Canvas->Font->Color = clBlack;
    		objGrid->Canvas->FillRect(Rect);
    
    		int hAlign = 0;
    		DrawText(objGrid->Canvas->Handle, objGrid->Cells[ACol][ARow].c_str(),
    			-1, &Rect, DT_SINGLELINE | hAlign);
    	}
    

    Die Spalteneinträge der 3.Spalte 1/0 werden korrekt gesetzt und angezeigt. Beim Färben jedoch verhält sich das merkwürdig. Mal wird nur die 3. Spalte gefärbt, dann wieder die ganze Zeile, auf die Ursprungsfarbe komm ich gar nicht mehr zurück usw.

    Kann mir jemand nen Tip geben, an welcher Stelle ich da ansetzen muss ? Danke !



  • Du mußt in GridDrawCell abfragen, ob die aktuell zu zeichnende Cell die 3. ist, d.h.

    if (ACol == 3)
    {
      // Draw...
    }
    

Log in to reply