Q&A

  • 입력값을 받아서 DBGrid1에서의 선택되도록 하고 싶은데 안되요
아래와 같이 출고량 입력값을 받아서, DBGrid1에서 입력값만큼 선택되도록 코딩했는데요…. 선택이 1개만 되네요…
코딩이 어디서 잘못됐는지 모르겠네요… ㅜㅜ
도와주세요.

procedure Tgoods_output_reg.select_buttonClick(Sender: TObject);

//입력된 출고량 만큼 DBGrid1에서 선택하기

var i, select_count : Integer;

begin
   select_count := StrToInt(Output_count_num.Text); //입력값

   DBGrid1.SelectedRows.Clear;
   DBGrid1.SelectedIndex := -1;

    begin

    for i := 0 to select_count -1  do
      begin
       DBGrid1.SelectedRows.CurrentRowSelected := True;
       Next;
      end;
       end;
      selected_count.Text := IntToStr(DBGrid1.SelectedRows.Count);

  end;
5  COMMENTS
  • Profile
    황준동 2005.07.15 23:29
    일단 옵션에 dgRowSelect and dgMultiSelect 이 둘다 포함하셨겠죠?

    이게 포함되어야 SelectedRows 가 제대로 동작되거든요.

    그리고 소스를 보니까 Next 부분에 데이터 셋 부분이 없네요.

    데이터 셋에 직접 물리시거나 DBGrid1.DataSource.DataSet.Next 가 되어야 하지 않을까 싶네요.

    그것만 체크 하시면 될꺼 같네요.

    아래와 같이 하기만 해도 4개 행이 선택되니까 아마 아래 하신것도 맞는 처리인것 같네요...

    그럼...

    procedure TForm1.Button1Click(Sender: TObject);
    begin
       DbGrid1.SelectedRows.Clear;
       DbGrid1.SelectedRows.CurrentRowSelected := True;
       table1.Next;
       DbGrid1.SelectedRows.CurrentRowSelected := True;
       table1.Next;
       DbGrid1.SelectedRows.CurrentRowSelected := True;
       table1.Next;
       DbGrid1.SelectedRows.CurrentRowSelected := True;
    end;



  • Profile
    nilriri™ 2005.07.14 08:10
    프로시져의 일부인가요? 이상한게...ㅡㅡ;

    procedure Tgoods_output_reg.select_buttonClick(Sender: TObject);

    //입력된 출고량 만큼 DBGrid1에서 선택하기

    var i, select_count : Integer;

    begin
       select_count := StrToInt(Output_count_num.Text); //입력값

       DBGrid1.SelectedRows.Clear;
       DBGrid1.SelectedIndex := -1;

        begin  <- 이건 뭘까요?  with 문이 있던 자린가??
        
        // 스타트 포인트가 애매한거 아닌가요?  디비 그리드라면.
       //  연결된 데이터 소스와 데이터셋의 first 메소드로 처음으로 이동해줘야 하는거 아닌가요?
        // 현재 위치부터 아래쪽으로 선택해 내려가는 거라면 맞겠네요..


        for i := 0 to select_count -1  do
          begin
           DBGrid1.SelectedRows.CurrentRowSelected := True;
          // DBGrid1.데이터소스.데이터셋.넥스트; 가 와야할거 같습니다..
           Next;  <- 여기 넥스트는 도대체 뭘 넥스트 하겠다는건지??
          // 그리고 자꾸 넥스트 할때 연결된 데이터셋이 eof인지 여부는요?
          end;
           end;
          selected_count.Text := IntToStr(DBGrid1.SelectedRows.Count);

      end;



    그럼..





  • Profile
    민스맘 2005.07.13 20:13




    그리드 옵션에 MultiSelect 가 True 로 설정되었는지 확인해보세요
  • Profile
    강동민 2005.07.13 20:53
    먼저 빠른 답변에 감사드립니다.

    Option의 Multiselect 는 이미 True가 되어 있습니다. 마우스로 하나씩 여러개를 선택할 수 있도록 하였고, 선택값이 몇개라면 마우스로 선택하면 되겠지만 몇백개면 일일이 선택하기가 어려워서 이 방법을 쓰려고 합니다.  그런데 잘 안되네요 ㅡㅜ


  • Profile
    민스맘 2005.07.13 22:34
    님이 코딩하신데로 테스트 하니까 잘 되는데요???????