Q&A

  • StringGrid와 DBGrid의 사용법을 비교해서 설명해 주십시요.


안녕하세요.



제가 DBGrid는 많이 사용해 봤는데, StringGrid를 한 번도 사용해 보질 못했습니다.



StringGrid를 사용할려고 하는데, 막연해서, Query의 내용을 어떻게 StringGrid에 보이게 할 수 있는지요?



StringGrid를 사용하면 DataSource 컴포넌트를 사용할 필요가 없는지요?



1  COMMENTS
  • Profile
    이재식 1999.09.14 04:19
    네, StringGrid를 쓰면 DataSource는 사용할 필요가 없습니다.

    대신 StringGrid에 데이터를 뿌려주려면 결국 코딩을 해야 되죠.

    저는 StringGrid, DataControl, Formula를 써 보았는데요,

    각기 일장일단이 있습니다.

    참고사항으로 Formula가 제일 쉽고 편하더라구요.

    어디서부터 이 두개의 차이점을 말씀드려야 할지 모르겠군요.

    우선 StringGrid위주로 말씀을 드릴께요.

    StringGrid에 데이터를 뿌려주는 법 :

    StringGrid1.Cells[열, 행] := 데이터(반드시 문자열 타입이어야 함)

    StringGrid의 제약사항중 하나가 반드시 대입될 데이터를 문자열타입이어야

    한다는 것입니다.

    여기서, 열과 행은 0부터 시작해요. 즉, 첫열은 0, 첫행도 0으로 시작하죠.

    그런데, 이 그리드에는 RowCount가 있습니다.

    dynamic하게 변경할 수 있죠.

    ******* Query의 내용을 StringGrid에 보여주는 법 ******

    예를 들어 보이죠.

    query의 데이터개수는 3개, 필드개수역시 3개.

    이것을 StringGrid에 보여주고자 할때.

    StringGrid의 FixedCols와 FixedRows속성이 둘다 1이라고 가정합시다.

    그리면 colCount속성을 4라고 해야죠.

    scol := 1 ;

    srow := 1 ;



    StringGrid1.Rowcount := 2 ;



    with query1 do

    begin

    while not eof do

    begin

    StringGrid1.Cells[scol, srow] := FieldByName('q1').asString ;

    scol := scol + 1 ;

    StringGrid1.Cells[scol, srow] := FieldByName('q2').asString ;

    scol := scol + 1 ;

    StringGrid1.Cells[scol, srow] := FieldByName('q3').asString ;



    scol := 1 ;

    srow := srow + 1 ;

    StringGrid1.Rowcount := StringGrid1.Rowcount + 1 ;

    end ; // while end

    end ; // query end

    그러면 최종 RowCount는 4가 되는 거죠. 그러나 데이터개수는 3개죠.

    *****************************

    StringGrid에 대해서 자세히 알고 싶다면 이 책을 보세요.

    대림 출판사입니다. 'Delphi 4 시작 그리고 완성' 입니다.

    참고페이지는 1185 ~ 1192. 1104 ~ 1105(이페이지를 독파하면

    스트링그리드에대해서는 두렵지 않을 것입니다.그런다음 1185~1192를

    보세요. 이해가 잘 될 것입니다. 많은 고급기능이 있습니다.)

    도움이 되었으면 하네요. 그럼...