Code:

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids;

 

type

TForm1 = class(TForm)

   StringGrid1: TStringGrid;

   procedure FormCreate(Sender: TObject);

   procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;

     Rect: TRect; State: TGridDrawState);

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

 

procedure TForm1.FormCreate(Sender: TObject);

var

C, R: Integer;

begin

for C := 0 to StringGrid1.ColCount - 1 do

begin

   for R := 0 to StringGrid1.RowCount - 1 do

   begin

     if (C < StringGrid1.FixedCols) or

        (R < StringGrid1.FixedRows) then

       StringGrid1.Cells[C, R] := Format('Fixed Cell (%dx%xd)', [C, R])

     else

       StringGrid1.Cells[C, R] := Format('Cell (%dx%d)', [C, R]);

   end;

end;

end;

 

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;

Rect: TRect; State: TGridDrawState);

var

I: Integer;

begin

with StringGrid1 do

   if gdFixed in State then

   begin

     Canvas.FillRect(Rect);

     InflateRect(Rect, -2, 0);

     if (ACol = Col) or (ARow = Row) then

       Canvas.Font.Style := [fsBold]

     else

       Canvas.Font.Style := [];

     DrawText(Canvas.Handle,

       PChar(Cells[ACol, ARow]), -1, Rect,

       DT_SINGLELINE or DT_VCENTER);

   end else begin

     Rect := CellRect(ACol, 0);

     for I := 1 to FixedRows - 1 do

       with CellRect(ACol, I) do

         Inc(Rect.Bottom, Bottom - Top);

     InvalidateRect(Handle, @Rect, True);

 

     Rect := CellRect(0, ARow);

     for I := 1 to FixedCols - 1 do

       with CellRect(I, ARow) do

         Inc(Rect.Right, Right - Left);

     InvalidateRect(Handle, @Rect, True);

   end;

end;

 

end.

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить