// über Schliefe alles einlesen for i := 0 to Count - 1 do CustomItemAdd(Regis.ReadString('RecentFiles',
'Item' + IntToStr(i) + IntToStr(Ident), '')); end;
procedure TRecentList.ItemsToMenu; var NewItem : TMenuItem;
I : integer; begin // Beim ersten mal "count" MenuItems erstellen if MainMenu.Items[Ident].Count = AddPos then
for i := 0 to Count - 1 do
begin NewItem := TMenuItem.Create(Parent);
NewItem.Caption := '';
NewItem.OnClick := ItemClick;
MainMenu.Items[Ident].Add(NewItem); end;
// Die Liste "Items" duchgehen und die MenuItems danach benennen for I := 0 to Items.Count - 1 do MainMenu.Items[Ident][i + AddPos].Caption := Items[i];
// Dei leeren Einträge unsichtbar machen die vollen sichtbar for I := 0 to Count - 1 do MainMenu.Items[Ident][i + AddPos].Visible := not (MainMenu.Items[Ident][i + AddPos].Caption = '');
if Items.Count = 0 then MainMenu.Items[Ident][AddPos - 1].Visible := False else MainMenu.Items[Ident][AddPos - 1].Visible := True; end;
procedure TRecentList.ItemClick(Sender : TObject); begin ClickProc((Sender as TMenuItem).Caption); end;
procedure TRecentlIst.CustomItemAdd(Value : string); var i : integer; begin // Prüfen if Length(Value) = 0 then
begin ItemsToMenu;
Exit; end; // Testen, ob "Value" schon vorkommt for i := 0 to Items.Count - 1 do
if (Items[i] = Value) then
begin Items.Delete(i);
Break; end; // Items.Delete(i);
// Eintrag anhängen Items.Insert(0, Value); // Wenn Liste voll, dann letztes rausschmeissen if Items.Count > Count then
begin //For i := 1 to Items.Count - 1 do Items[ i - 1 ] := Items[ i ]; Items.Delete(Items.Count - 1); end; // Anzeige aktuallisieren ItemsToMenu; end;
// FreeAndNil(TRecentList) bei OnClose nicht vergessen destructor TRecentList.Destroy; var i : integer; begin // DAten in der Registry speichern for i := 0 to Items.Count - 1 do Regis.WriteString('RecentFiles', 'Item' + IntToStr(I) + IntToStr(Ident), Items[i]);
// Speicherleichen ausradieren Regis.Free; end;
end.
{ Und so instanziert man die Klasse: }
// Createn
// 1. Parameter : Registry Schlüssel
// 2. Parameter : Anzal der Einträge in der RecentList
// 3. Parameter : Nummer des MenüItems unter das die RecentList kommen soll (meistens 0)
// 4. Parameter : Das Menu, in die die Recentlist eingefügt werden soll
// 5. Parameter : Das Formular, in dem sich das Menu befindet
// 6. Parameter : Die Procedure, die ausgeführt werden soll, wenn auf einen Eintrag
// in der Recentlist gecklickt wird.
// Die Procedure wird ausgeführt, wenn auf einen Eintrag in der
// RecentList gecklickt wird.
// "Value" ist der Dateiname procedure TForm1.Click(FilePath: string ); begin DateiOeffnen(FilePath); end;
// Einen Eintrag in die Rechenlist vorhehmen procedure TForm1.Button1Click(Sender: TObject); begin RecentList.CustomItemAdd(Edit1.Text); end;
// nicht vergessen, sonst werden die Änderungen nicht gespeichert procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin FreeAndNil(RecentList); end;