AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Neuen Beitrag zur Code-Library hinzufügen Delphi MRU - Most recenty Used Files (Einfache Unit)
Thema durchsuchen
Ansicht
Themen-Optionen

MRU - Most recenty Used Files (Einfache Unit)

Ein Thema von Woodman · begonnen am 27. Nov 2009
Antwort Antwort
Benutzerbild von Woodman
Woodman

Registriert seit: 17. Mär 2007
74 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

MRU - Most recenty Used Files (Einfache Unit)

  Alt 27. Nov 2009, 17:33
Hallo Interessierte,

ich habe schon länger nach einer einfachen Realisierung für eine MRU-Liste in meinen Programmen gesucht.
Es gibt zwar diverse Komponenten, aber die kann ich in TurboDelphi nicht integrieren.
Also hab' ich mich - immer noch als Anfänger - selber an die Arbeit gemacht. Ich möchte Euch das Ergebnis nicht vorenthalten, vielleicht kann jemand etwas damit anfangen:

Die Unit mru (Most Recently Used) dient dazu, die zuletzt geöffneten Dateien im Menu des Hauptprogrammes zur Verfügung zu stellen.
Die Namen der 10 zuletzt geöffneten Dateien werden werden in einer INI-Datei (vorzugsweise in der zum Programm gehörenden) gespeichert. Beim Programmstart werden diese ausgelesen und in einem Menupunkt dargestellt.

In dieser Unit sind drei Routinen, die im Hauptprogramm aufgerufen werden:
Delphi-Quellcode:
procedure getMRU(menu: TMenuItem; onClick: TNotifyEvent; iniFile: String);
procedure SaveMRU(strFile: String; menu: TMenuItem; onClick: TNotifyEvent; iniFile: String);
function getMenu(menu: TMenuItem): String;
Erklärung siehe weiter unten.

Zur Vorgehensweise:
Im Hauptprogramm unter dem Menupunkt 'Datei' bzw. 'Files' ein Submenu Names 'Zuletzt geöffnete Dateien' und hierunter wiederum ein SUbmenu Namens 'MRU' anlegen. (Siehe Grafik)

Ein OnClick-Ereignis für Submenu 'MRU' erzeugen.
Unter dem Menupunkt 'Zuletzt geöffnete Dateien' dürfen sonst weiter keine Menupunkte angegeben werden, da diese zur Laufzeit gelöscht werden.

Im Hauptprogramm muss ein Name für eine INI-Datei festgelegt werden. Ich mache das normalerweise wie folgt: (Siehe auch Beispielprogramm)
Delphi-Quellcode:
unit tstmru;
{
  Testprogramm für die Unit 'mru'

}

interface

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

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    OpenDialog1: TOpenDialog;
    Datei1: TMenuItem;
    open1: TMenuItem;
    ZuletztgeffneteDateien1: TMenuItem;
    MRU: TMenuItem;
    Ende1: TMenuItem;
    procedure Ende1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure MRUClick(Sender: TObject);
    procedure open1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Ini: TIniFile;
  IniFile: String; // Programm-Ini-Datei
  ProgrammName, ProgrammDir: String;

implementation

{$R *.dfm}

procedure TForm1.Ende1Click(Sender: TObject);
begin
  Close;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ProgrammName := ParamStr(0);
  IniFile:= ChangeFileExt(ProgrammName,'.ini');
  ProgrammDir := ExtractFilePath(ProgrammName);
  ProgrammName := ChangeFileExt(ExtractFileName(ProgrammName),'');
  Caption := ProgrammName;
  // Das Menu wird aufbereitet
  getMRU(ZuletztgeffneteDateien1,MRUClick,IniFile); // <<<<<< Hier wird das Menu aufbereitet

end;

procedure TForm1.open1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin // <<<<<< Hier wird die ausgewähhlte Datei zugefügt
    SaveMRU(OpenDialog1.FileName,ZuletztgeffneteDateien1,MRUClick,IniFile);
    // OpenFile_und_Startprogramm(OpenDialog1.FileName);
  end;
end;


procedure TForm1.MRUClick(Sender: TObject);
var lastOpen: String;
begin
   lastOpen := getMenu(TMenuItem(Sender)); // Hier wird der ausgewälte Dateinamen
   ShowMessage('"'+lastOpen+'"'); // "abgeholt"
   SaveMRU(lastOpen,ZuletztgeffneteDateien1,MRUClick,IniFile); // und wird gleich wieder
    // OpenFile_und_Startprogramm(lastOpen); // an erster Stelle des
end; // Menus kopiert


end.
Das wars.

Wer es testen möchte: Ich habe das komplette Projekt angefügt.
Miniaturansicht angehängter Grafiken
mrutest-menu_137.png  
Angehängte Dateien
Dateityp: zip mrulist_749.zip (7,4 KB, 56x aufgerufen)
Keep
Horst
Delphi 10.1 Berlin Starter unter Windows 10 - 1803
  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 18:54 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