- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, Grids, StdCtrls, ExtCtrls;
- type
- TForm1 = class(TForm)
- StringGrid1: TStringGrid;
- Button1: TButton;
- Button2: TButton;
- ColorBox1: TColorBox;
- procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: integer;
- Rect: TRect; State: TGridDrawState);
- procedure FormCreate(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure Button2Click(Sender: TObject);
- procedure ColorBox1Change(Sender: TObject);
- private
- divMode: integer;
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- divMode := 1;
- StringGrid1.Repaint;
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- divMode := 2;
- StringGrid1.Repaint;
- end;
- procedure TForm1.ColorBox1Change(Sender: TObject);
- begin
- StringGrid1.Repaint;
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- divMode := 0;
- end;
- procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: integer;
- Rect: TRect; State: TGridDrawState);
- begin
- with StringGrid1 do
- begin
- if divMode = 0 then
- begin
- Canvas.Brush.Color := clWhite;
- Canvas.FillRect(Rect);
- end;
- if divMode = 1 then
- begin
- // 标出被 7 整除的数
- if (ARow * 5 + ACol) mod 7 = 0 then
- Canvas.Brush.Color := ColorBox1.Selected
- else
- Canvas.Brush.Color := clWhite;
- Canvas.FillRect(Rect);
- end;
- if divMode = 2 then
- begin
- // 标出被 3 整除的数
- if (ARow * 5 + ACol) mod 3 = 0 then
- Canvas.Brush.Color := ColorBox1.Selected
- else
- Canvas.Brush.Color := clWhite;
- Canvas.FillRect(Rect);
- end;
- Canvas.Pen.Color := clBlack;
- Canvas.TextOut(Rect.Left + 2, Rect.top + 4, IntToStr((ARow) * 5 + ACol));
- end;
- end;
- end.
给 StringGrid 按条件上色
最新推荐文章于 2022-04-25 15:00:52 发布