기존에 AdvStringGrid를 사용해서 만든걸 cxGrid로 변환 작업 중에 있습니다.
(코드를 못 알아보면 가르쳐 달라던가 할것이지... 쩝... 망할 20년차 코볼 실장...ㅡ_ㅡ)
처음 접하다 보니 영 적응이 안되서 헤메다가 일단 처리는 다해놨는데
좀 찝찝한 부분이 하나 남아서 문의 드립니다.
cxGrid에서 팝업메뉴를 띄우면 GridDBTableView의 OnCellClick 이벤트를 태우고
그에 따라서 팝업메뉴의 아이템에 Caption을 변경해서 보여주도록 할려고 합니다.
헌데... OnContextPopup 이벤트 중에 마우스 위치에 따른 cxGrid의 Row 혹은 Record 값을 지정하는게
어떤건지 모르겠습니다.
TcxGridDBTableView.GetHitTest에 나오는 ViewInfo에 뭔가 있을 줄 알았는데 안보이고...;
cxGrid의 OnContextPopup 이벤트에서
마우스가 눌러진 위치의 RowIndex나 RecordIndex를 알 수 있는지요?
조언 좀 부탁 드립니다.
현재는 꽁수로 아래와 같이 해결해 놨습니다.
<!--CodeS-->
procedure TfrmTest.cxGrid1ContextPopup(Sender: TObject;
MousePos: TPoint; var Handled: Boolean);
begin
Handled := True;
end;
procedure TfrmTest.tvcxGrid1CellClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
var
PMousePos: TPoint;
begin
try
{ 이것 저것 께작 께작...}
GetCursorPos(PMousePos);
if GetAsyncKeyState( VK_RBUTTON ) = 1 then
pmMain.Popup(PMousePos.X, PMousePos.Y);
except
end;
end;
<!--CodeE-->
어짜피 그리드 조작시 DataSource에 연결된 DataSet이 갱신되므로..
이것을 직접 핸들링 하면 됩니다. ^^