
- •Методическое пособие для самостоятельных работ «Основы интегрированной среды программирования 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 "Электрические системы и комплексы транспортных средств",
I,j :byte;
begin
for i:=1 to nn1 do
for j:=1 to mm1 do
if StringGrid1.Cells[j,i]='' then
mas1[i,j]:=0
else
mas1[i,j]:=StrToInt(StringGrid1.Cells[j,i]);
Form1.N2.Enabled:=True;
close;
end;
procedure Tform3.FormClose(Sender: TObject; var Action: TCloseAction); {Выполняется при закрытии окна; уничтожает ресурс “окно”}
begin
Action:=caFree;
end;
Приведем реализацию модуля вывода результатов Form2. При выборе пункта меню “Найти сумму” выполняется процедура:
procedure TForm2.N1Click(Sender: TObject);
var
I,j :byte;
sum :integer;
begin
if (nn1=1)or(mm1=1) then
ShowMessage ('Массив не задан')
else
begin
Label1.Visible:=True;
Edit1.Visible:=True;
Label2.Visible:=False;
Edit2.Visible:=False;
sum:=0;
for i:=1 to nn1 do
for j:=1 to mm1 do
sum:=sum+mas1[i,j];
edit1.text:=IntToStr(sum);
end;
end;
При выборе пункта меню “Найти произведение” выполняется процедура:
procedure Tform2.N2Click(Sender: TObject);
Var
I,j :byte;
s6 :string;
pr :integer;
begin
if (nn1=1)or(mm1=1) then
ShowMessage('Массив не задан')
else
begin
Label1.Visible:=false;
Edit1.Visible:=false;
Label2.Visible:=true;
Edit2.Visible:=true;
pr:=1;
for i:=1 to nn1 do
for j:=1 to mm1 do
pr:=pr*mas1[i,j];
s6:=IntToStr(pr);
Edit2.Text:=s6;
end;
end;
В SDI–приложениях во всех формах значение свойства FormStyle равно fsNormal, это соответствует значению по умолчанию.
Не забудьте указать взаимосвязи между модулями разных форм. Если модули разных форм ссылаются на переменные друг друга, то во избежание круговых ссылок (Запрещенных!) один оператор Uses Unit2 включите в раздел Interface, а другой Uses Unit1 в раздел Implementation.
4.3.2. Управление окнами в sdi–приложениях
В SDI–приложениях, как и в MDI–приложениях, можно динамически создавать много окон как одного, так и разных типов. В MDI–приложениях управление этими окнами (минимизация, расположение и т.д.) выполняется стандартными средствами, вызываемыми из меню в главном окне. При разработке SDI–приложений аналогичные средства придется реализовать самому и включить в меню того окна, из которого выполняется создание окон.
Проиллюстрируем сказанное на простом примере. На рис. 4.8. показаны:
окно, из которого выполняется создание нового окна,
два экземпляра создаваемых окон.
Рис. 4.8. Управление окнами в SDI–приложении
Естественно, что второе окно должно быть исключено из числа автоматически создаваемых при запуске приложения окон.
Меню в центральном окне (будем так называть окно, из которого выполняется управление всей программой) имеет следующий вид:
Создать окно Управление окнами Выход
Каскад
Закрыть все
Минимизировать все
Реализация пунктов меню приведена ниже. В разделе объявлений необходимы следующие дополнения:
Const
Kolwin:Integer=0; {Типизированная константа – количество окон }
Var
Aknad : TList;
TList – это класс самого Delphi, он содержит указатели (адреса) на другие объекты. (понятия “класс” и “объект” рассмотрим подробно в следующей главе). Как и любой другой класс, он содержит ряд свойств и методов, позволяющих включить объекты в список, удалить их и выполнить некоторые другие операции с ними. В нашем случае объект Aknad класса TList будет содержать указатели на динамически создаваемые окна.
При запуске приложения выполняется процедура:
procedure TForm1.FormCreate(Sender: TObject);
begin
Aknad:=TList.Create; {Создается объект класса }
Aknad.Capacity:=10; {Задается объем созданного списка }
end;
Реализация пунктов меню.
Создать окно
procedure TForm1.N1Click(Sender: TObject);
Var
fn : TForm2; {Указатель на создаваемую форму}
begin
if Aknad.Count<Aknad.Capacity then
{Проверим, не превышено ли допустимое количество окон }
begin
fn:=TForm2.Create(Application); {Создаем окно }
Aknad.Add(fn);
{Добавим указатель на созданное окно в список}
fn.Top:=17+kolwin*25;
fn.Left:=310+kolWin*8;
{Определим координаты созданного окна}
fn.Caption:='Форма № '+IntToStr(kolwin);
{Формируем заголовок окна }
kolwin:=kolwin+1; {Увеличим количество окон }
fn.Show; {Покажем окно }
end
else
ShowMessage('Слишком много окон');
end;
Управление окнами – Каскад
procedure TForm1.N4Click(Sender: TObject);
Var