2012-10-28 5 views
0

이 질문에 대한 대답은 3 년 전이지만 이전에 비해 절반에 불과했습니다. How To Read and Write Delphi 2010 RibbonApplicationMenuBar Recent Items To A File 하고 MRU 목록 만 성공적으로 다시로드하는 방법에 대한 정보는 없음을 저장하는 방법을 알아낼 수 있도록 허용 대답은 충분한 정보를 제공합니다 Delphi 2010 RibbonApplicationMenuBar 읽기 및 쓰기 방법 최근 항목/파일에서 Part2

원래의 질문

는 여기에있다.

이것은 내가 지금 가지고있는 것입니다.

SaveDocHistory()는 폼의 closing 이벤트에 의해 호출되며 예상 한대로 작동합니다.

procedure TfrmMain.SaveDocHistory; 
var 
    ini : TIniFile; 
    i : Integer; 
begin 
    Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')); 
    try 
    ini.EraseSection('DocHistory'); 
    ini.WriteString('DocHistory', 'FileCount', IntToStr(RibbonApplicationMenuBar1.RecentItems.Count)); 

    for i := 0 to Pred(RibbonApplicationMenuBar1.RecentItems.Count) do 
     ini.WriteString('DocHistory', 'File' + IntToStr(i), 
         RibbonApplicationMenuBar1.RecentItems.Items[i].Caption); 
    finally 
    ini.Free; 
    end; 
end; 

결과의 INI 파일 항목은 다음과 같이 :

[DocHistory] 
FileCount=3 
File0=F:\Projects\StevenTest\Test02.rtf 
File1=F:\Projects\StevenTest\Test1.rtf 
File2=F:\Projects\StevenTest\Test01.rtf 

문제는 RibbonApplicationMenuBar의 RecentItems 목록을 다시로드됩니다. 내 코드는 응용 프로그램의 최근에 사용 된 섹션에 항목이 나열되어 작동한다는 것을 '나타납니다'. 그러나 '실제'항목과 달리 click 이벤트에 응답하지 않습니다. mru 목록에 추가 된 모든 새 항목은 작동하지만 내 '임플란트'는 작동하지 않습니다. 따라서 캡션을 다시로드하지만 파일 정보는 다시로드하지 않는 것으로 보입니다. 여기 내 코드는 RibbonApplicationMenuBar를 보유하고있는 폼의 FormCreate 이벤트에 의해 호출되는 함수입니다. 나는 그들이 중 하나를 언급 델파이의 도움하지만 AddRecentItem() 함수 방법을 해독 시도했습니다

procedure TfrmMain.LoadDocHistory; 
var 
    ini : TIniFile; 
    nCount, i : Integer; 
    sTmp : string; 
begin 
    Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')); 
    try 
    nCount := ini.ReadInteger('DocHistory', 'FileCount', 0); 

    for i := 0 to Pred(nCount) do 
    begin 
     sTmp := ini.ReadString('DocHistory', 'File' + IntToStr(i), ''); 
     RibbonApplicationMenuBar1.RecentItems.Add.Caption := sTmp; 
    end; 

    finally 
    ini.Free; 
    end; 
end; 

는 RibbonApplicationMenuBar에 적용 할 수 없습니다 또는 내가 그것을 사용하려고 길을 잘못되었습니다. 웹을 검색했지만 이전에 언급 한 스레드에 대한 여러 참조가 있습니다. 이 문제의 후반부가 성공적으로 해결 된 사람이라면 그 정보를 고맙게 생각합니다.

BTW는 게시물의 제목처럼 Delphi2010을이 프로젝트에 사용하고 있습니다.

감사합니다 ..

+0

가능한 복제본 [Delphi 2010 RibbonApplicationMenuBar 최근 항목을 파일로 읽고 쓰는 법] (http://stackoverflow.com/questions/1402373/how-to-read-and-write-delphi-2010-ribbonapplicationmenubar- 최근 아이템 - 투 - 파일) –

+0

고의로 질문이 정확한지 물어보십시오. 대신 원본 질문에서 대답을 편집하거나 직접 질문을 제공하십시오. 원래 질문에 대한 새로운 대답으로 유용한 코드를 추가하는 것이 좋습니다. 그런 다음 삭제하십시오. –

+0

나는 이것을 입력 할 때 - 고의로 질문하지 않았습니다. 최초의 질문은 3 년 이상 유휴 상태 였고 그 중 1/2 만 응답되었으므로 완전한 대답을 얻기 위해 다시 질문 할 시간이었습니다. 나는 방금 이것을 게시 한 직후 해답을 찾았습니다. – TheSteven

답변

4

내가 솔루션으로 밝혀졌다 뭔가 생각 오타에 대한 내 게시물을 확인하는 동안. 여기에 대답이 ...

대신 데이터를 ribbon1 하위 구성 요소에로드해야했습니다. 이제 제대로 작동하는 것 같습니다.

procedure TfrmMain.LoadDocHistory; 
var 
    ini : TIniFile; 
    nCount, i : Integer; 
    sTmp : string; 
begin 
    Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')); 
    try 
    nCount := ini.ReadInteger('DocHistory', 'FileCount', 0); 

    for i := 0 to Pred(nCount) do 
    begin 
     sTmp := ini.ReadString('DocHistory', 'File' + IntToStr(i), ''); 
     Ribbon1.AddRecentItem(sTmp); //<<<<<<<<<< 
    end; 
    finally 
    ini.Free; 
    end; 
end; 

이제는 FileExists() 확인 및 기타 오류 처리가있을 수 있지만 지금 당장 필요한 것은이 작업을 얻는 것입니다.