Q&A

  • 동적메뉴생성에 대해서
100955에 대한 질문입니다. 답변이 나왔는데 그대로 긁어다가 컴파일 해보니
컴파일이 되지 않아서요 소스좀 누가 보내주시면 않될까요.... 초보라서 아직.... 도대체 메뉴가 생성되질 않아요 델파이 7 사용하는데 무엇이 문제인지
소스를 분석해보면 구조상 아무런 문제점이 없는데 이상하게컴파이리 되질
못하고 행여 컴파일 되면 메뉴가 생성이 않되고 누가좀 도와주세요...
플리즈
7  COMMENTS
  • Profile
    김진태 2004.10.27 06:57
    자꾸 이거 가지구 질문해서 .......
    워낙에 몰라서요 꼭 만들고 싶은것은 있구해서
    만약에 메인메뉴 -> 서브메뉴 -> 서브메뉴 그러니깐 3번째 메뉴를 어떻게
    생성을 해야 하나요.. 숫자만 바꾸면 될줄 알았는데 전혀 않되네요
    그리고 서브메뉴에서 클릭시 어떤 원하는 프로그램 실행 시킬려구 하면 어떻게 해야 하는지요... ㅋㅋ 지송 고수님들 부탁 드립니다. 만들고 싶은 것은 있는디 워낙에 실력이 딸려서요....

    어기에서 3번과 4번 서브메뉴를 만들려고 하면 어떻게 해야 하나요!!!!
    부탁드립니다.


    procedure TMenuForm.Button1Click(Sender: TObject);
    var
      mainmenu:TMainMenu;
      MainItems, SubItems :array of TMenuItem;
      MenuItemsFile: TextFile;
      ItemsString:String;
      FirstChar:byte;
      MainItemsCount,SubItemsCount:word;
    begin
      assignFile(MenuItemsFile,"MenuItems.txt");
      {$i-}
      reset(MenuItemsFile);
      {$i+}
      if IOResult<>0 then begin
        messageDlg("메뉴아이템 파일에 이상이 있습니다."#13#13"확인 바랍니다",mtError,[mbOK],0);
        exit
      end;
      MainItemsCount:=0;
      repeat
        readln(menuItemsFile,ItemsString);
        FirstChar:=strtointdef(copy(ItemsString,1,1),0);
        case FirstChar of
          1:
            begin
              SubItemsCount:=1;
              inc(MainItemsCount);
              setLength(MainItems,MainItemsCount);
              MainItems[MainItemsCount-1]:=TMenuItem.Create(self);
              MainItems[MainItemsCount-1].Name:=format("a%d",[MainItemsCount]);
              MainItems[MainItemsCount-1].Caption:=copy(ItemsString,2,length(ItemsString));
            end;
          2:
            begin
              setLength(SubItems,SubItemsCount);
              SubItems[SubItemsCount-1]:=TMenuItem.Create(self);
              SubItems[SubItemsCount-1].Name:=format(chr(MainItemsCount+66)+"%d",[SubItemsCount]);
              SubItems[SubItemsCount-1].Caption:=copy(ItemsString,2,length(ItemsString));
              MainItems[MainItemsCount-1].Add(SubItems[SubItemsCount-1]);
              inc(SubItemsCount);
            end;
        end;
      until eof(MenuItemsFile);

      closeFile(MenuItemsFile);

      MainMenu:=TmainMenu.Create(MenuForm);
      MainMenu.AutoHotkeys:=maManual;
      MainMenu.Items.Add(MainItems);
    end;

    메뉴정보파일
    1파일(&F)
    2새로만들기(&N)
    2열기(&O)
    2저장(&S)
    2다른이름으로 저장(&A)
    2-
    2페이지 설정(&U)
    2인쇄(&P)
    2-
    2끝내기(&X)
    1편집(&E)
    2실행취소(&U)
    2잘라내기(&T)
    2복사(&C)
    2붙여넣기(&P)
    2삭제(&L)
    2-
    2찾기(&F)
    2다음찾기(&N)
    2바꾸기(&R)
    2이동(&G)
    2-
    2모두선택(&A)
    2시간/날짜(&D)
    1서식(&O)
    2자동줄바꿈(&W)
    2글꼴(&F)
    1보기(&V)
    2상태표시줄(&S)
    1도움말(&H)
    2도움말 항목(&H)
    2-
    2메모장 정보(&A)
  • Profile
    석주현 2004.10.27 22:42
    SubItems1 :array of TMenuItem;


    처럼 배열을 더 만드시고

          3:
            begin
              setLength(SubItems1,SubItemsCount1);
              SubItems1[SubItemsCount1-1]:=TMenuItem.Create(self);
              SubItems1[SubItemsCount1-1].Name:=format(chr(SubItemsCount+66)+'%d',[SubItemsCount1]);
              SubItems1[SubItemsCount1-1].Caption:=copy(ItemsString,2,length(ItemsString));
              SubItems[SubItemsCount1-1].Add(SubItems1[SubItemsCount1-1]);
              inc(SubItemsCount1);
           end;

    case 문에  추가 하시면 아마도 될껍니다..
    조금만 구문을 보시면 아실텐데 ㅠ_ㅠ
    물론 데이터 파일에도 3 4 이런식으로 서브 메뉴를 만들어야 겠죠.. ^^

  • Profile
    김진태 2004.10.28 05:58
    하르는 데로 하고 SubItemsCount1-1도 추가하고
    메뉴파일에는 2다음에 3을 써서 해보앗는데 에러가 나네요
    부탁드리빈다.

  • Profile
    석주현 2004.10.28 06:11
    음 생각해 보니
    아마도
    2 :
    이 부분에
       SubItemsCount1 := 1;

    을 추가해야 할꺼 같네요.. ^^

    아마도 이게 빠져서 일 듯 ^^


  • Profile
    김진태 2004.10.28 06:16
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Menus;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.Button1Click(Sender: TObject);
    var
      mainmenu:TMainMenu;
      MainItems, SubItems, SubItems1  :array of TMenuItem;
      MenuItemsFile: TextFile;
      ItemsString:String;
      FirstChar:byte;
      MainItemsCount,SubItemsCount,SubItemsCount1:word;
    begin
      assignFile(MenuItemsFile,'MenuItems.txt');
      {$i-}
      reset(MenuItemsFile);
      {$i+}
      if IOResult<>0 then begin
        messageDlg('메뉴아이템 파일에 이상이 있습니다.'#13#13'확인 바랍니다',mtError,[mbOK],0);
        exit
      end;
      MainItemsCount:=0;
      repeat
        readln(menuItemsFile,ItemsString);
        FirstChar:=strtointdef(copy(ItemsString,1,1),0);
        case FirstChar of
          1:
            begin
              SubItemsCount:=1;
              inc(MainItemsCount);
              setLength(MainItems,MainItemsCount);
              MainItems[MainItemsCount-1]:=TMenuItem.Create(self);
              MainItems[MainItemsCount-1].Name:=format('a%d',[MainItemsCount]);
              MainItems[MainItemsCount-1].Caption:=copy(ItemsString,2,length(ItemsString));
            end;
          2:
            begin
              SubItemsCount1:=1;
              setLength(SubItems,SubItemsCount);
              SubItems[SubItemsCount-1]:=TMenuItem.Create(self);
              SubItems[SubItemsCount-1].Name:=format(chr(MainItemsCount+66)+'%d',[SubItemsCount]);
              SubItems[SubItemsCount-1].Caption:=copy(ItemsString,2,length(ItemsString));
              MainItems[MainItemsCount-1].Add(SubItems[SubItemsCount-1]);
              inc(SubItemsCount);
            end;

           3:
            begin
              setLength(SubItems1,SubItemsCount1);
              SubItems1[SubItemsCount1-1]:=TMenuItem.Create(self);
              SubItems1[SubItemsCount1-1].Name:=format(chr(SubItemsCount+66)+'%d',[SubItemsCount1]);
              SubItems1[SubItemsCount1-1].Caption:=copy(ItemsString,2,length(ItemsString));
              SubItems[SubItemsCount1-1].Add(SubItems1[SubItemsCount1-1]);
              inc(SubItemsCount1);
           end;



        end;
      until eof(MenuItemsFile);

      closeFile(MenuItemsFile);

      MainMenu:=TmainMenu.Create(Form1);
      MainMenu.AutoHotkeys:=maManual;
      MainMenu.Items.Add(MainItems);
    end;
  • Profile
    김진태 2004.10.27 06:27
    ㅋㅋㅋ
    님 넘 감사합니다.
    너무나도 큰 실수 했네요
    전 메뉴 컴포넌트를 그냥 넣어 버렸어요
    소스를 보니 이제 이해가 가네요....
    넘 감사합니ㅏㄷ.
  • Profile
    석주현 2004.10.27 06:15
    제가 델파이 5.0으로 작성해서 메일로 보냈습니다.

    메일 확인 하시고요..

    여기 첨부가 안돼는거 같네요..

    그럼 확인하시고 즐거운 프로그래밍 하시길 빕니다.. ^^
    • 앤디
    • 2004.10.29 00:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.10.30 03:54
      안녕하세요. 최용일입니다. 첨부파일에 있는 컴포넌트를 써보세요... ^^ 항상 즐코하세요...
    • 조희정
    • 2004.10.29 00:04
    • 1 COMMENTS
    • /
    • 0 LIKES
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.29 01:55
      Band에 BandType에 보면 그룹관련된거 있어요...그거 이용하면 됩니다
    • 석주현
      2004.10.28 22:06
      아래와 같이 처리 하시면 됩니다.. ^^ ============================================================ p...
    • 김상철
    • 2004.10.28 20:22
    • 0 COMMENTS
    • /
    • 0 LIKES
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.28 20:06
      그 화일 형식을 bmp로 바꾸니까 되네요
    • 아폴론
    • 2004.10.28 08:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2004.10.28 17:17
      델파이 설치된 디렉토리에 가서 Demos\Db\Ctrlgrid 에 보면 예제가 있습니다. 그거 보시면 아마도 이...
    • 최용일
      2004.10.28 20:06
      안녕하세요. 최용일입니다. KeyBd_Event란 API함수를 쓰세요... const     VK_...
    • 김진태
    • 2004.10.28 06:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2004.10.28 08:19
      아무래두 다른분이 하신거에 자꾸 붙이다 보니 복잡해져서 그냥 다시 짰습니다.. -_-;; 근데 예외고 뭐고...
    • Galaxy
    • 2004.10.28 04:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2004.10.28 06:49
      아래 부분만 바꾸면 되는건데 ^^ 해보세요.. 너무 많은 생각을 하신거 같네요.. 그럼 이만.. /////////...
    • Galaxy
      2004.10.28 18:43
      안녕하세요 수고많습니다. 진짜 생각을 많이 했네요 님의 말대로 간단히 해결되네요 분명이 될...
    • 류창현
    • 2004.10.28 00:40
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박원용
    • 2004.10.27 21:59
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박원용
      2004.11.04 23:21
      감사합니다.. 잘 작동합니다...
    • 박준철
      2004.10.28 01:23
      아랫분과 같은생각인데요 스트링 그리드에서는 따로 sort를 하려면 현재 내용 다 지우고 select 다시 해...
    • 석주현
      2004.10.27 22:18
      근데 지금 질문하신 건 음냐.. 쿼리에서 처리 하는거 아닌가요? 쿼리에서 Order By 로 지정을 해주셔야 ...
    • 임석민
    • 2004.10.27 20:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2004.10.27 21:57
      요전에도 말씀드렸지만 컴파일러는 특성상 다시 원래의 코드로 만들 수는 없습니다.. -_-;; Dede는 자료...
    • 오키
    • 2004.10.27 19:26
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2004.10.27 23:04
      음냐 요즘 이상하게 DBGrid 쪽 질문이 많이 들어 오네요.. 아래 소스를 보면 아시겠지만 그냥 MoveTo Lin...
    • 오키
      2004.10.28 01:46
      제가 설명을 제대로 못한거 같네요 주신 소스는 해당 Cell 아래라인에 색깔이 들어가는거 같아요 ...
    • 석주현
      2004.10.28 03:09
      아 그런거 같더니 그거 였군요.. 더 쉽죠.. 그게 음 아래 와 같이 해주세요.. 물론 뭐 값 비교하는건 알...
    • 최용일
      2004.10.27 21:59
      안녕하세요. 최용일입니다. 흠... 차이점을 자세히 알고 싶으시면 볼랜드 홈페이지나 책을 사서 보시는...
    • 임석민
    • 2004.10.27 13:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2004.10.27 17:21
      컴파일러로 컴파일한 프로그램의 실행파일만 가지고는 확장자 pas 파일을 만들 수 없습니다. DeDe 라...
    • 덜렁이
    • 2004.10.27 08:51
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 꿈의대화
      2004.10.27 18:17
      .
    • 덜렁이
      2004.10.30 06:02
      죄송한데염.. 좀 자세하게 설명 좀 해주시면 안되나염? 정말로 죄송합니다.
    • 김진태
    • 2004.10.27 05:42
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 김진태
      2004.10.27 06:57
      자꾸 이거 가지구 질문해서 ....... 워낙에 몰라서요 꼭 만들고 싶은것은 있구해서 만약에 메인메뉴 ->...
    • 석주현
      2004.10.27 22:42
      SubItems1 :array of TMenuItem; 처럼 배열을 더 만드시고       3...
    • 김진태
      2004.10.28 05:58
      하르는 데로 하고 SubItemsCount1-1도 추가하고 메뉴파일에는 2다음에 3을 써서 해보앗는데 에러가 나네요...
    • 석주현
      2004.10.28 06:11
      음 생각해 보니 아마도 2 : 이 부분에    SubItemsCount1 := 1; 을 추가해야 할꺼 ...
    • 김진태
      2004.10.28 06:16
      unit Unit1; interface uses   Windows, Messages, SysUtils, Classes, Graphics, Contro...
    • 김진태
      2004.10.27 06:27
      ㅋㅋㅋ 님 넘 감사합니다. 너무나도 큰 실수 했네요 전 메뉴 컴포넌트를 그냥 넣어 버렸어요 소스를 ...
    • 석주현
      2004.10.27 06:15
      제가 델파이 5.0으로 작성해서 메일로 보냈습니다. 메일 확인 하시고요.. 여기 첨부가 안돼는거 같네...
    • 박준영
    • 2004.10.27 03:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정찬희
      2004.10.27 11:54
      메인폼에서 Close하면 닫혀야 하는데...^^;; 암튼 Close를 Application.Terminate; 로 바꿔보세...
    • 최용일
      2004.10.27 21:56
      안녕하세요. 최용일입니다. IsWindowVisible란 API를 써보세요. 데몬으로 떠있는 프로그램의 핸들을 파...