Q&A

  • DBGRID의 row,col을 구하고 싶은데 어떻게 해야 하나요?
DBGRID의 row,col을 구하고 싶은데 어떻게 해야 하나요? 고수님들의 답변을 부탁드립니다.

3  COMMENTS
  • Profile
    행이리 2000.12.29 02:56
    최영식 wrote:

    > DBGRID의 row,col을 구하고 싶은데 어떻게 해야 하나요? 고수님들의 답변을 부탁드립니다.



    어떤 연유로 row,col을 구하시고자 하는지 모르겠지만, Grid의 row,col을 구하려 하시는 것이라면 다음과 같이 하시면 됩니다.



    type

    TCraker = class(DBGrid);



    procedure TfrmMain.Grd1DrawColumnCell(Sender: TObject; const Rect: TRect;

    DataCol: Integer; Column: TColumn; State: TGridDrawState);

    var

    r, c: longInt;

    begin

    with TCracker( Sender ) do begin

    r := Row;

    c := Col;



    ...이러쿵 저러쿵

    end;

    end;



  • Profile
    뿌요 2000.12.27 21:09
    최영식 wrote:

    > DBGRID의 row,col을 구하고 싶은데 어떻게 해야 하나요? 고수님들의 답변을 부탁드립니다.



    //행

    DB에 따라 틀립니다

    1. 오라클인 경우는 rownum이라는 함수가 있어서 쉽게해결됩니다.

    ex) select rownum,field1,field2 form table명

    2. paradox의 경우는 RecNo라는 함수가 있습니다.

    그외 다른 db인 경우는 검색창에 rownum으로 찾아보시면 많은 도움이 될것같습니다.



    //열

    dbgrid의 OnDrawDataCell Event에



    if gdFocused in State then

    begin

    rowheight := Rect.Bottom - Rect.Top ;

    row := (Rect.top div rowHeight) - 1 ; <-- 여기서 구한 행은 약간의 오차가 있는

    것같아요..

    col := Field.Index ;

    Edit1.Text := inttostr(row) ;

    Edit2.text := inttostr(col) ;

    end ;



    그리고 해보진 않았지만 dbgrid의 field의 index를 이용하시면 될 것같은데..



  • Profile
    몰러 2000.12.26 22:13
    최영식 wrote:

    > DBGRID의 row,col을 구하고 싶은데 어떻게 해야 하나요? 고수님들의 답변을 부탁드립니다.

    dbgrid의 row, col은 의미가 없습니다. 무슨 말이냐 하면 레코드가 1000개 있더라도 dbgrid의 Row는 그리드에서 보여지는 행수가 전체 갯수가 됩니다.



    즉 100번째 레코드에서 110번째 레코드까지 보고 있다면 0번 Row 는 타이틀, 1번 Row는 100번째....12번 Row는 110번째 레코드가 됩니다. 이렇게 되는 이유는 그리드가 데이타전체를 메모리에 올리지 않고 필요한 부분만 올리기 때문입니다. 훨씬 효율적이죠