Å gjøre en siste filene menu

Hvordan lage en enkel "nylig brukte filer" -menyen /list i application.A stund siden jeg måtte legge til en "Siste filer Meny" i et prosjekt jeg jobber med. Så jeg skrev et enkelt komponent som skal være (A) fleksibel. (B) gjenbrukes i andre prosjekter. THistory ble født:) Du kan laste THistory her. Gjør hva du vil med den, men jeg ville apprechiate om du kunne gi meg beskjed hvis du bruker den i programmet:) Målet med denne artikkelen er å lage en enkel "gjenåpne" -menyen (se bildet nedenfor). Først noen kode så jeg skal prøve å forklare hva den gjør //Oppdater "Gjenåpne" -listen ..
prosedyre
TfrmMain.History1Change (Sender: TObject);. Var
jeg: integer; begynne
med
Reopen1 ikke begynne
Clear; for
i: = 0 til
History1.Count-en
i begynne
Legg til (TMenuItem.Create (egen-)); med
Elementer [Count-1] ikke begynne
Caption: = "& ' + IntToStr (i) + '' + History1.Items [i]; Tag: = i; Onclick: = GenericReopenClick; slutten; enden,
Enabled: = Count > 0; //Legg linebreak
Legg til (TMenuItem.Create (egen-)); Elementer [Count-1] .Caption: = '-'; //Legg til "Slett logg"
Legg (TMenuItem.Create (egen-)); med
Elementer [Count-1] ikke begynne
Caption: = 'Clear History'; Tag: = 1; Onclick: = GenericReopenClick; slutten; end, end,
//Gjenåpne element klikket ...
prosedyre
TfrmMain.GenericReopenClick (Sender: TObject); begynne hvis
TMenuitem (Sender). tag > = 0 deretter
Openfile (History1.Items [TMenuitem (Sender) .Tag]) annet
History1.Clear; slutten;
//...
prosedyre
TfrmMain.OpenFile (Filename: string); begynne
//Din kode her ...
History1.AddItem (Filename); slutten;
Merk at dette ikke er koden for komponenten, må du laste ned og installere det for at dette skal fungere. History1Change er OnChange event for min THistory objekt, History1. Hver gang en vare er lagt til History komponent denne prosedyren blir kalt så vi vet listen har blitt endret. Så vi bare gjenskape undermenyen for "Reopen1" med poster + en "Clear history" item.GenericReopenClick, prosedyren vi satt på alle menuitems onclick er der du vil sette inn koden for å håndtere hendelsen der noen har klikket på et element i vår meny. Jeg trodde det var lettest å spare indeksen for hver historie element i de tilsvarende menuitems 'Tag eiendom som du kan se ovenfor. Indeksen for en historie element kan aldri være -1 så jeg brukte den til å fjerne history.THistory kan bare belastning /lagre det er liste fra /til INI-filer. Men å legge til støtte for andre formater som registret eller et egendefinert format bør ikke være en problemet.Hvis du finner noen feil eller gjøre noen forbedringer, vennligst gi meg beskjed så jeg kan oppdatere den.