Q&A

  • TREEVIEW 사용하기????
TREEVIEW에서

-서울특별시

--송파구

--강동구

-부산광역시

--북구

--남구



이런식으로 값을 넣고 싶습니다. 먼저 폼이 호출할 때는 델파이 툴에서 '서울특별시','부산광역시'등은 미리 값을 넣고 컴파일하기 때문에 아무 문제없이 값을 가지고 와서 집어넣을 수 있습니다.



그런데 다시 검색을 할때 TREEVIEW.FREE를 하고 먼저 '서울틀별시','부산광역시'등을 먼저 제가 만들고 나서 값을 검색하여 집어넣고자 합니다.

'서울특별시','부산광역시'같은 것을 어떻게 만들죠????



벌서 1주일을 소비하고 있습니다.

1  COMMENTS
  • Profile
    김광섭 2001.01.29 20:50
    정용광 wrote:

    > TREEVIEW에서

    > -서울특별시

    > --송파구

    > --강동구

    > -부산광역시

    > --북구

    > --남구

    >

    > 이런식으로 값을 넣고 싶습니다. 먼저 폼이 호출할 때는 델파이 툴에서 '서울특별시','부산광역시'등은 미리 값을 넣고 컴파일하기 때문에 아무 문제없이 값을 가지고 와서 집어넣을 수 있습니다.

    >

    > 그런데 다시 검색을 할때 TREEVIEW.FREE를 하고 먼저 '서울틀별시','부산광역시'등을 먼저 제가 만들고 나서 값을 검색하여 집어넣고자 합니다.

    > '서울특별시','부산광역시'같은 것을 어떻게 만들죠????

    >

    > 벌서 1주일을 소비하고 있습니다.



    제가 전에 DB 자료를 트리뷰 형식으로 나타내 볼려구 고생한 적이 있어서 남의일 같지만은 않네요 ^^;;

    소스가 허덥하고 주석이 없지만 제 나름대로 델파이 헬프와 사이트 뒤져가면서 간신히(억지로 껴 맞추듯이^^;) 만든 거예요.



    부모 노드에서 자식노드-자식노드-자식노드 까지 입니다.

    아직두 왜 일케 데는지를 모릅니다. --;



    그럼, 즐코~



    procedure TfrmTree.FormShow(Sender: TObject);

    var

    SysNode, SubNode, MinorNode, ProNode : TTreenode ;

    tmp_system_id, tmp_sub_system_id, tmp_minor_system_id : string;

    i,j,inc_count : integer;

    next_tree : boolean;

    begin

    next_tree := false;

    i := 0; j:=0;

    TV.Items.Clear;

    inc_count:=2;

    while not frmMenuInput.Qry.Eof do // while 1

    begin

    if next_tree then

    begin

    if (frmMenuInput.QrySub.RecordCount=0) then

    inc_count:=1;

    else

    j := j+frmMenuInput.QrySub.RecordCount

    + frmMenuInput.QryMinor.RecordCount

    + frmMenuInput.QryPro.RecordCount

    +inc_count;

    i := j;

    end;



    tmp_system_id := frmMenuInput.Qry.FieldByName('system_id').AsString;



    TV.Items.AddChild(SysNode,frmMenuInput.Qry.FieldByName('system_name').AsString);



    with frmMenuInput.QrySub do

    begin

    close;

    Sql.Clear;

    Sql.Add('Select system_id, sub_system_id, sub_system_name from tsubsystem ');

    Sql.Add('Where system_id = :system_id');

    Sql.Add('Order by system_id, sub_system_id');

    Prepare;

    ParamByName('system_id').asinteger := strtoint(tmp_system_id);

    open;

    end;



    // frmMenuInput.QrySub.First;

    while not frmMenuInput.QrySub.Eof do // while 2

    begin



    tmp_sub_system_id := frmMenuInput.QrySub.FieldByName('sub_system_id').AsString;

    subNode := TV.Items[0+j];

    TV.items.AddChild(subNode, frmMenuInput.QrySub.FieldByName('sub_system_name').AsString);



    with frmMenuInput.QryMinor do

    begin

    close;

    Sql.Clear;

    Sql.Add('Select system_id, sub_system_id, minor_system_id, minor_system_name from tminorsystem ');

    Sql.Add('Where system_id = :system_id and sub_system_id = :sub_system_id');

    Sql.Add('Order by system_id, sub_system_id, minor_system_id');

    Prepare;

    ParamByName('system_id').asinteger := strtoint(tmp_system_id);

    ParamByName('sub_system_id').asinteger := strtoint(tmp_sub_system_id);

    open;

    end;



    while not frmMenuInput.QryMinor.Eof do // while 2

    begin



    tmp_minor_system_id := frmMenuInput.QryMinor.FieldByName('minor_system_id').AsString;

    MinorNode := TV.items[i+1];

    TV.Items.AddChild(MinorNode, frmMenuInput.QryMinor.FieldByName('minor_system_name').AsString);



    with frmMenuInput.QryPro do

    begin

    close;

    Sql.Clear;

    Sql.Add('Select system_id, sub_system_id, minor_system_id, program_id, program_name from tprogram ');

    Sql.Add('Where system_id = :system_id and sub_system_id = :sub_system_id and minor_system_id = :minor_system_id');

    Sql.Add('Order by system_id, sub_system_id, minor_system_id, program_id');

    Prepare;

    ParamByName('system_id').asinteger := strtoint(tmp_system_id);

    ParamByName('sub_system_id').asinteger := strtoint(tmp_sub_system_id);

    ParamByName('minor_system_id').asinteger := strtoint(tmp_minor_system_id);

    open;

    end;



    while not frmMenuInput.QryPro.Eof do

    begin



    proNode := TV.items[i+2];

    TV.items.AddChild(proNode, frmMenuInput.QryPro.FieldByName('program_name').AsString);

    frmMenuInput.QryPro.Next;

    end;

    frmMenuInput.QryMinor.Next;

    end; // end of minor_system 3

    frmMenuInput.QrySub.Next;

    end; // end of sub_system 2

    inc(i);

    next_tree := true;

    frmMenuInput.Qry.Next;

    end; // end of system 1

    edit1.SetFocus;

    end;