![]() |
MRU - Most recenty Used Files (Einfache Unit)
Liste der Anhänge anzeigen (Anzahl: 2)
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:
Erklärung siehe weiter unten.
procedure getMRU(menu: TMenuItem; onClick: TNotifyEvent; iniFile: String);
procedure SaveMRU(strFile: String; menu: TMenuItem; onClick: TNotifyEvent; iniFile: String); function getMenu(menu: TMenuItem): String; 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:
Das wars. :-D
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. Wer es testen möchte: Ich habe das komplette Projekt angefügt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz