- •Методическое пособие для самостоятельных работ «Основы интегрированной среды программирования delphi6»
- •6.100301 "Судовождение",
- •6.100302 "Эксплуатация судовых энергетических установок"
- •6.092201 "Электрические системы и комплексы транспортных средств",
- •Введение
- •Глава 1. Интегрированная среда Delphi. Принципы работы
- •1.1. Интегрированная среда Delphi
- •1.2. Принципы визуального программирования
- •Val(Edit1.Text,k1,sign);
- •Val(Edit2.Text,k2,sign);
- •Val(MaskEdit1.Text,r1,sig);
- •Val(МaskEdit2.Text,r2,sig);
- •1.3. Событийно-управляемые программы
- •1.4. Составление программ обработки массивов
- •I :integer;
- •I, j :integer;
- •1.5. Вывод на печать
- •Глава 2. Общие свойства компонентов
- •2.1. Иерархия компонентов
- •2.2. Имена и собственники компонентов
- •2.3. Родительские и дочерние компоненты
- •2.4. Положение, размеры и оформление компонентов
- •2.5.Указатели мыши
- •2.3. Окно редактора с готовым изображением указателя
- •2.6. Реакция на события от мыши и клавиатуры
- •2.6.1. События от мыши
- •2.6.2. События от клавиатуры
- •2.6.3. Клавиатура в ms-dos и Windows
- •2.6.4. Фокус ввода
- •2.7. Механизм действий Action
- •2.8. Иинтерфейс Drag&Drop
- •2.9. Иинтерфейс Drag&Dock
- •2.10. Поддержка справочной службы
- •2.11. Поддержка Сом
- •2.12. Свойства разного назначения
- •Глава 3. Использование компонентов общего назначения
- •3.1. Компоненты страницы Standard
- •3.1.1. TFrame - рама и шаблоны компонентов
- •6) Окно регистрации рамы в палитре компонентов
- •3.1.2. Создание шаблонов без рам
- •3.1.3. TMainMenu - главное меню формы (программы)
- •3.1.4. TPopupMenu - вспомогательное (локальное) меню
- •3.1.5. TLabel - метка для отображения текста
- •3.1.6. TEdit - ввод и отображение строки
- •3.1.7. TMemo - ввод и отображение текста
- •3.1.8. TButton - кнопка
- •3.1.9. TCheckBox - независимый переключатель
- •3.11. Компонент tCheckBox - независимый переключатель
- •3.1.10. TRadioButton - зависимые переключатели
- •3.1.11. TListBox - список выбора
- •3.1.12. TComboBox – комбинированный или раскрывающийся список выбора
- •3.1.13. TScrollBar - управление значением величины
- •3.1.14. TGroupBox - панель группирования
- •3.1.15. TRadioGroup - группа зависимых переключателей
- •3.1.16. TPanel - панель
- •3.1.17. TActionList - механизм действий
- •3.2. Компоненты страницы Аdditional
- •3.2.1. TBitBtn - кнопка с изображением
- •3.2.2. TSpeedButton - кнопка для инструментальных панелей
- •3.2.3. TMaskEdit - специальный редактор
- •3.2.4. TStringGrid - таблица строк
- •3.2.5. TDrawGrid - произвольная таблица
- •3.2.6. TImage - отображение картинок
- •3.2.7. TShape - стандартная фигура
- •3.2.8. TBevel - кромка
- •3.2.9. TScrollBox - панель с прокруткой
- •3.2.10. TСheckListBox - группа независимых переключателей
- •3.2.11. TSplitter - компонент для изменения размеров
- •3.2.12. TStaticText - метка для отображения текста
- •3.2.13. TControlBar - инструментальная панель
- •3.2.14. TApplicationEvents - обработчик сообщений Windows
- •3.2.15. TValueListEditor - специализированный редактор строк
- •3.2.16. TLabelEdit - однострочный редактор с меткой
- •3.2.17. TColorBox - список выбора цвета
- •3.2.18. TChart - построитель графиков
- •3.2.19. TActionManager - менеджер действий
- •3.2.20. TActionMainMenuBar - полоса меню для действий
- •3.2.21. TActionTollBar - полоса кнопок для действий
- •3.2.22. TCustomizeDIg - диалог настройки интерфейса
- •Глава 4. Многодокументный и однодокументный интерфейсы (mdi и sdi)
- •4.1. Mdi и sdi: сравнение
- •4.2. Разработка mdi—приложений
- •4.2.1. Разработка главного и информационного окон
- •4.2.2. Использование стандартных диалоговых окон
- •If OpenDialog1.Execute then
- •4.2.3. Разработка диалогового окна
- •Var dlg6:tokRightDlg;
- •X1,x2,x3:String;
- •If b1 or b2 then
- •4.2.4. Управление окнами
- •I:integer;
- •I:integer;
- •4.2.5. Работа с меню
- •Var tf5:tForm2;
- •4.3. Разработка sdi–приложения
- •4.3.1. Простое sdi–приложение
- •I,j :byte;
- •I,j :byte;
- •I,j :byte;
- •4.3.2. Управление окнами в sdi–приложениях
- •I :byte;
- •Var I :byte; ptr6 :tForm2;
- •I :byte;
- •Глава 5. Реализация алгоритмов решаемых задач на Delphi
- •5.1. Традиционный подход реализации алгоритмов на Delphi
- •5.2. Объектно-ориентированный подход
- •Val(Edit1.Text,k,sig);
- •Val(Edit2.Text,l,sig);
- •I,j :byte;
- •I,j :integer;
- •Inherited Create (Ni,Nj);
- •Val(Edit1.Text, p, sig1);
- •Val(Edit2.Text, q, sig2);
- •Val(Edit3.Text, r, sig3);
- •Vas :real;
- •Val(Edit4.Text,n,sig);
- •Глава 6. Тестирование и отладка приложений
- •6.1. Виды ошибок
- •6.2. Отладочные средства Delphi
- •6.3. Составление тестов
- •Глава 7. Исключительные ситуации
- •7.1. Обработка исключительных ситуаций
- •I, j, k : integer;
- •I:integer;
- •I, j, k : integer;
- •7.2. Обработка определенных исключительных ситуаций
- •Var I,j,k :shortint; p,q :real;
- •Заключение
- •Литература
- •Методическое пособие для самостоятельных работ «Основы интегрированной среды программирования delphi6»
- •6.100301 "Судовождение",
- •6.100302 "Эксплуатация судовых энергетических установок"
- •6.092201 "Электрические системы и комплексы транспортных средств",
Var tf5:tForm2;
begin
TF5:=TForm2.Create(Self);
TF5.Show;
end;
Рис. 4.5. Взаимодействие окон
В новой форме будут две строки для текста, пункт меню для переноса текста из одной строки в другую и кнопка для закрытия окна. Для обеспечения преобразования меню необходимо:
Активизировать в главной форме Designer Menu (двойным щелчком на его обозначении), выделить пункт меню File и в инспекторе объектов обратим внимание на свойство GroupIndex. По умолчанию оно равно нулю. Это свойство и управляет слиянием меню главного и дочернего окон при открытии последнего. Передвигаемся по пунктам горизонтального меню и присвоим свойству Group Index следующие значения для пунктов меню:
File 10
Window 20
Help 30
Если предполагается видоизменение меню в зависимости от того, какое дочернее окно открыто, то целесообразно уже на стадии создания меню главного окна присвоить этому свойству его пунктов значения с шагом, например 10.
После этого вернемся к новой форме (Form2). Перенесем на нее компоненту Main Menu и создадим единственный пункт меню Control Text со значением свойства Group Index, равным 25. Реализация приведена ниже:
procedure TForm2.ControlText1Click(Sender: TObject);
begin
Edit2.Text:=Edit1.Text;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm2.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
Назначение остальных двух процедур ясно из предыдущего изложения. Обращаем внимание на то, что свойство GroupIndex влияет только на взаимодействие пунктов горизонтального меню. При необходимости менять выпадающее меню, оно должно создаваться в подчиненном окне заново, включая и неизменяемые пункты.
4.3. Разработка sdi–приложения
4.3.1. Простое sdi–приложение
SDI–приложение состоит из нескольких независимых окон. Эти окна могут открываться сразу при запуске приложения или создаваться и уничтожаться динамически в ходе его выполнения. Каждое окно может иметь свое меню. Из-за отсутствия главного окна невозможно управлять расположением и/или поведением окон так просто, как это делалось в MDI–приложениях. Управление окнами придется программировать самому автору приложения. Вид экрана при запуске нашего приложения приведен на рис. 4.6.
Рис. 4.6. SDI–приложение
В приложении будут следующие формы:
Form1 – для ввода размерности массива и управления приложением в целом (форма создается автоматически).
Form2 – для вывода результатов (создается автоматически).
Form3 – для ввода элементов массива (форма создается и уничтожается динамически).
Окно About (создается автоматически).
Для Form2 в группе свойств BorderIcons свойство biSystemMenu имеет значение False для предотвращения случайного закрытия этой формы.
Вид экрана при открытой Form3 приведен на рис. 4.7.
Рис. 4.7. Открытие формы Form3
В модуле первой формы необходимы следующие дополнительные объявления:
Const
N=10;
M=10;
var
nn1,mm1 :integer;
mas1 :array[1..N,1..M] of integer;
Автоматически открывается только одна форма – первая по порядку. Для открытия второй формы придется в состав ее модуля включить процедуру:
procedure Tform2.FormCreate(Sender: TObject);
begin
form2.Show;
end;
Для открытия окна “О программе” имеется процедура:
procedure TForm1.N3Click(Sender: TObject);
{Реализуется при выборе “О программе”}
begin
AboutBox.ShowModal;
end;
При использовании названий пунктов меню на русском языке Delphi присваивает им имена N1,N2,… которые при желании могут быть изменены (свойство Name).
Модальными называют окна, до закрытия которых все действия заблокируются.
Для присвоения начальных значений переменным при запуске приложения служит процедура:
procedure TForm1.FormCreate(Sender: TObject);
begin
nn1:=1; {Количество строк }
mm1:=1; {Количество столбцов}
end;
Реализация пункта меню “Ввод массива”:
procedure TForm1.N1Click(Sender: TObject);
Var
F3:Tform3;
begin
if (Edit1.Text='')or(Edit2.Text='') then
ShowMessage('Необходимо задать размерность массива')
else
begin
nn1:=StrToInt(Edit1.Text);
mm1:=StrToInt(Edit2.Text);
if (nn1<2)or(nn1>10)or(mm1<2)or(mm1>10) then
ShowMessage('Размерность массива должна быть в интервале от 2 до 10')
else
begin
N1.Enabled:=false; {До закрятия этой формы невозможно }
{создать другой ее экземпляр; соответствующий }
{ пункт меню будет «серым» }
f3:=Tform3.Create(Application);
f3.Show;
end
end;
end;
Рассмотрим реализацию модуля третьей формы. При создании формы:
procedure Tform3.FormCreate(Sender: TObject);
{Эта процедура запускается каждый раз при создании формы}
Var i:byte;
begin
StringGrid1.ColCount:=mm1+1;
{Определим количество столбцов в исходном массиве }
StringGrid1.RowCount:=nn1+1;
{Определим количество строк в исходном массиве }
for i:=1 to nn1 do
StringGrid1.Cells[0,i]:=IntToStr(i);
{Вставим номера строк и столбцов }
for i:=1 to mm1 do
Stringgrid1.Cells[i,0]:=IntToStr(i);
end;
При работе с объектом StringGrid не забудьте изменить его свойство Options – goEditing: по умолчанию false, что означает использование массива только для вывода.
При завершении ввода элементов массива и нажатии кнопки Cancel выполняется процедура (без сохранения введенных значений):
procedure TForm3.Button2Click(Sender: TObject);
begin
{Освободим пункт меню для создания новых форм }
Form1.N2.Enabled:=True;
close;
end;
При завершении ввода элементов массива и нажатии кнопки OK выполняется процедура (с сохранением введенных значений в массиве модуля Form1):
procedure TForm3.Button1Click(Sender: TObject);
Var