16. februar 2004 - 09:50Der er
12 kommentarer og 1 løsning
Forskellige farver tekst i Stringgrid
Kan man farve teksten i sine celler uafhængig af hinanden ?! Jeg kan kun få lavet det sådan at al teksten i hele stringgrid'en har samme farve (stringgrid1.font.color:= clred f.eks.) ...
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Slettet bruger
16. februar 2004 - 13:33#1
Prøv det her:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with (Sender as TStringGrid) do begin if (ACol = 1) and (ARow = 1) then begin Canvas.Font.Color := clRed; Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, cells[acol, arow]); Canvas.FrameRect(Rect); end; end; end;
1. det bliver den anden celle i den anden række der bliver rød,
2. hvis man ikke husker at sætte defaultdrawing for stringgrid'et til false er der slet ingen celler der bliver røde ;)
ha' det godt hatecaps
Synes godt om
Slettet bruger
26. februar 2004 - 07:22#5
hatecaps -> Er det ikke ligemeget om sætter DefaultDrawing til False, ved mig virker det ihvertfald aligevel, den eneste forskel der er, at den med DefaultDrawing kun tegner stegerne for celerne :o)
hmm.. nu virker det... skulle jo bare lige lave det ordentligt, men skal egentlig have det i en funktion, for jeg er ved at lave en kalender der viser 3 måneder. 1 måned i hver række. Og det er så hver celle som indeholder søndag der skal have rød text, og da det jo ikke er samme celle i alle 3 rækker så kan jeg jo ikke bruge denne procedure... Nogen forslag ?
procedure TForm1.FormCreate(Sender: TObject); var I, J: Integer; begin SetLength(Colors, StringGrid1.ColCount); for I := Low(Colors) to High(Colors) do begin SetLength(Colors[I], StringGrid1.RowCount); for J := Low(Colors[I]) to High(Colors[I]) do Colors[I, J] := clBlack; end; end;
Så sætter du farven på en celle med f.eks. SetCellTextColor(1,2, clRed);.
procedure TForm1.FormCreate(Sender: TObject); var I, J: Integer; begin SetLength(Colors, StringGrid1.ColCount); for I := Low(Colors) to High(Colors) do begin SetLength(Colors[I], StringGrid1.RowCount); for J := Low(Colors[I]) to High(Colors[I]) do Colors[I, J] := clBlack; end;
SetLength(Colors2, StringGrid1.ColCount); for I := Low(Colors2) to High(Colors2) do begin SetLength(Colors2[I], StringGrid1.RowCount); for J := Low(Colors2[I]) to High(Colors2[I]) do Colors2[I, J] := clBlack; end; end;
Har ikke haft mulighed for at teste det, men tror det virker :o)
kanon det virker perfekt.. kan du ikke lige smide et par kommentarer til linierne så jeg helt ved hvad der sker hvis jeg nu skulle forklare det til en anden ?
Ellers så smid et svar så får du point.
Synes godt om
Slettet bruger
20. marts 2004 - 13:12#12
Du må undskylde jeg har været lidt langsom, men overså mailen med dit indlæg :(
Har prøvet at foreklare lidt af koden, hvis der er noget du ikke forstår kan du bare spørge. De fleste af funktionerne kan du finde en forklaring på, i Delphi' hjælp :o)
Colors: array of array of TColor;//Et multidimensional array til at holde tekst farven på alle cellerne Colors2: array of array of TColor;//Et multidimensional array til at holde baggrundsfarven på alle cellerne
implementation
{$R *.dfm}
//DrawCell bliver kaldt hver gang en celle bliver "tegnet" procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with (Sender as TStringGrid) do begin Canvas.Font.Color := Colors[ACol, ARow]; //Sætter farven på skriften Canvas.Brush.Color := Colors2[ACol, ARow]; //Sætter baggrundfarven Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]); //Tegner teksten i cellen med den nye farve Canvas.FrameRect(Rect); //Tegner en ramme omkring cellen end; end;
procedure TForm1.FormCreate(Sender: TObject); var I, J: Integer; begin SetLength(Colors, StringGrid1.ColCount); for I := Low(Colors) to High(Colors) do begin SetLength(Colors[I], StringGrid1.RowCount); for J := Low(Colors[I]) to High(Colors[I]) do Colors[I, J] := clBlack;//Sætter standard tekst farven til sort end;
SetLength(Colors2, StringGrid1.ColCount); for I := Low(Colors2) to High(Colors2) do begin SetLength(Colors2[I], StringGrid1.RowCount); for J := Low(Colors2[I]) to High(Colors2[I]) do Colors2[I, J] := clWhite;//Sætter standard baggrundsfarven til hvid end; end;
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.