Q&A

  • 동적메뉴생성소스좀 봐주세요
계속해서 에러가 나네요 데이터 파일의 내용은
1파일(&a)
2새로만들기(&b)
2저장(&c)
3일반저장(&d)
3암호저장(&e)
3엑셀저장(&f)
이런 식으로 만들었거든요


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:=SubItemsCount;
          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[SubItemsCount-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;
1  COMMENTS
  • Profile
    석주현 2004.10.28 08:19
    아무래두 다른분이 하신거에 자꾸 붙이다 보니 복잡해져서
    그냥 다시 짰습니다.. -_-;;
    근데 예외고 뭐고 그냥 짠거라 그대로 쓰시기 보단 좀 생각해 보시고
    쓰시는게 좋을 꺼 같습니다.. ^^
    암튼 소스 올립니다..
    그럼 문제 있음 질문해 주세요..
    ////////////////////////////////////////////////////////////////////

    procedure TForm1.Button1Click(Sender: TObject);
    var
      mainmenu:TMainMenu;
      MainItem, SubItem1, SubItem2  : TMenuItem;
      MenuItemsFile: TextFile;
      ItemsString:String;
      FirstChar:byte;
    begin
      assignFile(MenuItemsFile,'MenuItems.txt');
      {$i-}
      reset(MenuItemsFile);
      {$i+}
      if IOResult<>0 then begin
        messageDlg('메뉴아이템 파일에 이상이 있습니다.'#13#13'확인 바랍니다',mtError,[mbOK],0);
        exit
      end;

      MainMenu:=TmainMenu.Create(Form1);
      MainMenu.AutoHotkeys:=maManual;

      repeat
        readln(menuItemsFile,ItemsString);
        FirstChar:=strtointdef(copy(ItemsString,1,1),0);
        case FirstChar of
          1:
            begin
              MainItem := NewItem(copy(ItemsString,2,length(ItemsString)),0,false,true,nil,0,'');
              MainMenu.Items.Add(MainItem);
            end;
          2:
            begin
              SubItem1 := NewItem(copy(ItemsString,2,length(ItemsString)),0,false,true,nil,0,'');
              MainItem.Add(SubItem1);
            end;
          3:
            begin
              SubItem2 := NewItem(copy(ItemsString,2,length(ItemsString)),0,false,true,nil,0,'');
              SubItem1.Add(SubItem2);
            end;
        end;
      until eof(MenuItemsFile);

      closeFile(MenuItemsFile);
    end;
    • 앤디
    • 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를 써보세요. 데몬으로 떠있는 프로그램의 핸들을 파...