unit vubor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FileCtrl;
type
TFormvubor = class(TForm)
DriveComboBox1: TDriveComboBox;
DirectoryListBox1: TDirectoryListBox;
FileListBox1: TFileListBox;
FilterComboBox1: TFilterComboBox;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formvubor: TFormvubor;
implementation
uses Main;
{$R *.dfm}
procedure TFormvubor.Button1Click(Sender: TObject);
var
i: integer;
TempComponent: TListBox;
f: TextFile;
dir, s, s1: string;
begin
dir:= FileListBox1.Directory + '\NoteBook.ttxt'; // Получаем полный путь к файлу
if not FileExists(dir) then // Проверяем существование файла
begin
ShowMessage('Файл блокнота не найден!'); // Показ окна с сообщением
exit; // Выход из процедуры
end;
AssignFile(f, dir); // Связали файловую переменную с файлом
Reset(f); // Встали на начало файла
while not eof(f) do // Делаем пока не дойдём до конца файла
begin
Readln(f, s); // Считали строку из файла
s1:= copy(s, 1, 5); // Скопировали первые 5 символов из строки
if s1 = '[Page' then // Если это метка номера страницы делаем
begin
i:= StrToInt(copy(s, 6, 1)); // Получили номер страницы
With NoteBookF do // Делаем для основной формы
begin
TempComponent:= TListBox(FindComponent('ListBox' + IntToStr(i))); // Нашли нужный listbox
Readln(f, s); // Считали строку из файла
s1:= copy(s, 1, 5); // Скопировали первые 5 символов из строки
while s1 <> '[Page' do // Пока недойдём до следущей метки страницы делаем
begin
TempComponent.Items.Add(s); // Добавляем строку в listbox
Readln(f, s); // Считали строку из файла
s1:= copy(s, 1, 5); // Скопировали первые 5 символов из строки
end;
end;
end;
end;
CloseFile(f); // Закрыли файл
Close; // Закрыли форму
end;
procedure TFormvubor.Button2Click(Sender: TObject);
begin
NoteBookF.SaveAll; // Вызов процедуры сохранения в файл
Close; // Закрыли форму
Button2.Visible:= false; // Спрятали кнопку
end;
end.
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Tabs;
type
TNoteBookF = class(TForm)
Notebook1: TNotebook;
TabSet1: TTabSet;
ListBox1: TListBox;
ListBox2: TListBox;
ListBox3: TListBox;
ListBox4: TListBox;
ListBox5: TListBox;
ListBox6: TListBox;
ListBox7: TListBox;
ListBox8: TListBox;
Panel1: TPanel;
Label1: TLabel;
RecordEdt: TEdit;
AddBtn: TButton;
ChangeBtn: TButton;
DeleteBtn: TButton;
ClearBtn: TButton;
CloseBtn: TButton;
procedure FormCreate(Sender: TObject);
procedure AddBtnClick(Sender: TObject);
procedure TabSet1Click(Sender: TObject);
procedure CloseBtnClick(Sender: TObject);
procedure ChangeBtnClick(Sender: TObject);
procedure DeleteBtnClick(Sender: TObject);
procedure ClearBtnClick(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure RecordEdtKeyPress(Sender: TObject; var Key: Char);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
dir: string;
procedure SaveAll;
end;
var
NoteBookF: TNoteBookF;
modif: Boolean; {переменная хранящая изменение блокнота}
implementation
uses vubor;
{$R *.dfm}
procedure TNoteBookF.SaveAll;
var i, j: integer;
TempComponent: TListBox;
f: TextFile; // переменная для работы с текстовым файлом
begin
dir:= Formvubor.FileListBox1.Directory + '\NoteBook.ttxt'; // Получаем полный путь к файлу
AssignFile(f, dir); // Связали файловую переменную с файлом
Rewrite(f); // Открыли файл для перезаписи
for i:= 0 to 7 do // проходим все страницы блокнота
begin
NoteBook1.PageIndex:= i; // Активная страница блокнота
TempComponent:= TListBox(FindComponent('ListBox' + IntToStr(i + 1))); // Нашли компонент listbox
Writeln(f, '[Page' + IntToStr(i + 1) + ']'); // Записали метку номера страницы
for j:= 0 to TempComponent.Items.Count - 1 do
Writeln(f, TempComponent.Items.Strings[j]); // записали содержтмое listbox в файл
end;
CloseFile(f); // Закрыли файл
end;
procedure TNoteBookF.FormCreate(Sender: TObject);
begin
TabSet1.Tabs:= NoteBook1.Pages; {копируем содержимое свойства Pages
компонента NoteBook в свойство Tabs компонента TabSet}
TabSet1.TabIndex:= NoteBook1.PageIndex; {Независимо от того, какая
страница блокнота активна во время проектирования (свойство ActivePage) будет выбрана соответствующая этой странице закладка}
end;
procedure TNoteBookF.AddBtnClick(Sender: TObject);
var
TempComponent: TListBox; {введем вспомогательную переменную}
begin
TempComponent:= TListBox(FindComponent('ListBox' + IntToStr(Notebook1.PageIndex + 1)));
{TListBox(<компонент>) используется для преобразования к типу TListBox}
if RecordEdt.Text <> '' then
TempComponent.Items.Add(RecordEdt.Text);
RecordEdt.Text:= '';
modif:= true;
end;
procedure TNoteBookF.TabSet1Click(Sender: TObject);
begin
NoteBook1.PageIndex:= TabSet1.TabIndex;
{страница блокнота и страница набора закладок должны совпадать}
end;
procedure TNoteBookF.CloseBtnClick(Sender: TObject);
begin
Close; {Закрыли приложение}
end;
procedure TNoteBookF.ChangeBtnClick(Sender: TObject);
var
TempComponent: TListBox; {введем вспомогательную переменную}
begin
TempComponent:= TListBox(FindComponent('ListBox' + IntToStr(Notebook1.PageIndex + 1)));
{TListBox(<компонент>) используется для преобразования к типу TListBox}
if RecordEdt.Text <> '' then
TempComponent.Items.Strings[TempComponent.ItemIndex]:= RecordEdt.Text; // Записали данные в listbox
modif:= true; // идентифокатор модификации блокнота
end;
procedure TNoteBookF.DeleteBtnClick(Sender: TObject);
var
TempComponent: TListBox; {введем вспомогательную переменную}
i: integer;
begin
TempComponent:= TListBox(FindComponent('ListBox' + IntToStr(Notebook1.PageIndex + 1)));
{TListBox(<компонент>) используется для преобразования к типу TListBox}
i:= TempComponent.ItemIndex; // Сохранили номер выделнной строки
TempComponent.Items.Delete(i); // Удалили выделенную строку
TempComponent.ItemIndex:= i; // Выделили следующую запись
RecordEdt.Text:= TempComponent.Items.Strings[i]; // Записали выделенную запись в поле редактирования
modif:= true;
end;
procedure TNoteBookF.ClearBtnClick(Sender: TObject);
var
i: integer;
TempComponent: TListBox; {введем вспомогательную переменную}
begin
for i:= 1 to 8 do
begin {Очищаем все listbox}
TempComponent:= TListBox(FindComponent('ListBox' + IntToStr(i))); // Нашли активный listbox
TempComponent.Clear; // Очищаем весь listbox
end;
modif:= true;
end;
procedure TNoteBookF.ListBox1Click(Sender: TObject);
var
TempComponent: TListBox; {введем вспомогательную переменную}
begin
TempComponent:= TListBox(FindComponent('ListBox' + IntToStr(Notebook1.PageIndex + 1)));
{TListBox(<компонент>) используется для преобразования к типу TListBox}
RecordEdt.Text:= TempComponent.Items.Strings[TempComponent.ItemIndex]; // Записали выделенную запись в поле редактирования
end;
procedure TNoteBookF.RecordEdtKeyPress(Sender: TObject; var Key: Char);
begin
if key = #13 then
AddBtn.Click; // Если нажата клавиша ввод, добавляем запись в блокнот
end;
procedure TNoteBookF.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if modif then // Если делались изменения в блокноте выдаём диалог с вопросом о сохранениии
if MessageDlg('Сохранить изменения?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin // Ответили да
Formvubor.Button2.Visible:= true; // Сделали видемую кнопку "Сохранить"
Formvubor.ShowModal; // Показать форму выбора папки
end;
end;
procedure TNoteBookF.FormShow(Sender: TObject);
begin
Formvubor.ShowModal; // Перед показом основной форму, показываем форму выбора папки
end;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.