Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как показать последние открытые файлы, типа Reopen в меню File в Делфи 
:(
    Опции темы
Rock
Дата 3.3.2005, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 13.1.2005
Где: Краснодар

Репутация: нет
Всего: 1



Вообщем вопрос весь в теме, как показать последние открытые файлы, если вдруг где-то они действительно сохраняються ) Ну а вообще-то где мне лучше хранить это список?
PM MAIL ICQ   Вверх
p0s0l
Дата 5.3.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Хранить можно к примеру, в реестре, или в Ini-файле...
Вот как это примерно может быть:
Код

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus, IniFiles, StdCtrls;

type
 TForm1 = class(TForm)
   MainMenu1: TMainMenu;
   OpenDialog1: TOpenDialog;
   File1: TMenuItem;
   Open1: TMenuItem;
   Reopen1: TMenuItem;
   procedure Open1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure ReopenClick(Sender: TObject);
 private
 public
   ini : TIniFile;
   FileList : TStringList;
   procedure MyOpenFile (const FileName : string);
   procedure UpdateMenu;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

const
 IniName      = 'cfg.ini';
 SectionName  = 'LastFiles';
 MaxFileCount = 5;           // Макс. кол-во файлов в списке

procedure TForm1.FormCreate(Sender: TObject);
var
 Names : TStringList;
 i : integer;

begin
 FileList := TStringList.Create;
 FileList.CaseSensitive := False;

 ini := TIniFile.Create(IniName);
 Names := TStringList.Create;
 ini.ReadSection(SectionName, Names);
 FileList.Clear;
 for i := 0 to Names.Count-1 do
   FileList.Add(ini.ReadString(SectionName, Names[i], ''));
 Names.Free;

 UpdateMenu;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 ini.Free;
 FileList.Free;
end;

procedure TForm1.Open1Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
   MyOpenFile (OpenDialog1.FileName);
end;

procedure TForm1.MyOpenFile (const FileName : string);
var
 i : integer;

begin
 i := FileList.IndexOf(FileName);
 if i >= 0 then FileList.Delete(i);
 FileList.Add(FileName);
 while (FileList.Count > MaxFileCount) do FileList.Delete(0);

 ini.EraseSection(SectionName);
 for i := 0 to FileList.Count-1 do
   ini.WriteString(SectionName, IntToStr(i),FileList[i]);

 ini.UpdateFile;
 UpdateMenu;
end;

procedure TForm1.UpdateMenu;
var
 mi : TMenuItem;
 i : integer;

begin
 Reopen1.Clear;
 for i := FileList.Count-1 downto 0 do
 begin
   mi := TMenuItem.Create(Reopen1);
   mi.Caption := StringReplace (FileList[i], '&', '&&', [rfReplaceAll]);
   mi.Hint := FileList[i];
   mi.OnClick := ReopenClick;
   Reopen1.Add(mi);
 end;
end;

procedure TForm1.ReopenClick(Sender: TObject);
begin
 MyOpenFile (TMenuItem(Sender).Hint);
end;

end.



Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Recent.zip


--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0413 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.