Avatar billede pigbear Nybegynder
07. august 2006 - 17:04 Der 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)

Mvh

Pigbear
Avatar billede a_nor Nybegynder
07. august 2006 - 22:23 #1
Hej Piqbear,

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.

mvh  Anders
Avatar billede pigbear Nybegynder
07. august 2006 - 22:55 #2
Hej Anders,

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.

mvh pigbear

NB: Den skifter til hvid farve når kol 1 = kol 2
Avatar billede pigbear Nybegynder
07. august 2006 - 23:03 #3
Hej igen Anders,

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

Mvh

Pigbear
Avatar billede pigbear Nybegynder
07. august 2006 - 23:14 #4
Anders, hvordan giver jeg dig de 30 point ???

mvh

pigbear
Avatar billede a_nor Nybegynder
07. august 2006 - 23:30 #5
På dette svar,

Fint du fik det til at virke !

mvh
Avatar billede pigbear Nybegynder
08. august 2006 - 11:16 #6
Velbekomme
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester