기본 TDbGrid 는 잘 쓰지 않아서 오랫만에 쓸려고 하니 한개도 생각 안남..
TDbGrid 에서 더블클릭 이벤트 는 셀 단위가 아니기 때문에 구현이 안되어 있나봄
보통 TDrawGrid 나 TStringGird 로 타입캐스팅 해서 col , row 프로프티 를 사용하거나 TCustomGrid 에 있는 MouseCoord를 이용해서 구하면 된다.
procedure TForm1.DBGrid1DblClick(Sender: TObject);
var
nCol: integer;
nRow: integer;
nGC: TGridCoord;
nPT: TPoint;
begin
//TStringGrid or TDrawGrid cast
nCol:= TStringGrid(Sender).Col;
nRow:= TStringGrid(Sender).Row;
//use MouseCoord.
GetCursorPos( nPT );
nPT:= (Sender as TDbGrid).ScreenToClient( nPT ); // 좌표계 변환.
nGC:= (Sender as TDbGrid).MouseCoord(nPT.X, nPT.Y);
nCol:= nGC.X; //그리드에서 타이틀 빼고 좌상단 부터 1,1 로 계산됨 취향에 맞춰서 사용하자
nRow:= nGC.Y;
end;
* row 번호는 화면상에 보이는 번호이며 실제 레코드의 번호 (recno) 와는 다르다.
* TDbGrid.SelectedField, TDbGrid.SelectedIndex 로 col 번호 및 필드, 컬럼을 확인할수 있다.
반응형
'삽질' 카테고리의 다른 글
delphi - cxGrid - row별 Column implement editior 설정. (0) | 2022.06.24 |
---|---|
git - 토큰 인증. (0) | 2022.04.14 |
Delphi - TClientDataset - Invalid Parameter (0) | 2021.02.19 |
firebird 예약어를 필드명으로 사용할때.. (0) | 2021.01.04 |
AnyDesk 원격연결 후 한영변환 (2) | 2019.07.12 |