Hm weiss nicht so recht wie ich das anwenden soll. Ich merke mir den aktuellen Datensatz:
Code:
Cell:=DBGrid1.SelectedField.AsString;
Und nach danach spring ich da mit Locate wieder hin. Aber aus deinem Code kann man ja sehen das du dir die Scrollbar Position merkst, und diese dann wieder anfährst. Die Idee ist perfekt, jedoch hat das bei mir noch nicht geklappt:
Code:
var
Cell: String;
TempScrollInfo: SCROLLINFO;
begin
if Button = mbRight then
begin
TempScrollInfo.cbSize := SizeOf(SCROLLINFO);
TempScrollInfo.fMask := SIF_POS;
GetScrollInfo(DBGrid1.Handle, SB_HORZ, TempScrollInfo);
Cell:=DBGrid1.SelectedField.AsString;
GridDeSelectAll(DBGrid1);
DBGrid1.DataSource.DataSet.Locate('NUMBER',Cell,[loPartialKey,loCaseInsensitive]);
DBGrid1.SelectedRows.CurrentRowSelected:=True;
SetScrollInfo(DBGrid1.Handle, SB_HORZ, TempScrollInfo, True);
PopupMenu1.Popup(Mouse.CursorPos.X,Mouse.CursorPos.Y);
end;
end;