Dobry den, jak jiz nazev napovida potreboval bych zjistit jak pro ruznou bunku Stringgridu vytvorim ruzny font. PR: mam Stringgrid naplneny cisli od 1-4 a pro kazdy cislo potrebuju jinou barvu
1 2 4 3
3 2 4 1
3 3 1 4
....
....
atd.
pritom se barva musi pevne stahovat k cislu, Sringrid se totiz vyplnuje nahodne.
prosim pomozte. Muj mail je Jerremy09@seznam.cz , nebo ICQ: 233183343
Dik za kazdou odpoved
Fórum › Delphi
Stringgrid ruzny font pro ruznou bunku
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
const cNumOfColors = 3;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
private
mColorArray : array [0..cNumOfColors] of TColor;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i, j: integer;
begin
randomize;
for i:=0 to cNumOfColors do
mColorArray[i] := TColor(RGB(random(256),random(256), random(256)));
for i:=0 to StringGRid1.RowCount-1 do
for j := 0 to StringGrid1.ColCount-1 do
StringGrid1.Cells[j,i] := IntToStr(Random(cNumOfColors));
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with StringGrid1 do begin
Canvas.Font.Color := mColorArray[StrToInt(Cells[ACol, ARow])];
Canvas.Brush.Color := clWhite;
Canvas.FillRect(Rect);
DrawText(Canvas.Handle, PChar(Cells[ACol, ARow]), Length(Cells[ACol, ARow]), Rect, DT_CENTER);
end;
end;
end.
Celé kouzlo spočívá ve vykresloání, které se provádí při kreslení jednotlivých buňek tedy v metodě(resp. handleru eventu) OnDrawCell. Ta má několik parametrů, z níchž duléžité jsou zejména parametry ACol, ARow, Rect. Systém tuto metodu volá sám a vždy ji naplní příslušnými hodnotami ACol, ARow jsou idnexy práve krelené buňky a v Rect je obdelník reprezentující rozměry(resp. 2 krajní body) buňky. A teď už k programu, tebe v podstatě může zajímat jen ta metoda StringGrid1DrawCell:
1) V konstruktoru se naplní pole mColorArray nahodnou barvou, pole je jednorozměrné - velikost pole ovlivňuje konstanta cNumOfColors, ta odpovídá počtu barev - resp. čísel které se mohou ve SG nacházet.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
const cNumOfColors = 3;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
private
mColorArray : array [0..cNumOfColors] of TColor;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); // konstrukotr je pouze pro ukazku
var i, j: integer;
begin
randomize;
for i:=0 to cNumOfColors do
mColorArray[i] := TColor(RGB(random(256),random(256), random(256))); // v tomto poli si pamatuju vsechny barvy
for i:=0 to StringGRid1.RowCount-1 do
for j := 0 to StringGrid1.ColCount-1 do
StringGrid1.Cells[j,i] := IntToStr(Random(cNumOfColors));
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with StringGrid1 do begin
Canvas.Font.Color := mColorArray[StrToInt(Cells[ACol, ARow])]; // vyberu barvu odpovidajici indexu v poli mColorArray
Canvas.Brush.Color := clWhite; // nastavi barvu štetce na bilou
Canvas.FillRect(Rect); // "vycisti" bunku
DrawText(Canvas.Handle, PChar(Cells[ACol, ARow]), Length(Cells[ACol, ARow]), Rect, DT_CENTER); // nakresli text do stredu bunky - vice viz msdn
end;
end;
end.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Pripojeni databaze v ruznych jazycich s ruznou syntaxi — založil Row
VBA skontroluj bunku z nazvom — založil kotlas6667
Hledat buňku podle vlastních parametrů — založil clavien