Private
fRecentFiles: TStringList;
------------------------------------------------------*)
procedure TfrmTextToSpeech.OpenRecentFile(Sender: TObject);
var
sFileName: String;
i: Integer;
begin
sFileName := FRecentFiles[ TMenuItem( Sender).Tag];
i := FRecentFiles.IndexOf( sFileName);
FRecentFiles.Delete( i);
ReloadFileList( sFileName);
reText.Lines.LoadFromFile(sFileName);
frmTextToSpeech.Caption := ExtractFileName(SFilename) + ' - ' + 'Text2Speech';
end;
(*-----------------------------------------------------------------*)
procedure TfrmTextToSpeech.ReloadFileList(sFileName: String);
begin
FRecentFiles.Insert(0, sFileName);
if FRecentFiles.Count > 7 then
FRecentFiles.Delete( 7);
ClearList;
LoadRecentFileList;
end;
(*-----------------------------------------------------------------*)
procedure TfrmTextToSpeech.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SaveRecentFileList;
end;
(*-----------------------------------------------------------------*)
procedure TfrmTextToSpeech.FormCreate(Sender: TObject);
begin
FRecentFiles := TStringList.Create;
FRecentFiles.Duplicates := dupIgnore;
if FileExists( ExtractFilePath(Application.ExeName) + 'MyRecentFileList.txt') then
FRecentFiles.LoadFromFile( ExtractFilePath(Application.ExeName) + 'MyRecentFileList.txt');
LoadRecentFileList;
end;
(*-----------------------------------------------------------------*)
procedure TfrmTextToSpeech.LoadRecentFileList;
var
i: Integer;
RecentFileItem: TMenuItem;
LFileItem, ExMenuItem: TMenuItem;
begin
for i := 0 to FRecentFiles.Count - 1 do
begin
if Trim(FRecentFiles[i])<>'' then begin
RecentFileItem := TMenuItem.Create(self);
File1.add(RecentFileItem);
RecentFileItem.Caption := IntToStr(i)+' '+ExtractFileName(FRecentFiles[i]);
RecentFileItem.Tag := i;
RecentFileItem.Visible := true;
RecentFileItem.OnClick := OpenRecentFile;
RecentFileItem.Name := 'Recent' + IntToStr( i);
end;
end;
if TMenuItem(FindComponent('ExitMenuItem'))=nil then begin
LFileItem := TMenuItem.Create(self);
File1.Add(LFileItem);
LFileItem.Caption := '-';
LFileItem.Visible := True;
LFileItem.Name:='MenuLine1';
end;
if TMenuItem(FindComponent('ExitMenuItem'))=nil then begin
ExMenuItem := TMenuItem.Create(self);
File1.add(ExMenuItem);
ExMenuItem.Caption := 'Exit';
ExMenuItem.Visible := true;
ExMenuItem.Name:='ExitMenuItem';
ExMenuItem.OnClick := ExitFile;
end;
end;
(*-----------------------------------------------------------------*)
procedure TfrmTextToSpeech.ClearList;
var
i: Integer;
FMenuItem: TMenuItem;
begin
for i := 0 to FRecentFiles.Count - 1 do
begin
FMenuItem := TMenuItem( FindComponent( 'Recent' + IntToStr( i)));
FreeAndNil( FMenuItem);
end;
FMenuItem := TMenuItem( FindComponent('ExitMenuItem'));
FreeAndNil( FMenuItem);
FMenuItem := TMenuItem( FindComponent('RecFilesItem'));
FreeAndNil( FMenuItem);
FMenuItem := TMenuItem( FindComponent('MenuLine1'));
FreeAndNil( FMenuItem);
end;
(*-----------------------------------------------------------------*)
procedure TfrmTextToSpeech.ExitFile(Sender: TObject);
begin
Close;
end;
(*-----------------------------------------------------------------*)
procedure TfrmTextToSpeech.SaveRecentFileList;
begin
FRecentFiles.SaveToFile( ExtractFilePath(Application.ExeName) + 'MyRecentFileList.txt');
FreeAndNil( FRecentFiles);
end;
(*-----------------------------------------------------------------*)
ASKER
ASKER
procedure TfrmTextToSpeech.Open1Click(Sender: TObject);
var
sFileName: String;
i: Integer;
begin
if OpenDialog1.Execute then
begin
sFileName := OpenDialog1.FileName;
reText.Lines.LoadFromFile(OpenDialog1.FileName);
frmTextToSpeech.Caption := ExtractFileName(OpenDialog1.FileName) + ' - ' + 'Text2Speech';
updateRecent(sFileName);
end;
end;
procedure TfrmTextToSpeech.OpenRecentFile(Sender: TObject);
var
sFileName: String;
i: Integer;
begin
sFileName := FRecentFiles[ TMenuItem( Sender).Tag];
i := FRecentFiles.IndexOf( sFileName);
FRecentFiles.Delete( i);
ReloadFileList( sFileName);
reText.Lines.LoadFromFile(sFileName);
frmTextToSpeech.Caption := ExtractFileName(SFilename) + ' - ' + 'Text2Speech';
end;
procedure TfrmTextToSpeech.ReloadFileList(sFileName: String);
begin
FRecentFiles.Insert(0, sFileName);
if FRecentFiles.Count > 7 then
FRecentFiles.Delete( 7);
ClearList;
LoadRecentFileList;
end;
procedure TfrmTextToSpeech.SaveFileAsTextClick(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
Screen.Cursor := crHourGlass;
StatusBar1.SimpleText := 'Saving...';
reText.Lines.SaveToFile(SaveDialog1.FileName);
frmTextToSpeech.Caption := ExtractFileName(SaveDialog1.FileName) + ' - ' + 'Text2Speech';
StatusBar1.SimpleText := 'Ready';
Screen.Cursor := crDefault;
updateRecent(sFileName);// HERE
end;
end;
procedure TfrmTextToSpeech.updateRecent(sFileName: string);
var i:integer;
begin
i := FRecentFiles.IndexOf( sFileName);
if i >= 0 then
FRecentFiles.Delete( i);
ReloadFileList( sFileName);
end;
ASKER
ASKER
ASKER
Delphi is the most powerful Object Pascal IDE and component library for cross-platform Native App Development with flexible Cloud services and broad IoT connectivity. It provides powerful VCL controls for Windows 10 and enables FMX development for Windows, Mac and Mobile. Delphi is your choice for ultrafast Enterprise Strong Development™. Look for increased memory for large projects, extended multi-monitor support, improved Object Inspector and much more. Delphi is 5x faster for development and deployment across multiple desktop, mobile, cloud and database platforms including 32-bit and 64-bit Windows 10.
TRUSTED BY
Open in new window