Når der indtastes en værdi i en celle for en given række i HyperGrid'et bliver der udregnet en Brutto Avance Procent, og er denne negativ skal alle rækkens celler have en rød baggrundsfarve men man skal stadig kunne se dataene i cellen. Efterfølgende skal de oprindelige farver i cellerne genoprettes når input dataene giver en positiv brutto avance :))
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if aRow <> aRowToColor then exit; StringGrid1.Canvas.brush.Color := clred; StringGrid1.Canvas.FillRect(Rect); end;
procedure TForm1.BitBtn1Click(Sender: TObject); var s : String; begin s := IntToStr(aRowToColor); if InputQuery('I der, Hest og Hund', 'Hvilken række skal farves rød ?', s) then aRowToColor := StrToIntDef(s, 2); StringGrid1.Repaint; end;
procedure TForm1.FormCreate(Sender: TObject); begin aRowToColor := -1; end;
Så prøv den her : procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if aRow <> aRowToColor then exit; if aRowToColor < 0 then exit; with StringGrid1 do begin Canvas.brush.Color := clred; Canvas.FillRect(Rect); Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]); end; end;
Det er ikke måden komponenten tegner cellen der er fusket - det er den omstændige måde man sætter en anden baggrundsfarve i en celle.
Det havde været nemmere med en property ala StringGrid1.Cells[1,1].Color:=clRed
:))
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.