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ß