Q&A

  • . 도와주세요..스트링그리드에서 row 추가시 문제가 발생합니다.
아래의 코딩은 dbgrid 에서 특정 항목 선택시 옆의 스트링 그리드에 내용뿌려주는 내용입니다.

procedure TPj_value_Form.DBAdvSGrd_aptDblClick(Sender: TObject); --> 정상적으로 수행됩니다
  ADvSgrd_init.Cells[10,ADvSgrd_init.Rowcount] := 'APT 항목'; -> 스트링그리드에 찍고
  ADvSgrd_init.Rowcount := (ADvSgrd_init.RowCount)+1;  -> 한줄 추가시키고
선택된 내용을 정상적으로 스트링그리드에 뿌려줍니다. 문제는 다음의 코딩에 있습니다.

procedure TPj_value_Form.DBAdvStringGrid1DblClick(Sender: TObject); 를 실행할때 문제입니다.
스트링 그리드 로우하나타 추가되며 'man power항목'이라고 찍히고 다시 로우하타를 추가하여 더블클릭으로 선택된 내용을 뿌려줘야 하는데 'man power항목'이라는 타이틀만 로우가 추가되어 나타나고 실제 선택된내용은 로우가 추가되지도 않고  나타나지도 안습니다.

그상태에서 procedure TPj_value_Form.DBAdvStringGrid9DblClick(Sender: TObject); 를 실행시키면
이때 man power항목에서 선택된 내용이 스트링 그리드에 나타납니다.  

그리고 '서비스항목'은 로우가 추가된후  타이틀만 찍힌후 로우가 추가되지도, 내용도 나타나지 안습니다

왜그런지 정말 모르겠습니다.  제발 방법 왜그런지 알려주시면 고맙겠습니다.



procedure TPj_value_Form.DBAdvSGrd_aptDblClick(Sender: TObject);
var
i : integer;
begin

  ADvSgrd_init.Cells[10,ADvSgrd_init.Rowcount] := 'APT 항목';
  ADvSgrd_init.Rowcount := (ADvSgrd_init.RowCount)+1;
  with ADvSgrd_init do begin
   Cells[0,Rowcount] := Copy(Query_apt.FieldByName('apt_cd4').AsString, 1, 2);
   Cells[1,Rowcount] := Copy(Query_apt.FieldByName('apt_cd4').AsString, 1, 4);
   Cells[2,Rowcount] := Copy(Query_apt.FieldByName('apt_cd4').AsString, 1, 6);
   Cells[3,Rowcount] := Query_apt.FieldByName('apt_cd4').AsString;
   Cells[4,Rowcount] := Edit_pj.Text;
   Cells[5,Rowcount] := Edit_spj.Text;
   Cells[10,Rowcount] := Query_apt.FieldByName('apt_name').AsString;
   Cells[11,Rowcount] := Query_apt.FieldByName('apt_code').AsString;
   Cells[21,Rowcount] := Query_apt.FieldByName('apt_csrent_w').AsString;
   Cells[22,Rowcount] := Query_apt.FieldByName('apt_csrent_s').AsString;
   Cells[23,Rowcount] := Query_apt.FieldByName('apt_depo').AsString;
   Cells[24,Rowcount] := Query_apt.FieldByName('apt_depo_s').AsString;

   with Query_tmp do begin
     Close;
     SQL.Clear;
     SQL.ADD('sp_pjinit @option=:option, @seekcode=:seekcode');
     SQL.ADD('  ,@cd3=:cd3');
     ParamByName('option').AsString := 'S';
     ParamByName('seekcode').AsString := '2';
     ParamByName('cd3').AsString := '110506';
     Open;
     Query_tmp.First;
     for i := 0 to RecordCount  do
       begin
         ADvSgrd_init.Rowcount := (ADvSgrd_init.RowCount)+1;
         Cells[3,Rowcount] := FieldByName('cd4').AsString;
         Cells[11,Rowcount] := FieldByName('cd4_rmk').AsString;
         Next;
     end;
   end;
  AdvSGrd_RowClear(Self);

  end;
end;

procedure TPj_value_Form.AdvSGrd_RowClear(Sender: TObject);
var
i : integer;
begin
   for i := 0 to ADvSGrd_init.ColCount do
     begin
       ADvSGrd_init.Cells[i,ADvSGrd_init.Rowcount] := ' ';
   end;
end;


procedure TPj_value_Form.DBAdvStringGrid1DblClick(Sender: TObject);
begin
  ADvSgrd_init.Rowcount := (ADvSgrd_init.RowCount)+1;
  AdvSGrd_RowClear(Self);
  AdvSGrd_init.Cells[10,ADvSgrd_init.Rowcount] := 'ManPower 항목';
  ADvSgrd_init.Rowcount := (ADvSgrd_init.RowCount)+1;
  AdvSGrd_RowClear(Self);
  with ADvSgrd_init do begin
   Cells[10,Rowcount] := 'aaa';
   Cells[11,Rowcount] := 'aaa;
  end;
end;

procedure TPj_value_Form.DBAdvStringGrid9DblClick(Sender: TObject);
begin
  ADvSgrd_init.Rowcount := (ADvSgrd_init.RowCount)+1;
  AdvSGrd_init.Cells[10,ADvSgrd_init.Rowcount] := '서비스 물품 항목';
  ADvSgrd_init.Rowcount := (ADvSgrd_init.RowCount)+1;
  AdvSGrd_RowClear(Self);
  with ADvSgrd_init do begin
   Cells[10,Rowcount] := 'bbb';
   Cells[11,Rowcount] := 'bbb';
  end;
end;
4  COMMENTS
  • Profile
    민스맘 2005.04.26 01:59





    procedure TPj_value_Form.AdvSGrd_RowClear(Sender: TObject);
    var
    i : integer;
    begin
       for i := 0 to ADvSGrd_init.ColCount do
         begin
           ADvSGrd_init.Cells[i,ADvSGrd_init.Rowcount] := ' ';
       end;
    end;


    여기에서요 ADvSGrd_init.Cells[i,ADvSGrd_init.Rowcount - 1] := ' ';

    로 해야 하는거 아닌가요?


  • Profile
    조혜진 2005.04.26 02:42

    여기에서요 ADvSGrd_init.Cells[i,ADvSGrd_init.Rowcount - 1] := ' ';

    로 해야 하는거 아닌가요?   --->>>
    제일 큰 문제는 선택된 자료가 바로 스트링 그리드에 뿌려지지 않고 다음 항목을 눌렀을때 그전에 선택된 자료가
    스트링 그리드에 뿌려 진다는 겁니다. 위에 지적해 주신 부분은 전에 로우가 추가되면서 전에 자료를 그래돌 물고 들어오길래 그 줄을 클리어하기 위해 넣어놓은 프로시져입니다.
    다시 함 검토 후 조언 부탁드립니다. 아님 ..멜에 연락처를 남겨추시면 통화로 조언을 구하고 싶습니다.
    정말 급해서요


  • Profile
    민스맘 2005.04.26 19:46





    애구 죄송 소스를 보다 말았네요....

    중간중간에 Cells[ 10, RowCount] := 'aaa';

    이런식의 코딩을 RowCount-1로 해서 해보세요....

    실제로 RowCount 가 5 이면   Row는 0~4까지 존재한다는 겁니다....

    이걸 잘 생각해서 코딩을 하시면 쉬울 겁니다....

  • Profile
    조혜진 2005.04.27 06:03