1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| procedure TFormTest.StringGrid1DrawColumnCell(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
const Row: Integer; const Value: TValue; const State: TGridDrawStates);
var
aRowColor: TBrush;
aNewRectF: TRectF;
aopacity : single;
begin
aRowColor := TBrush.Create(TBrushKind.Solid, TAlphaColors.Alpha);
aOpacity:=1;
if rdbRowselected.IsChecked
AND (Cols.Contains(Column.Index) OR Rows.Contains(Row))
then begin
aRowColor.Color := TAlphaColors.Blue;
if Rows.Contains(Row) AND Cols.Contains(Column.Index)
then aOpacity:=0.8
else aOpacity:=0.5;
end
else aRowColor.Color := TAlphaColors.white;
aNewRectF := Bounds;
aNewRectF.Inflate(3, 3);
Canvas.FillRect(aNewRectF, 0, 0, [], aOpacity, aRowColor);
Column.DefaultDrawCell(Canvas, Bounds, Row, Value, State);
aRowColor.free;
end;
procedure TFormTest.StringGrid1DrawColumnHeader(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF);
var
aRowColor: TBrush;
begin
aRowColor := TBrush.Create(TBrushKind.Solid, TAlphaColors.Alpha);
if Cols.Contains(Column.Index)
then aRowColor.Color := TAlphaColors.AliceBlue
else aRowColor.Color := TAlphaColors.white;
Canvas.FillRect(Bounds, 0, 0, [], 1, aRowColor);
Column.DefaultDrawCell(Canvas, Bounds, 0, Column.Header,[]);
StringGrid1.InvalidateRect(StringGrid1.CellRect(Column.Index,0));
end;
procedure TFormTest.StringGrid1HeaderClick(Column: TColumn);
begin
if Cols.IndexOf(Column.Index)>-1
then cols.RemoveItem(Column.Index,TDirection.FromBeginning)
else Cols.Add(Column.Index);
StringGrid1.Repaint;
end; |
Partager