Q&A

  • 트리뷰로 메뉴구성하기 ^0^;;
안녕하신가요 고수님들^^

Treeview로 메뉴 구성을 하려 하는데
자문좀 구할까 해서요 ^^

기존에 제가 treeview로 구성한 메뉴는
actionlist에 액션을 만들고 그담에  아래와 같이 treeview 더블클릭시
해당 노드의 caption으로 action을 찾아 이벤트를 실행토록 했었습니다..^^

for i := 0 to  (mnu_list.ActionCount -1) do begin
       if Trim((mnu_list.Actions[i] as TForm).Caption) = Trim(treeview1.Selected.Text) Then begin
         (mnu_list.Actions[i] as TAction).Execute;
         LoginLog(Trim(treeview1.Selected.Text));
          Break;
       end;
      end;
이런식으로 사용 하니 신규 폼이 추가될때 마다 action들을 추가해야 하는군요 ㅠ,.ㅠ  
그래서 DB에 폼의 caption이나 폼명을 입력해놓구
트리뷰 클릭시 폼을 create하는 방법을 생각하고 있는데..
문제는 폼의 caption으로 해당 Tform을 열수 있는 방법입니다.
아무리 생각해도 caption으로 Tform을 가지고 오는 방법이 떠오르지가 않네요 ㅠ,.ㅠ 아시는 고수분들은 지나치지 마시고 굴비 부탁드리겠습니다 ^^
그럼 좋은 하루 보내십시요~^^

4  COMMENTS
  • Profile
    백 진욱 2004.07.13 20:44


    아래함수를 사용하세요 ^^!

    //===================================================================
    function Create_Form(sClass : string):Boolean;
    var MyFormClass : TFormClass;
        MyForm : TForm;
        i :integer;
    begin
      Result := True;
      for i := 0 to (Screen.FormCount - 1 ) do
      begin
        if Screen.Forms[i].Name = Copy(sClass,2,length(sClass)-1) then
        begin
           Screen.Forms[i].show;
           Exit;
        end;
      end;

      MyFormClass := TFormClass(GetClass(sClass)); //클래스를 찾아온다
      if MyFormClass <> nil then
      begin
        Application.CreateForm(TFormClass(FindClass(sClass)), MyForm);
        for i := 0 to (Screen.FormCount - 1 ) do
        begin
          if Screen.Forms[i].Name = Copy(sClass,2,length(sClass)-1) then
          begin
             Screen.Forms[i].show;
             Exit;
          end;
        end;
      end
      else
        Result := False;
    end;

    = 사용방법 ===========================================================
    sStr := 'T' + 폼명
    Create_Form(sStr);




  • Profile
    사발우성 2004.07.13 23:25
    일단 답변 감솨 감솨 ^0^
    그런데 auto create시에만 적용되는거 같네요 ^^
    동적으로 폼생성시엔 화면이 나오지 않네요 ^^;;
    암튼 존답변 감사합니다.

    즐건운 하루 보내셔유~^^
  • Profile
    백 진욱 2004.07.14 00:24
    이론 하나를 빠뜨렸네요 ^^;

    호출할
    폼의 제일마지막  

    end.

    앞에
    다음코딩을 추가하세요

    initialization
    RegisterClass(T폼명);      

    동적으로 생성할 폼은 전부다 추가 해줘야 합니다.
    폼명은 반드시 T+폼명 으로 해주세요
    그럼 이만~~~

  • Profile
    사발우성 2004.07.14 00:43
    감솨 감솨 ㅋㅋㅋ