TDBGrid의 하위 항목이있어 여러 행을 선택할 수 있습니다.TDbGrid의 거터 (왼쪽 여백)에서 클릭을 감지합니까?
거터를 클릭하면이 모드가 켜지고 그리드의 셀을 클릭하면이 모드가 켜지고 싶습니다.
OnMouseDown 이벤트 처리기에서 클릭하는 위치를 감지 할 수 있습니까?
TDBGrid의 하위 항목이있어 여러 행을 선택할 수 있습니다.TDbGrid의 거터 (왼쪽 여백)에서 클릭을 감지합니까?
거터를 클릭하면이 모드가 켜지고 그리드의 셀을 클릭하면이 모드가 켜지고 싶습니다.
OnMouseDown 이벤트 처리기에서 클릭하는 위치를 감지 할 수 있습니까?
OnMouseDown
은 어렵습니다. 당신이 이벤트에 X
및 Y
매개 변수를 통해 좌표를 얻고, 그것에 TDBGrid
를 타입 캐스팅하여 행과 열을 변환 조상 TCustomGrid
의 수 그러나
var
Coord: TGridCoord;
begin
Coord := TCustomGrid(DBGrid1).MouseCoord(X, Y);
if Coord.X = 0 then
// We're in the "gutter"
end;
, 그것은 TDBGrid
에 대한 OnMouseDown
만 불을 보인다 머리글 행을 클릭합니다.
OnCellClick
은 가능한 대안처럼 보이지만 실제 셀 (거터와 머리글 행 제외)에서만 실행되므로 작동하지 않습니다. 어느 쪽을 원할 때도 발사되지 않으므로 OnColEnter
도 마찬가지입니다. 당신의 최선의 선택은 다중 선택하지 윈도우의 다른 모든 응용 프로그램처럼, 당신의 복수 선택을 마우스 왼쪽 버튼으로 표준 Ctrl 키 및 Shift 키를 수정을 사용하는 것처럼
는 것 같습니다.
'OnMouseDown'에서는 어렵습니다. 당신은 좌표를 얻을 수 있지만 그 좌표 아래의 열을 추적하고 그것이 올바른지 확인해야합니다. 그러나 'TDBGrid.OnCellClick'이 대신 작동해야합니다. 'OnColEner'도보실 수 있습니다. –
여기에서 테스트 : OnCellClick (이름에서 알 수 있듯이)은 셀 클릭에 대해서만 실행되므로 절반은 필요합니다. 다중 선택을 해제 할 수 있습니다. 그러나 나는 그들이 시궁창을 클릭하는지 탐지 할 방법이 필요하므로, 조사 할 수 있습니다. 난 그들이 단순히 0 열의 왼쪽 경계를 클릭하는지 알 필요가 있습니다. – Tom
OnCellClick이 작동하지 않습니다. 그것은 시궁창에 발사되지 않는다. OnMouseDown은 작동하지만 타이틀 행 (시궁랑 포함)에서만 실행되는 것처럼 보입니다. 클릭 한 실제 셀을 검색하려면 몇 가지 작업을 수행해야합니다. 윈도우즈의 다른 모든 응용 프로그램과 마찬가지로'Ctrl + Click'과'Shift + Click' - 다중 선택을위한 표준 키를 사용하는 편이 낫다고 생각합니다. :) –