четверг, 8 августа 2019 г.

Turbo Delphi 05

1. Текстовый редактор с меню и панелями инструментов.
1) Создайте папку под новый проект.
2) Можно скопировать в папку с проектом, папку с иконками для кнопок и пунктов меню (Icons).
3) Создайте новый проект и сохраните его в созданную папку.
4) Оформите внешний вид окна: задайте заголовок «Текстовый редактор» (Caption), размеры (Width, Height) и положение (Top, Left) формы.
5) Разместите на форме:
- многострочное поле ввода – компонент TMemo (вкладка Standard);
- главное меню формы – компонент TMainMenu (вкладка Standard);
- контекстное меню – компонент TPopupMenu (вкладка Standard);
- панель инструментов – компонент TToolBar (вкладка Win32);
- хранилище изображений – компонент TImageList (вкладка Win32);
- диалог открытия файла – компонент TOpenDialog (вкладка Dialogs);
- диалог сохранения файла – компонент TSaveDialog (вкладка Dialogs).
6) Установите свойства компонента ImageList: Height = 24 и Width = 24, задающих размер изображений (иконок).
Щелкните дважды на компоненте ImageList (или выполните в контекстном меню компонента «ImageList Editor…») – откроется окно редактора хранилища изображений, добавьте с помощью кнопки «Add» изображения для кнопок и пунктов меню.
7) Щелкните дважды на компоненте MainMenu (или выполните в контекстном меню компонента «Menu Disagner…») – откроется редактор главного меню, с помощью которого можно задать его пункты и обработчики событий.
Внесите следующие пункты в строку главного меню (свойство Caption): «Файл», «Правка», «Вид», «О программе». Добавьте в каждое меню указанные ниже пункты. Для пункта «Стиль границ» добавьте вложенное меню (нажатие комбинации клавиш Ctrl+Right или команда «Create submenu» в контекстном меню для пункта) и впишите пункты: «Масштабируемое», «Диалоговое», «Без заголовка», «Управляемое», «Инструментальное», «Инструментальное диалоговое». Для вставки разделителя достаточно в свойство Caption указать значение «-».
ФайлОткрыть
Сохранить
-
Выход


ПравкаОтменить
-
Копировать
Вырезать
Вставить



ВидПоверх всех окон
Стиль границ > Масштабируемое
Диалоговое

Без заголовка
Управляемое
Инструментальное
Инструментальное диалоговое




О программе

8) Задайте свойства компонент:
КомпонентСвойстваОбработчик
TImageListName = ilMain
TMainMenuName = mmMain
Images = ilMain


TMenuItemName = miFile
Caption = '&Файл'
TMenuItemName = miFileOpen
Caption = '&Открыть'
ImageIndex = выбрать в списке
ShortCut = Ctrl+O


procedure TForm1.miFileOpenClick(Sender: TObject);
begin
if odMain.Execute then
memMain.Lines.LoadFromFile(odMain.FileName);
end;



TMenuItemName = miFileSave
Caption = '&Сохранить'
ImageIndex = выбрать в списке
ShortCut = Ctrl+S


procedure TForm1.miFileSaveClick(Sender: TObject);
begin
if sdMain.Execute then
memMain.Lines.SaveToFile(sdMain.FileName);
end;



TMenuItemName = miFileSep
Caption = '-'
TMenuItemName = miFileClose
Caption = 'В&ыход'
ImageIndex = выбрать в списке
ShortCut = Ctrl+Q


procedure TForm1.miFileCloseClick(Sender: TObject);
begin
Close
end;


TMenuItemName = miEdit
Caption = '&Правка'
TMenuItemName = miEditUndo
Caption = &Отменить
ImageIndex = выбрать в списке
ShortCut = Ctrl+Z


procedure TForm1.miEditUndoClick(Sender: TObject);
begin
if memMain.CanUndo then
memMain.Undo;
end;



TMenuItemName = miEditSep
Caption = '-'
TMenuItemName = miEditCopy
Caption = '&Копировать'
ImageIndex = выбрать в списке
ShortCut = Ctrl+C


procedure TForm1.miEditCopyClick(Sender: TObject);
begin
memMain.CopyToClipboard;
end;


TMenuItemName = miEditCut
Caption = 'Вырез&ать'
ImageIndex = выбрать в списке
ShortCut = Ctrl+X


procedure TForm1.miEditCutClick(Sender: TObject);
begin
memMain.CutToClipboard;
end;


TMenuItemName = miEditPaste
Caption = '&Вставить'
ImageIndex = выбрать в списке
ShortCut = Ctrl+V


procedure TForm1.miEditPasteClick(Sender: TObject);
begin
memMain.PasteFromClipboard;
end;


TMenuItemName = miView
Caption = '&Вид'
TMenuItemName = miViewStayOnTop
AutoCheck = True
Caption = 'Поверх всех окон'

procedure TForm1.miViewStayOnTopClick(Sender: TObject);
begin
if miViewStayOnTop.Checked then
Form1.FormStyle := fsStayOnTop
else
Form1.FormStyle := fsNormal;
end;





