AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Zuletzt geöffnete Dateien (im Datei-Menü) anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Zuletzt geöffnete Dateien (im Datei-Menü) anzeigen

Ein Thema von dopeline · begonnen am 13. Mai 2003 · letzter Beitrag vom 14. Mai 2003
Antwort Antwort
Seite 1 von 2  1 2      
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#1

Zuletzt geöffnete Dateien (im Datei-Menü) anzeigen

  Alt 13. Mai 2003, 08:57
Ich will, dass wenn man auf (MainMenu) "Datei" klickt, 3 oder 4 Dateien angezeigt werden, die zuletzt geöffnet wurden. wie stelle ich das an?

Grüße, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 13. Mai 2003, 09:14
Merk sie dir in einer Ini-Datei und beim Laden liest du sie aus und erstellst die Menüpunkte im Menü dynamisch. Beim Klick auf den Menüpunkt dient die Caption als Pfad zur Datei. Das wäre das einfachste.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#3
  Alt 13. Mai 2003, 09:19

ich habe keinen schimmer, wie ich das anstellen soll ...

kannst du mir vielleicht ein paar ansätze zeigen


Grüße, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#5
  Alt 13. Mai 2003, 14:30
wow!

aber er ist die ganze zeit am meckern:
(alles in. FormCreate)

[Fehler] Uhaupt.pas(212): Undefinierter Bezeichner: 'mruFile'
an der stelle: NewItem := TMenuItem.Create(mnuFile); und an der stalle:mnuFile.Insert(mnuFile.Count, NewItem); dort sagt er auch 2x, dass es sich in dieser zeile um "inkompatible Typen" handelt

und an folgender stelle sagt er, dass "Operator oder Semikolon fehlt", sowie 2x "inkompatible Typen" :mnuFile.Insert(mnuFile.Count, NewItem); Woran kann das liegen?

Gruß, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 13. Mai 2003, 14:35
mnuFile heißt mein "Datei"-Menü. Das nächste wäre mnuEdit für das "Bearbeiten"-Menü.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#7
  Alt 13. Mai 2003, 14:46
Zitat:
procedure TForm1.MyMenuItemClick(Sender: TObject);
heißt so dein MainMenu?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8
  Alt 13. Mai 2003, 14:52
Hä? Das ist die Ereignis-Prozedur für den Klick auf einen Menü-Eintrag. Warte ich hänge das ganze mal an.
Angehängte Dateien
Dateityp: zip mru-list.zip (2,3 KB, 15x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#9
  Alt 13. Mai 2003, 15:06
Ok, also die fehlermeldungen dezimieren sich

hier sagt er mir, er kenne den Bezeichner MyMenuItem nicht: (im FormCreate)NewItem.OnClick := MyMenuItem; // Menüeintag mit der Ereignissprozedur verbinden und oben in der privaten deklaration sagt er "Das private-Symbol 'MyMenuItemClick' wurde deklariert, aber nie verwendet"
obwohl ich die prozedur im quelltext mit drin habe. du hast doch dort gesagt "// OnClick-Ereignis für den Menüpunkt" , wo kommt denn das dann hin?

Gruß, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#10
  Alt 13. Mai 2003, 15:09
Also so wie ich das verstehe, weißt du ihm als onclick ereignis ein menü zu. Und das kann ja nicht gehen.

Man liest sich Stanlay
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:13 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