Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 13. Mai 2003, 09: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.
  Mit Zitat antworten Zitat