[태그:] DBGrid
일반 DBGrid의 내용을 마우스로 누르지 않고 마우스 포인터위치로 Cell 이동하기 및 값 가져오기 입니다.
Published Date: 2008년 8월 10일
델마당에 팁으로 올린 내용인데. 제목 그대로 입니다. 일반 DBGrid의 내용을 마우스로 누르지 않고 마우스 포인터위치로 Cell 이동하기 및 값 가져오기 입니다.
Delphi/Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var DBGrid : TDBGrid; gc : TGridCoord; iStartX, iStartY : Integer; Function ColumnName( X, Y : Integer ) : String ; begin result := ''; gc := TStringGrid(DBGrid).MouseCoord(x,y); if dgIndiCator in DBGrid.Options Then iStartX := 0 else iStartX := -1; if dgTitles in DBGrid.Options Then iStartY := 0 else iStartY := -1; if ( gc.X > iStartX ) and ( gc.Y > iStartY ) then Result := DBGrid.Columns[ gc.X - (1 + iStartX ) ].DisplayName; end; procedure SetColumn2MousePos; var i : Integer; iMoveRecordY : Integer; begin DBGrid.SelectedIndex := gc.X - (1 + iStartX ); iMoveRecordY := gc.Y - TStringGrid( DBGrid ).Row; If iMoveRecordY > 0 Then for i := 1 to iMoveRecordY do DBGrid.DataSource.DataSet.Next else If iMoveRecordY < 0 Then for i := iMoveRecordY to -1 do DBGrid.DataSource.DataSet.Prior; end; begin DBGrid := TDBGrid( Sender ); If ColumnName( X, Y ) <> '' Then begin DBGrid.Cursor := CrHandPoint; SetColumn2MousePos; end else DBGrid.Cursor := crDefault; end; |
최신 댓글