TMenuItemName = miViewBorderStyle
Caption = 'Стиль границ'
TMenuItemName = miViewSizeable
AutoCheck = True
Caption = 'Масштабируемое'
Checked = True
Default = True
GroupIndex = 1
RadioItem = True





procedure TForm1.miViewSizeableClick(Sender: TObject);
begin
if miViewSizeable.Checked then
Form1.BorderStyle := bsSizeable;
if miViewDialog.Checked then
Form1.BorderStyle := bsDialog;
if miViewNone.Checked then
Form1.BorderStyle := bsNone;
if miViewSingle.Checked then
Form1.BorderStyle := bsSingle;
if miViewSizeToolWin.Checked then
Form1.BorderStyle := bsSizeToolWin;
if miViewToolWindow.Checked then
Form1.BorderStyle := bsToolWindow;
end;
Обработчик создается только для одного пункта меню (в коде – miViewSizeable). Для остальных пунктов выбирается из комбинированного списка в поле OnClick на вкладке Events Инспектора объектов.














TMenuItemName = miViewDialog
AutoCheck = True
Caption = 'Диалоговое'
GroupIndex = 1
RadioItem = True



TMenuItemName = miViewNone
AutoCheck = True
Caption = 'Без заголовка'
GroupIndex = 1
RadioItem = True



TMenuItemName = miViewSingle
AutoCheck = True
Caption = 'Управляемое'
GroupIndex = 1
RadioItem = True



TMenuItemName = miViewSizeToolWin
AutoCheck = True
Caption = 'Инструментальное'
GroupIndex = 1
RadioItem = True



TMenuItemName = miViewToolWindow
AutoCheck = True
Caption = 'Инструментальное диалоговое'
GroupIndex = 1
RadioItem = True



TMenuItemName = miAbout
Caption = '&О программе'
ImageIndex = выбрать в списке
ShortCut = Ctrl+B


procedure TForm1.miAboutClick(Sender: TObject);
begin
MessageDlg('Автор: Баночкин Федор Батькович',
mtInformation,[mbOk],0)
end;



TPopupMenuName = pmMain
Images = ilMain


TMenuItemName = miCopy
Caption = 'Копировать'
ImageIndex = выбрать в списке

procedure TForm1.miCopyClick(Sender: TObject);
begin
miEditCopyClick(Sender);
end;


TMenuItemName = miCut
Caption = 'Вырезать'
ImageIndex = выбрать в списке

procedure TForm1.miCutClick(Sender: TObject);
begin
miEditCutClick(Sender);
end;


TMenuItemName = miPaste
Caption = 'Вставить'
ImageIndex = выбрать в списке

procedure TForm1.miPasteClick(Sender: TObject);
begin
miEditPasteClick(Sender);
end;


TMemoName = memMain
Align = alClient
Lines = очистить
PopupMenu = pmMain
ScrollBars = ssBoth









TToolBarName = tbMain
AutoSize = True
Images = ilMain

TToolButtonName = ToolButton1
ImageIndex = выбрать в списке
MenuItem = miFileOpen

Кнопка добавляется через контекстное меню панели инструментов (TToolBar), в котором необходимо выбрать пункт «New Button».
TToolButtonName = ToolButton2
ImageIndex = выбрать в списке
MenuItem = miFileSave

TToolButtonName = ToolButton3
ImageIndex = выбрать в списке
Style = tbsSeparator

Разделитель кнопок добавляется через контекстное меню панели инструментов (TToolBar), в котором необходимо выбрать пункт «New Separator».
TToolButtonName = ToolButton4
ImageIndex = выбрать в списке
MenuItem = miEditUndo

TToolButtonName = ToolButton5
ImageIndex = выбрать в списке
Style = tbsSeparator

TToolButtonName = ToolButton6
ImageIndex = выбрать в списке
MenuItem = miEditCopy

TToolButtonName = ToolButton7
ImageIndex = выбрать в списке
MenuItem = miEditCut

TToolButtonName = ToolButton8
ImageIndex = выбрать в списке
MenuItem = miEditPaste

TToolButtonName = ToolButton9
ImageIndex = выбрать в списке
Style = tbsSeparator

TToolButtonName = ToolButton10
ImageIndex = выбрать в списке
MenuItem = miFileClose

TOpenDialogName = odMain
DefaultExt = 'txt'
Filter = 'Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*'

TSaveDialogName = sdMain
DefaultExt = 'txt'
Filter = 'Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*'




9) Сохраните проект и запустите программу на исполнение.
2. Текстовый редактор с меню
1) Создайте папку под новый проект.
2) Создайте новый проект и сохраните его в созданную папку.
3) Оформите внешний вид окна: задайте заголовок «Текстовый редактор» (Caption), размеры (Width, Height) и положение (Top, Left) формы.
4) Разместите на форме:
- многострочное поле ввода – компонент TMemo (вкладка Standard);
- главное меню формы – компонент TMainMenu (вкладка Standard).
5) Установите для компонента Memo свойство Align=alClient.
6) Задайте обработчик события на создание формы, в котором будет очищаться содержимое компонента Memo. введите указанный программный код (выделено жирным):
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
end;
7) Щелкните дважды на компоненте MainMenu (или выполните в контекстном меню компонента «Menu Disagner…») – откроется редактор главного меню, с помощью которого можно задать его пункты и обработчики событий.
Внесите следующие пункты в строку главного меню (свойство Caption): «Файл», «Редактирование», «О программе». Пункты «Файл» и «Редактирование» должны содержать вложенное меню следующей структуры:
ФайлНовый
Открыть
Сохранить
Сохранить как…
Выход



РедактироватьКопировать
Вырезать
Вставить
Выделить все



8) Запустите программу на исполнение:
9) Для того чтобы задать обработчики событий для пунктов меню, вернитесь в визуальную среду программирования и войдите в редактор меню. Выберите пункт меню и дважды щелкните на нем (или в окне Инспектора объектов на вкладке Events выберите событие onClick). Появится окно редактора кода с заготовкой обработчика события. Создайте обработчики событий со следующими кодами:
Пункт менюКод обработчика
Файл – Новыйvar
f: textfile;
begin
form1.Tag := 1;
AssignFile(f,'c:\newfile.txt');
Rewrite(f);
CloseFile(f);
Form1.Caption := 'Редактор - newfile.txt';
form1.Memo1.Lines.LoadFromFile('c:\newfile.txt');
end;








Файл – Открыть Form1.Tag := 2;
Form2.ShowModal;
Файл – Сохранить case Form1.Tag of
1 : Form1.Memo1.Lines.SaveToFile('c:\newfile.txt');
2 : Form1.Memo1.Lines.SaveToFile(Form2.FileListBox1.FileName);
end;


Файл – Сохранить как…var
tmp: string; //объявление переменной
begin
tmp := InputBox('Сохранение файла','Введите имя файла','');
if tmp <> '' then
begin
form1.Memo1.Lines.SaveToFile(tmp+'.txt');
Form1.Caption := 'Редактор - '+tmp+'.txt';
end;
end;








Файл – Выход Close;
Редактирование – Копировать Form1.Memo1.CopyToClipboard;
Редактирование – Вырезать Form1.Memo1.CutToClipboard;
Редактирование – Вставить Form1.Memo1.PasteFromClipboard;
Редактирование – Выделить все Form1.Memo1.SelectAll;
О программе MessageDlg('Программа редактирование текстовых файлов'+#10#13+
'Автор: Баночкин Федор Батькович', mtInformation,[mbOk],0)

10) Обратите внимание, что при выборе пункта «Файл – Открыть» идет обращение к Form2, которой нет. Для того чтобы создать новую форму выполните в меню ИСР Delphi пункт «File – New – Form». У вас появится форма под именем Form2.
11) Измените заголовок формы Form2 свойство Caption="Открытие файла". Задайте стиль границ BorderStyle=bsDialog.
12) Разместите на форме Form2:
- графическую кнопку – TBitBtn (вкладка Additional), для которой установите свойство Kind=bkClose;
- компоненты для управления файлами – компоненты DriveComboBox, DirectoryListBox, FileListBox (вкладка Win 3.1).
Расположите компоненты так, чтобы получить форму следующего вида:
13) Создайте следующие обработчики событий для каждого из компонентов для управления файлами:
КомпонентСобытиеПроцедура обработчика
DriveComboBoxOnChangeprocedure TForm2.DriveComboBox1Change(Sender: TObject);
begin
DirectoryListBox1.Drive:=DriveComboBox1.Drive;
FileListBox1.Directory:=DirectoryListBox1.Directory;
end;



DirectoryListBoxOnChangeprocedure TForm2.DirectoryListBox1Change(Sender: TObject);
begin
Form2.FileListBox1.Directory:=DirectoryListBox1.Directory;
end;


FileListBoxOnClickprocedure TForm2.FileListBox1Click(Sender: TObject);
begin
if FileExists(Form2.FileListBox1.FileName) then
begin
Form1.Caption:='Редактор - '+Form2.FileListBox1.FileName;
Form1.Memo1.Lines.LoadFromFile(Form2.FileListBox1.FileName)
end
else
MessageDlg('Файл не найден',mtInformation,[mbOk],0);
Form2.Close;
end;










14) Переключаться между формами (и окнами кода) можно в Менеджере проекта (Project Manager). Вызвать окно Менеджера проекта можно, выполнив «View – Project Manager» (или нажатием Ctrl+Alt+F11). Также переключение между окнами можно выполнить в отдельном диалоге «View – Forms…» (или нажатием Shift+F12).
15) При обращении к добавленной форме, в первой форме Form1 необходимо в разделе Uses добавить объявление модуля второй формы – Unit2 (если имя не изменялось при сохранении), а во второй Form2 добавить в разделе Uses объявление модуля первой формы – Unit1 (если имя не изменялось при сохранении). Данную операцию подключения Delphi предлагает выполнить в случае, если существует в коде ссылка на неподключенную форму (модуль). Также подключение существующей формы (его модуля) можно выполнить в ИСР Delphi – «File – Use Unit…» (или нажатием Alt+F11).
16) Сохраните проект и запустите программу на исполнение.

Комментариев нет:

Отправить комментарий