07. august 2006 - 17:04Der er
5 kommentarer og 1 løsning
Farve en row i en stringgrid
Hej,
Spørgsmålet er sikkert stillet før. Jeg har prøvet flere af farve-eksemplerne her på eksperten fx. farve en celle i en stringgrid.
Tror nok at mit problem er at jeg ikke helt forstår princippet i drawcell. Jeg sanver en nem funktion hvor man kan sige at stringgrid.rowColor = clblue og så er det overstået, men den findes ikke !
Min problemstilling: Jeg skal farve alle de rækker hvor værdi i celle 1 og 2 er ens i en given row.
Jeg har prøvet flere eksempler, med det viser sig at der tegnes ikke nogen farve før jeg flytter markøren hen i cellen.
Jeg vil have at den skal farve hele rækken/row en grøn farve når to værdier på fx. col 2 og col 3 er ens. (dette skal ske på alle rækker i listen hvor disse kriterier er opfyldt)
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
nedenstående virker, men som du ser gentegnes griddet, hver gang en celle forlades. Dette kan naturligvis forbedres med kontrol af ændret celleindhold inden repaint kaldes :-)
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect; State: TGridDrawState); begin if stringgrid1.cells[1,row] =stringgrid1.cells[2,row] then begin stringgrid1.Font.Color:= clBlack; Stringgrid1.canvas.Brush.Color:=clgreen; Stringgrid1.canvas.FillRect(rect); Stringgrid1.Canvas.TextOut(rect.left,rect.top,stringgrid1.cells[col,row]); end; end;
procedure TForm1.StringGrid1SelectCell(Sender: TObject; Col, Row: Integer; var CanSelect: Boolean); begin stringgrid1.repaint; end;
Du har ret i det ville være fint at kunne sætte attributes på kolonner/rækker f.eks. også at en kolonne skal højrestilles. Også det kan klares gennem DrawCell.
Tak for svar, men det ser ikke ud til at virke efter hensigten. Jeg ved ikke helt hvad der sker, men den ser ud til at have samme problem som jeg havde før, nemlig at farven skifter først når man flytter markøren.
Din løsning virker alligevel. Jeg havde lagt repaint ind i forkert event. Perfekt, tak skal du have. Jeg har egentlig manglet repaint i alle de test's jeg har lavet
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.