선택한 셀의 컬럼을 얻어오는것은 잘 됩니다.
그런데 문제는 스크롤을 했을 경우입니다.
// 현재 선택한 셀의 컬럼 인덱스를 돌려준다.
function TForm.GetSelectCol : Integer;
var
aPoint : TPoint;
i, iLeft : Integer;
begin
Result := -1;
// get position
aPoint := ListView1.ScreenToClient(Mouse.CursorPos);
iLeft := ListView1.Left;
for i:=0 to ListView1.Columns.Count-1 do
begin
iLeft := iLeft + ListView1.Columns[i].Width;
if aPoint.X <= iLeft then
begin
Result := i;
Break;
end;
end;
end;
예를 들면 스크롤이 했을경우 10번째 컬럼의 셀을 선택했는데 리턴되는 값은 8번째 셀이라고 나오는 것처럼요..
function TForm.GetSelectCol : Integer;
var
aPoint : TPoint;
i, iLeft : Integer;
begin
Result := -1;
// get position
aPoint := ListView1.ScreenToClient(Mouse.CursorPos);
// 여기 두줄을 추가했습니다.
if ListQuoteDDe.Selected.Position.x < 0 then
iLeft := iLeft + ListQuoteDDe.Selected.Position.x;
iLeft := ListView1.Left;
for i:=0 to ListView1.Columns.Count-1 do
begin
iLeft := iLeft + ListView1.Columns[i].Width;
if aPoint.X <= iLeft then
begin
Result := i;
Break;
end;
end;
end;