AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Hilfe zu den RecentItems der RibbonControls
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe zu den RecentItems der RibbonControls

Ein Thema von madtom · begonnen am 28. Nov 2014 · letzter Beitrag vom 3. Dez 2014
Antwort Antwort
madtom

Registriert seit: 24. Feb 2005
Ort: Hamburg
115 Beiträge
 
Delphi XE7 Professional
 
#1

Hilfe zu den RecentItems der RibbonControls

  Alt 28. Nov 2014, 12:35
Hallo,

Hat jemand Erfahrungen mit den RecentItems der TRibbonApplicationMenuBar?
Wie man Einträge hinzufügt, habe ich ja schon herausbekommen, z.B. mit

Ribbon1.AddRecentItem(FileName);

, nun möchte ich aber gerne die Liste bei Programmstart laden und bei Programmende speichern. Google war bis jetzt nicht hilfreich.

Danke im Voraus

Thomas
Thomas
Delphi Programming

Geändert von madtom (28. Nov 2014 um 12:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Hilfe zu den RecentItems der RibbonControls

  Alt 28. Nov 2014, 14:57
Ribbon1.RecentItems.Items[i] und Ribbon1.RecentItems.Count ?

Schon erstaunlich, was ein Strg+Linksklick alles hervorbringt. (notfalls geht auch ein Blick in Hilfe)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (28. Nov 2014 um 15:00 Uhr)
  Mit Zitat antworten Zitat
madtom

Registriert seit: 24. Feb 2005
Ort: Hamburg
115 Beiträge
 
Delphi XE7 Professional
 
#3

AW: Hilfe zu den RecentItems der RibbonControls

  Alt 28. Nov 2014, 22:19
Danke Dir. Bin inzwischen schon etwas weiter gekommen. Sobald ich mit der Lösung zufrieden bin, poste ich sie hier.

Gruß Thomas
Thomas
Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Daniela.S
Daniela.S

Registriert seit: 1. Mär 2008
Ort: Niederösterreich
226 Beiträge
 
Delphi XE4 Enterprise
 
#4

AW: Hilfe zu den RecentItems der RibbonControls

  Alt 29. Nov 2014, 10:16
Als RecentItem wird ein TOptionItem Objekt verwendet.
Du kannst als Caption entweder den Dateiname angeben bzw. einen alternativen Namen und den Dateinamen im Hint.


Laden zum Beispiel:
Delphi-Quellcode:
var
  i: Integer;
begin
  i := Ribbon.AddRecentItem( iFileName );
  if i >= 0 then with Ribbon.ApplicationMenu.Menu.RecentItems[i] do begin
    Hint := iFileName;
    // verwende ich gerne, weil dann der Dateiname angepasst dargestellt wird
    Caption := MinimizeName( iFileName, Self.Canvas, 250 ); // oder ExtractFileName(xxx)
    end;

Speichern über eine StringList:
Delphi-Quellcode:
    
var
  sl : TStringList;
begin
  sl := TStringList.Create;
  try
    for i := 0 to Ribbon.ApplicationMenu.Menu.RecentItems.Count - 1 do
      sl.Add( Ribbon.ApplicationMenu.Menu.RecentItems.Items[i].Hint );
    sl.SaveTofile(...);
  finally
    sl.Free;
    end;
  Mit Zitat antworten Zitat
madtom

Registriert seit: 24. Feb 2005
Ort: Hamburg
115 Beiträge
 
Delphi XE7 Professional
 
#5

AW: Hilfe zu den RecentItems der RibbonControls

  Alt 29. Nov 2014, 11:09
Danke Daniela,
soweit war ich inzwischen schon . Im Moment bin ich am knobeln, wie ich diesen dynamisch erzeugten Items das "OnRecentItemClick-Ereignis" verpasse .
Ist mein erstes Projekt mit den Ribbon-Controls, und als Hobby-Programmierer hat man's eh schwer .

Gruß Thomas
Thomas
Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Daniela.S
Daniela.S

Registriert seit: 1. Mär 2008
Ort: Niederösterreich
226 Beiträge
 
Delphi XE4 Enterprise
 
#6

AW: Hilfe zu den RecentItems der RibbonControls

  Alt 29. Nov 2014, 19:03
Über den Eventhändler der Ribbon Komponente sollte das eigentlich automatisch gehen...

Delphi-Quellcode:
Ribbon.AddRecentItem( FileName );
...
RibbonRecentItemClick(Sender: TObject; FileName: string; Index: Integer);
  Mit Zitat antworten Zitat
madtom

Registriert seit: 24. Feb 2005
Ort: Hamburg
115 Beiträge
 
Delphi XE7 Professional
 
#7

AW: Hilfe zu den RecentItems der RibbonControls

  Alt 3. Dez 2014, 17:23
So, ich bin jetzt mit meiner Lösung vorläufig zufrieden, aber vielleicht hagelt es ja Kritik oder Verbesserungsvorschläge .
Vielen Dank für die Denkanstöße.

Delphi-Quellcode:
const
  MaxRecentItems = 5; // maximale Anzahl der Recent Items in der Liste

procedure TFrmMain.FormCreate(Sender: TObject);
var
  IniFile: TMemIniFile;
  StringList: TStringList;
  i: Integer;
begin
  ...
  IniFile := TMemIniFile.Create('.\Settings.ini');
  try
    ...
    // RecentItems
    StringList := TStringList.Create;
    try
      IniFile.ReadSectionValues('RecentItems', StringList);
      for i := 0 to StringList.Count - 1 do
        Ribbon1.AddRecentItem(IniFile.ReadString('RecentItems', IntToStr(i), ''))
    finally
      StringList.Free;
    end;
  finally
    IniFile.UpdateFile;
    IniFile.Free;
  end;
end;

procedure TFrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
  IniFile: TMemIniFile;
  RecentItemsCount: Integer;
  i: Integer;
begin
  IniFile := TMemIniFile.Create('.\Settings.ini');
  try
    with IniFile do
    begin
      ...
      // RecentItems
      if RibbonApplicationMenuBar1.RecentItems.Count > MaxRecentItems then
        RecentItemsCount := MaxRecentItems
      else
        RecentItemsCount := RibbonApplicationMenuBar1.RecentItems.Count;
      IniFile.EraseSection('RecentItems');
      for i := 0 to RecentItemsCount - 1 do
        IniFile.WriteString('RecentItems', IntToStr(i),
          RibbonApplicationMenuBar1.RecentItems.Items[i].Caption);
    end;
  finally
    IniFile.UpdateFile;
    IniFile.Free;
  end;
end;
Thomas
Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz