ref-21383 (663662), страница 2
Текст из файла (страница 2)
Рис.1.4
Номер кнопки в MainMenu
Когда все ссылки поставили можно выставить картинки на каждую кнопку, просто выбираем свойство TollBar’a – Image и выбираем ImageList1. Все картинки выставятся сами. Теперь можно разделить кнопки на группы, например:
-
«Новый», «Открыть», «Сохранить»
-
«Копировать», «Вставить», «Вырезать»
-
«Поиск»
-
«Шрифт»
-
«Дата и время»
-
«Media Player», «CD-Rom», «Знакомые», «Напомнить о…»
Так как кнопки расположены по порядку, то просто «перетащим» Separator на конец каждой группы кроме последней.
Перейдём к созданию часов.
Берём с закладки Win32, палитры компонентов, компонент CoolBar и перетащим его на форму. CoolBar автоматически поднимется к ToolBar’ у. Перенесём с закладки Standard компонент Label на CoolBar и разместим её ближе к концу CoolBar’a.
На этом создание интерфейса главной формы закончено можно скомпилировать и запустить проект, клавишей F9, должно быть похоже на рис.1.5.
Рис. 1.5
Скомпилированный и запущенный
проект «Записная книжка»
- 8 -
Описание процедур и функций компонентов главной формы
Заполнения компонента MainMenu1.
Меню «Файл»
-
“Новый”
Так как при создании нового файла будет открываться окно для сохранения нового файла на жесткий диск, то нам нужен компонент SaveDialog с закладки Dialogs. Заходим с главной формы Файл|Новый откроется Окно Редактора Кода и в него вставляем следующий код с комментариями, после слова Begin:
if savedialog1.Execute then begin // Запустить окно сохранения файла
memo1.Lines.SaveToFile(savedialog1.FileName+'.not'); // Сохранить предыдущий текст с
//именем которое ввели в окне сохранения файла
memo1.Clear(); //Очистить компонент Memo от предыдущего текста
end;
s:=savedialog1.FileName+'.not'; // занести в переменную S имя файла (для открытия файла, когда программу вновь запустят и для сохранения в когда программа работает).
Настроим фильтр файлов (типы файлов в которые можно сохранять файлы), для это в SaveDialog1 настроим свойство Filter: Filter Name: ‘Файлы программы’; Filter: ‘*.not’.
-
“Открыть”
Для открытия файлов в Delphi есть компонент OpenDialog. Перетащим этот компонент с закладки Dialogs на форму и сразу пропишем его свойство Filter так как и в SaveDialog. Заходим Файл|Открыть и вставляем этот код, после слова Begin:
if opendialog1.Execute then // Открыть окно открытия файла
memo1.Lines.LoadFromFile(Opendialog1.FileName); // Загрузить в Memo1 файл
S:=OpenDialog1.FileName; // занести в переменную S - имя файла, для открытия когда
//программу вновь запустят и для сохранения изменений в процессе выполнения
//программы
-
“Сохранить”
Вставить этот код в свойство OnClick кнопки:
memo1.Lines.SaveToFile(s); // сохранить содержания компонента Memo1 в файл с
//именем которого хранится в переменной S
-
“Экспорт данных…”
Для этого нужен ещё один компонент SaveDialog и так как файл будет сохраняться в «Текстовый документ», то в свойстве Filter, компонента SaveDialog2, нужно ввести: Filter Name: ‘Текстовый документ’, а Filter: ‘*.txt’. Теперь вставить следующий код в кнопку:
if SaveDialog2.Execute then // запустить окно сохранения файла
- 9 -
memo1.Lines.SaveToFile(Savedialog2.FileName+'.txt');//сохранить файл с расширением
// txt
-
“Выход”
Для закрытия программы в Delphi есть один оператор CLOSE. Вставим этот оператор в кнопку.
Настройка меню «Файл» - закончена.
Меню «Правка»
-
“Найти”
Для поиска нужного текста в Delphi есть компонент FindDialog. Перенесём этот компонент с закладки Dialogs.
Вставляем следующий код в OnClick кнопки:
Spos:=memo1.SelStart; //Запоминание позиции курсора
with finddialog1 do begin
{Начальное значение поиска текста, выделенный в Мемо}
findtext:=memo1.SelText;
// позиционирование окна диалога внизу Memo
position:=point(mainform.Left,mainform.Top+memo1.Top+memo1.Height) ;
// удолнеия из диалога кнопок “Вверх”, “Вниз”, “Только слово цылеком”
options:=options + [frhideupdown,frhidewholeword] ;
execute; //запуск диалога
end;
end;
Теперь в OnFind компонента FindDialog1 вставляем следующий код:
with finddialog1 do begin
if frmatchcase in options
//поиск с учётом регистра
then Memo1.SelStart:=pos(findtext,copy(memo1.Lines.Text,spos+1,Length(memo1.Lines.text)))+spos-1
else
//поиск без учета регистра
Memo1.SelStart:=pos(ansilowercase(findtext),ansilowercase(copy(memo1.Lines.Text,spos+1,Length(memo1.Lines.text))))+spos-1;
if memo1.SelStart>=spos
then begin
//выделение найденного текста
memo1.SelLength:=Length(findtext);
//изменение начальной позиции поиска
spos:=memo1.SelStart + memo1.SelLength+1;
end
else
- 10 -
if messagedlg('Текст"'+findtext+'"ненайден',mtconfirmation,[mbok],0) <>mrok
then
closedialog;
memo1.SetFocus;
end;
Теперь нужно объявить переменную Spos, вверху окна редактора кода нужно найти оператор VAR, перед всеми процедурами и функциями и написать после него Spos:integer;
Переменная Spos сохраняет позицию, начиная с которой надо проводить поиск.
-
“Отменить”
Для отмены последнего изменения текста, компонент Memo имеет процедуру Undo.
Этот код нужно вставить в кнопку:
Memo1.Undo; //отменить последние действие
-
“Копировать”
Для копирования, в буфер обмена, выделенного текста в компоненте Memo есть процедура CopyToClipboard. Эту процедуру надо вставить в кнопку:
Memo1.CopyToClipboard; // скопировать текст в буфер обмена
-
“Вырезать”
Для вырезания выделенного текста, в буфер обмена, в компоненте Memo есть процедура CutToClipboard. Эту процедуру надо вставить в кнопку:
Memo1.CutToClipboard; // вырезание текста в буфер обмена
-
“Вставить”
Для вставки текста который лежит в буфере обмена в компоненте Memo есть процедура PasteFromClipboard. Эту процедуру надо вставить в кнопку:
Memo1.PasteFromClipboard; // вставить текст из буфера обмена
-
“Очистить”
Для того чтобы очистить окно Memo от текста, этот компонент имеет процедуру Clear.
Эту процедуру вставляем в кнопку:
Memo1.Clear; // очистить Memo от текста
-
“Шрифт”
Для изменения шрифта в Delphi есть компонент FontDialog. Через его свойство Font
- 11-
можно изменять свойства разных компонентов имеющие это свойство, в том числе и
компонента Memo. Переносим этот компонент с закладки Dialogs на форму и в процедуре OnClick кнопки пишем следующий код:
if FontDialog1.Execute then begin // запустить окно FontDialog1
Memo1.Font:=Fontdialog1.Font; // присвоить значения FontDialog1 компоненту Memo1
-
“Дата и время”
Для того чтобы вставить в Memo1 дату и время есть процедура DateTimeToString. Вставим следующий код в процедуру кнопки OnClick:
var TD: String; //переменная в которую занесётся дата и время
begin
{Заносим в переменную TD дату с параметрами: «Дата» «Месяц» «Год» и время с парамтрами «Часов» «Минут» «Секунд»}
DateTimeToString(TD,'dd mmmm yyyyyy "г." hh:nn:ss ',Now);
Memo1.SelText:= TD; // вставить на место курсора дату и время которое лежит в TD
Настройка главного меню закончено.
Меню: «Экстра» оставляем незаполненным, т.к. нужно создать нужные программы.
Создание часов на главной форме
Для показа времени в Delphi есть ещё одна процедура FormatDateTime, но это процедура показывает время в данный момент когда она была вызвана, для того что каждую секунду обновлялось время, а то есть показывала время, нужно использовать компонент Timer, который находиться на закладке System, палитры компонентов Delphi.
Переносим Timer на форму и в его процедуре OnTimer нужно вставить следующий код:
Label1.Caption:=FormatDateTime('Сейчас: '+' hh:mm:ss AM/PM', Now()); {Изменяем надпись на Label1 на: “Сейчас: ‘Часы’:‘Минуты’:‘Секунды’ ‘AM’ или ‘PM’ ”}
Сохранение настроек программы
Так как нам нужно чтобы сохранялись некоторые параметры программы, то для этого буду использовать ini файл. Для сохранения нужно в процедуре OnClose главной формы вставить следующий код:
uses inifiles;
…
var
IniFile: TIniFile;
begin
IniFile := TIniFile.Create('Notebook.ini'); // создание ini файла, если его не существует
IniFile.WriteString('MainOptions', 'Base',s);// записать значение переменной S
{Сохранить имя шрифта, компонента Memo1}
IniFile.WriteString('MainOptions', 'Name font',memo1.Font.Name);
{Сохранить размер шрифта, компонента Memo1}
IniFile.WriteInteger('MainOptions', 'Size', memo1.Font.Size);
{Сохранить цвет шрифта, компонента Memo1}
IniFile.WriteInteger('MainOptions', 'Color',memo1.Font.Color);
inifile.Free; // освободить память
- 12 -
Для того чтобы пользователь не забыл сохранить изменения, в OnClose формы, после inifile.free, вставим код, который будет выводить окно с запросом о сохранение изменений:
{вывести сообщение о подтверждении сохранение изменений в файле: «Да» или «Нет»}
case messagedlg('Сохранить изменение ?',mtconfirmation,[mbyes,mbno],0)of
mryes: memo1.Lines.SaveToFile(s); // если «Да» ,то сохранить с именем S
end;
Загрузка настроек программы
Для того чтобы загрузить нам сохранения, нужно в процедуре формы OnCreate вставить следующий код:
var IniFile: TIniFile;
begin
IniFile := TIniFile.Create('Notebook.ini');// читаем или создаём файл ini
s:=IniFile.ReadString('MainOptions', 'Base', '');//заносим в переменную S значение
{выставляем имя шрифта для Memo1}
memo1.Font.Name:=IniFile.ReadString('MainOptions', 'Name font','');
{выставляем размер шрифта для Memo1}
memo1.Font.Size:=IniFile.ReadInteger('MainOptions', 'Size',0);
{выставляем цвет шрифта для Memo1}
memo1.Font.Color:=IniFile.ReadInteger('MainOptions', 'Color', 0);
inifile.Free;
Для того чтобы открылся последний файл который был открыт перед закрытием, нужно OnCreate формы после оператора Inifile.free, вставить следующий код:
memo1.Lines.LoadFromFile(s);//загрузить файл с именем S
Так как, если нужно будет изменить шрифт текста то при запуске окна настройки шрифта там будет все настройки по умолчанию и пройдется менять все параметры, а чтоб этого не делать нужно присвоить значения от Memo1 к FontDialog. Вставим следующий код, после Memo1.Lines.LoadFromFile(s):
FontDialog1.Font:=Memo1.Font;{присвоить все параметры которые находятся в свойстве Font}
На этом создание главной формы закончено. Можно скомпилировать и запустить проект, и если всё сделано правильно, то ошибок не каких быть не должно.
- 13 -
Описание вспомогательных программ, использованных в программе «Записная книжка»
«Справочник друзей»
Постановка задачи
Так как в программе «Справочник друзей» нужно будет записывать телефон, адрес, фамилию и имя человека то нужен компонент который мог бы это разрешить. Можно использовать базу данных для этих целей, но Delphi имеет компонент StringGrid. Для StringGrid’а ненужно дополнительных компонентов, а для работы с базами данных нужно несколько компонентов, которые лишь увеличивают размер программы. На форме будет 3 кнопки: «Добавить» (добавить строку), «Удалить » (удалить выделиную строку), «Выйти» (сохранить и закрыть программу).
Создание интерфейса
В свойстве Caption формы введём текст: ‘Справочник друзей’, а в свойстве формы Name введём имя формы: ‘Dryzi’. В свойстве формы AutoSize нужно выставить True, для то чтобы форма изменяла размер вместе с компонентами.
Перенесём с закладки Additional компонент StringGrid на форму. Выставляем следующие свойства этого компонента: