Einzelnen Beitrag anzeigen

Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#3

AW: Stringgrid zeilen färben

  Alt 23. Jul 2013, 00:29
Hallo,

ich weiß jetzt nicht, ob ich Dein Anliegen richtig verstanden habe, aber Du kannst mal versuchen ob Dir folgendes weiterhilft:
Delphi-Quellcode:
type
  TfrmMain = class(TForm)
  private
    FCurrentRow : Integer;
    procedure WMDetailClose (var Msg : TMessage); message WM_DETAILCLOSE;
  end;

procedure TfrmMain.WMDetailClose(var Msg: TMessage);
begin
  FCurrentRow := -1;
  StringGrid1.Invalidate
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  // Deine Initialisierungen
  FCurrentRow := -1
end;

procedure TfrmMain.StringGrid1DblClick(Sender: TObject);
begin
  // Deine Aktionen
  FCurrentRow := StringGrid1.Row;
  StringGrid1.Invalidate
end;

procedure TfrmMain.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  c : TColor;
begin
  if ARow = FCurrentRow then
    c := TColor ($FFCC99)
  else
    if not ((gdFixed in State) or Odd (ARow)) then
      c := TColor ($D9D9C0)
    else
      Exit;

  Stringgrid1.Canvas.Brush.Color := c;
  Stringgrid1.Canvas.FillRect (Rect);
  Stringgrid1.Canvas.TextOut (Rect.Left + 2, Rect.Top + 2, Stringgrid1.Cells [ACol, ARow])
end;
Und dann noch beim Schließen des Detailfensters FCurrentRow := -1 setzen (ich nehme mal an, Dein Formular hört auf frmDetail)
Delphi-Quellcode:
const
  WM_DETAILCLOSE = WM_USER + 1;

type
  TfrmDetail = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    // Deine Deklarationen
  end;

procedure TfrmDetail.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  SendMessage (Application.MainFormHandle, WM_DETAILCLOSE, 0, 0)
end;
Gruß
Volker Zeller
  Mit Zitat antworten Zitat