Registriert seit: 29. Mai 2002
37.621 Beiträge
Delphi 2006 Professional
|
13. Mai 2003, 10:15
Here we go:
Delphi-Quellcode:
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
mnuFile: TMenuItem;
Dateiffnen1: TMenuItem;
OpenDialog1: TOpenDialog;
procedure Dateiffnen1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
procedure MyMenuItemClick(Sender: TObject); // OnClick-Ereignis für den Menüpunkt
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses
IniFiles;
procedure TForm1.Dateiffnen1Click(Sender: TObject);
var
ini : TInifile;
slKeyNumbers : TStringList;
KeyNumber : Integer;
begin
if OpenDialog1.Execute then
begin
ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\mru.ini');
try
slKeyNumbers := TStringList.Create;
try
ini.ReadSectionValues('MRU', slKeyNumbers);
KeyNumber := slKeyNumbers.Count;
{ mein schneller Versuch die Anzahl zu begrenzen }
// if slKeyNumbers.Count = 5 then
// begin
// ini.DeleteKey('MRU', '0');
// ini.WriteString('MRU', '0', OpenDialog1.FileName);
// end
// else
ini.WriteString('MRU', IntToStr(KeyNumber), OpenDialog1.FileName); // Dateiname in Ini eintragen, der Key ist eine Ziffer
finally
slKeyNumbers.Free; // Stringliste freigeben
end;
finally
ini.Free; // Ini-Objekt freigeben
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
ini : TIniFile;
slKeyNumbers : TStringList;
i : Integer;
NewItem : TMenuItem;
begin
ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\mru.ini');
try
slKeyNumbers := TStringList.Create;
try
ini.ReadSectionValues('MRU', slKeyNumbers); // Sektionswerte holen
if slKeyNumbers.Count > 0 then // wenn welche da sind Trennlinie erzeugen
begin
NewItem := TMenuItem.Create(mnuFile);
try
NewItem.Caption := '-';
mnuFile.Insert(mnuFile.Count, NewItem);
for i := 0 to slKeyNumbers.Count-1 do // in einer Schleife alle Dateien hinzufügen (nur die Dateinamen)
begin
NewItem := TMenuItem.Create(mnuFile);
NewItem.Caption := '&'+IntToStr(i)+' '+ExtractFilename(ini.ReadString('MRU', IntToStr(i), ''));
if NewItem.Caption = '' then
continue;
NewItem.Tag := i; // Menüeintrag eindeutig markieren mit der Tag-Eigenschaft
NewItem.OnClick := MyMenuItemClick; // Menüeintag mit der Ereignissprozedur verbinden
mnuFile.Insert(mnuFile.Count, NewItem);
end;
finally
NewItem.Free;
end;
end;
finally
slKeyNumbers.Free;
end;
finally
ini.Free;
end;
end;
procedure TForm1.MyMenuItemClick(Sender: TObject);
var
ini : TiniFile;
s : String;
begin
ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'\mru.ini');
try
s := ini.ReadString('MRU', IntToStr((Sender as TMenuItem).Tag), ''); // Schlüsselwert an Hand des Tags indentifizieren
ShowMessage(s); // Und ausgeben
finally
ini.Free;
end;
end;
Was jetzt noch fehlt ist die Begrenzung auf eine bestimmte Anzahl von Dateien. Aber etwas sollst du ja auch machen.
Michael Ein Teil meines Codes würde euch verunsichern.
|
|
Zitat
|