og så kan du jo bare spørge i eventen hvilken celle du er i - feks: var cellColor : TColor; if ACol=0 then cellColor := clRed; ... SG.Canvas.Brush.Color := cellColor;
Hej TKnudsen Det lyder til at være en rigtig løsning, MEN jeg kunne godt tænke mig, hvis du kunne vise et eks. hvor en celle bliver farvet, men det skal ske under FormCreate eventen.
Når den form som stringgridet er på bliver created eller opdateret (feks efter minimize-restore) bliver alle visuelle controllers Draw events kaldt. Og for stringgridet gælder det at alle cellerne bliver opdateret. Derfor behøver du ikke lave noget specielt i FormCreate.
eksemplet skulle farve kolonne 0 rød, kolonne 1 grøn, celle 2,2 blå
procedure TForm1.SGOnDrawCell(jeg kan ikke huske hvilke params der bliver overført) var cellColor : TColor; begin case ACol of 0 : cellColor := clRed; 1 : cellColor := clGreen; 2 : if ARow = 2 then cellCOlor := clGreen; else cellColor := clWhite; end; SG.Canvas.Brush.Color := cellColor; SG.Canvas.FillRect(Rect); SG.Canvas.TextOut(Rect.Left+2,Rect.Top+2,SG.Cells[ACol,ARow]); end;
eksemplet er skrevet uden kompiler - så måske er der et par fejl - feks kan jeg ikke huske om det i en case hedder \'else\' eller \'default\'
Tknudsen>> Spørgsmålet gik på hvorledes en ENKELT celle farves. Du farver alle celler. Jeg ved godt at der skal en meget lille ændring til, men here goes....
Ok, det er myreknepperi - sorry, sådan er jeg i dag....
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.