다름이 아니구 텍스트 파일을 한 라인씩 읽어 들여서 메뉴를 생성할라구 하는데 처음부터 막히네요... 텍스트파일 여는것 까지는 성공 했는데 한 라인씩 읽어 들여 메뉴 생성하는게 잘 않되네요
1칼럼에 a문자열이 있으면 큰메뉴
1칼럼에 b문자열이 있으면 서브메뉴
그런식으로 텍스트 파일을 읽어 스스로 메뉴을 만들고 싶어서요
아직 기초적인 수준이라,,,,,, 고수님들 한수만좀.......
재미 있을것 같아 만들어 보았습니다.
좀 거친듯한 느낌은 드는군요.
메모장의 메뉴를 참고하였습니다.
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);
좀 거친듯한 느낌은 드는군요.
메모장의 메뉴를 참고하였습니다.
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)