Q&A

  • 스트링그리드에서
스트링 그리드에서 첫번째 셀을 입력하는방식으로 할려고 합니다.
엔터를 치면 바로 밑으로 가게 했습니다.
그래서 두번째와 세번째를 첫번째의 스트링에 맞게 뿌려줄려고 합니다.
그 프로시져가 'select * from pr_bag_find'이것이고요
그런데 계속 첫번째만 나옵니다.
이거 해결할 방법 없을까요?

var
   col,row : integer;

   value : string;
begin
   col := TStringGrid(sender).Col;
   row := TStringGrid(sender).row;
   if col = 0 then
   begin

    if key = #13 then
    begin

    value := sg1.Cells[0,row];
    with frm_dm.q1 do
    begin
    close;
    sql.clear;
    sql.add('select * from pr_bag_find');
    sql.add('(:n01)');
    ParamByName('n01').asString := value;
    open;

    sg1.cells[1,row] := frm_dm.q1.Fields[1].AsString;
    sg1.cells[2,row] := frm_dm.q1.Fields[2].AsString;
    frm_dm.q1.next;
    end;

    if (row = sg1.RowCount-1) then
       sg1.RowCount := sg1.RowCount + 1;
    if (row <> sg1.RowCount-1) then
       TStringGrid(sender).row := TStringGrid(sender).row+1;
    end
    end;
  end;
2  COMMENTS
  • Profile
    데빠이 2002.06.22 19:53
    ==> 이부분에서 while 문이 필요합니다. while문이 없기때문에 첫번째만
         찍히겠죠?

    수정해보면..
       .  
       .
        close;
        sql.clear;
        sql.add('select * from pr_bag_find');
        sql.add('(:n01)');
        ParamByName('n01').asString := value;
        open;

       first;
       while not Eof do
       begin
         sg1.cells[1,row] := frm_dm.q1.Fields[1].AsString;
         sg1.cells[2,row] := frm_dm.q1.Fields[2].AsString;
         next;
         inc(sg1.RowCount);
       end;


    이러한 방법으로..
  • Profile
    미러 2002.06.24 21:53
    제가 잘 모르고 있는지 모르지만..
    전 셀의 첫번째에서 값을 읽어 들여서
    그값으로..
    두번째, 세번째 셀에 값을 뿌리는 방식으로 할려고 하는겁니다.
    님께서 알려주신방법은..저두 알고 있었지요
    display해주시라는 건데...그것이 아닙니다
    두번째셀과 세번째셀은..다른 테이블에서 읽어와서 뿌려주는거 였거든요
    그래서...첫번째..셀만..그 테이블입니다.
    그래서...
    첫번째 셀을 통해서...
    다른테이블의 데이타를 읽어들여서..
    두번째 세번째 셀에 뿌려주는겁니다.

    고수님들께서..답변좀 해주세요