unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, Inifiles;
type
TForm1 =
class(TForm)
MainMenu1: TMainMenu;
Datei: TMenuItem;
Hallo: TMenuItem;
Ballo: TMenuItem;
Button1: TButton;
Label1: TLabel;
N1: TMenuItem;
OpenDialog1: TOpenDialog;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure DynamikMenuItemClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
private
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
SL:TStringList;
Ini: TIniFile;
implementation
{$R *.dfm}
Procedure DoubleItems;
//Doppelte Items aus SL entfernen
var
i,j:Integer;
begin
i := 0;
while i <= SL.Count-1
do
begin
for j := i+1
to SL.Count-1
do
begin
if SL.Strings[i] = SL.Strings[j]
then
begin
dec(i);
SL.Delete(j);
break;
end;
end;
inc(i);
end;
end;
procedure TForm1.DynamikMenuItemClick(Sender: TObject);
begin
Caption:=TMenuItem(Sender).Caption;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
Ini: TIniFile;
SC,i,j:Integer;
NewItem : TMenuItem;
begin
Sl:=TstringList.Create;
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + '
Einstellung.ini');
SC:=Ini.ReadInteger('
Count','
SC',0);
for i:=0
to SC-1
do
SL.Add(Ini.ReadString('
MM','
MainMenu'+IntToStr(i),'
'));
//Gespeicherte Einträge laden
Memo1.Text:=SL.Text;
//Probe
for j := 0
to SL.Count-1
do //Entsprechende MainMenu Einträge erzeugen
begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption := SL[j];
Datei.Add(NewItem);
NewItem.OnClick:=DynamikMenuItemClick;
end;
end;
procedure TForm1.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
var
i:Integer;
begin
Ini := TIniFile.Create(ExtractFilePath(ParamStr(0)) + '
Einstellung.ini');
//Einträge speichern
for i:=0
to SL.Count-1
do begin
Ini.WriteString('
MM','
MainMenu'+IntToStr(i),SL.Strings[i]);
Ini.WriteInteger('
Count','
SC',SL.Count);
end;
Ini.Free;
Sl.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
NewItem: TMenuItem;
begin
if (OpenDialog1.Execute)
and (Datei.Count <13)
then //Auf 10 Einträge begrenzen (3 Feste)
begin
SL.Text:=Trim(SL.Text);
//leere Zeilen entfernen
SL.Add(OpenDialog1.FileName);
//Einträge hinzufügen
DoubleItems;
//Doppelte entfernen
NewItem := TMenuItem.Create(Self);
NewItem.Caption := Sl.Strings[SL.Count-1];
Datei.Add(NewItem);
NewItem.OnClick:=DynamikMenuItemClick;
//Menueinträge erzeugen
end
else //Falls mehr als 10 Einträge
begin
SL.Add(OpenDialog1.FileName);
DoubleItems;
//Doppelte entfernen
NewItem := TMenuItem.Create(Self);
NewItem.Caption := Sl.Strings[SL.Count-1];
Datei.Add(NewItem);
NewItem.OnClick:=DynamikMenuItemClick;
Datei.Delete(4);
//Ersten Eintrag im MainMenu löschen
SL.Delete(0);
//Ersten Eintrag im SL löschen
end;
Memo1.Text:=SL.Text;
//Probe
Caption:=Inttostr(Datei.Count);
//Probe
end;
end.