Autor Beitrag
tschinkes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Do 24.02.05 16:54 
Hallo, neues Prob,
wie kann ich es realisieren, das die letzten vier geöffneten Dateien im Menü 'Datei' am Schluss der Liste angezeigt werden? Wie z.B. in Word. Gibt es da ein Tutorial oder sowas? Für ne Hilfe wäre ich echt dankbar!
TimonWorld
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 397



BeitragVerfasst: Do 24.02.05 18:03 
Hallo!

Dies probiere ich grade auch selber aus!

1. Erstelle in deinem Menü, da wo du die Einträge hinhaben willst, 4 neue Einträge. Bei name schreibst du am besten mnLastFile1, ...2, ...3 und ...4 hin!

2. Stelle diese 4 Menüeinträge bei visible alle auf false!

3. Jetzt brauchst du ein Ort, wo du die letzen Einträge speichern kannst! Du kannst die Registry (wovon ich keine Ahnung habe) oder eine simple ini-Datei.

4. Bei einer Ini-Datei musst du erstmal oben deines Programm-Code bei units die Unit IniFiles hinzufügen.

5. Für die 4 letzen Datein habe ich auch vier neue Global-Variablen hinzugefügt:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  File1: string = '';
  File2: string = '';
  File3: string = '';
  File4: string = '';


6. Bei einer Ini-Datei, die muss beim Beenden erstmal erstellt werden. Schreibe dazu bei OnClose erstmal dieses hier hin:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var Ini: TIniFile;
begin
  Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'settings.ini');
  // Statt settings.ini kannst du auch einen anderen Namen verwenden!

  with Ini do begin

    WriteString('History','File1',File1);
    WriteString('History','File2',File2);
    WriteString('History','File3',File3);
    WriteString('History','File4',File4);

    Free;
  end;
end;


7. Starte das Programm und beende es wieder, damit deine Ini-Datei erstellt wird.

8. Nun muss dein Programm wieder die Datei laden und die Werte auslesen. Diese Werte werden dann in die Variablen gespeichert. Hier der Code, den du nun bei OnShow reinschreiben kannst:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
var Ini: TIniFile;
begin
 // Einstellungen laden

    // Ini-Datei festlegen
    Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'settings.ini');

    // Werte auslesen und in die Variablen schreiben
    try with Ini do begin

      File1 := ReadString('History','File1',File1);
      File2 := ReadString('History','File2',File2);
      File3 := ReadString('History','File3',File3);
      File4 := ReadString('History','File4',File4);

      end
    finally
      Ini.Free;
    end;

  // Dateinamen in die 4 Menü-Einträge schreiben:

    // Aktiviert die Menüs wieder falls eine Datei-String vorhanden ist.
    if File1 <> '' then mnLastFile1.Visible := True;
    if File2 <> '' then mnLastFile2.Visible := True;
    if File3 <> '' then mnLastFile3.Visible := True;
    if File4 <> '' then mnLastFile4.Visible := True;

    // Schreibt den Menüeintragstitel in die 4 Menüelemente.
    mnLastFile1.Caption := '&1: ' + ExtractFileName(File1);
    mnLastFile2.Caption := '&2: ' + ExtractFileName(File2);
    mnLastFile3.Caption := '&3: ' + ExtractFileName(File3);
    mnLastFile4.Caption := '&4: ' + ExtractFileName(File4);
    
end;


9. Nun musst du zu deinen 4 Menüeinträgen kommen: Schreibe bei den onClick-Ereignissen jeweils rein:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var Dateiname : string;
begin
  Dateiname := File1; // oder File2, u.s.w.

  if fileexist(Dateiname) then begin
    
    // So hier dein eigener Code was du mit der angeklickten Datei machen willst.
 
    // Hilfreich wäre es wenn du, noch ein Überprüfung erstellst, ob das alte
    // Dokument gespeichert werden soll.
    
  end;
end;


So das wärs. Das ist jetz natürlich alles sehr simple alles aufgebaut und kann alles noch x-beliebig erweitert werden. PS: Schritt 9 noch nicht selber ausprobiert!

Gruß,
Timon
OneOfTen
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 24.02.05 18:09 
mit einem Array ist natürlich kürzer und schöner :wink:
tschinkes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Do 24.02.05 18:45 
Ich weis ihr werdet mich jetzt steinigen, aber hab da mal was anderes gefunden und wollte fragen ob ihr euch damit auskennt. Hab ja die JVCL installiert und da finde ich zwei interessante dinge:

    JvMRUManager
    JvFormPlacement


Ich weis damit kann man sowas auch realisieren, leider blicke ich da grad voll net durch. Wenn es jemand von euch kennt???

WERDE ABER AUF JEDEN FALL AUCH DEINE VERSION VERSUCHEN, TimonWorld!!!!!! (gleich mit arrays ;) )

Moderiert von user profile iconGausi: Doppelposting entfernt.
tschinkes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Do 24.02.05 21:44 
Hat keiner irgendwie ne Hilfe für mich wegen den JVCL's???? Wäre echt gut :idea:
TimonWorld
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 397



BeitragVerfasst: Do 24.02.05 21:47 
Dafür musst du neues Thema anfangen: NEW TOPIC! :mahn:


Gruß,
Timon
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 24.02.05 21:49 
:lol: rofl
willst du mod werden timon ? :twisted:
tschinkes Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 29



BeitragVerfasst: Do 24.02.05 21:51 
Fast gedacht, tschuldigung ! :roll:
TimonWorld
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 397



BeitragVerfasst: Fr 25.02.05 23:04 
retnyg hat folgendes geschrieben:
willst du mod werden timon ? :twisted:


lol! Ich wollte nur mal draufhinweisen, weil es mir so aufgefallen ist. Für Mod hätte ich garkeine Zeit!

Gruß,
Timon.