- •Методическое пособие для самостоятельных работ «Основы интегрированной среды программирования 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 "Электрические системы и комплексы транспортных средств",
Vas :real;
MyRes :Teine;
s6 :string;
begin
Val(Edit4.Text,n,sig);
if sig<>0 then
ShowMessage('Введите целое число')
else
begin
if n>Dan.Count then
ShowMessage('Заданное число не должно быть больше '+IntToStr(Dan.Count))
else
begin
{Извлекаем из списка объект по заданному номеру,}
{ номера начинаются с нуля}
MyRes:=Dan.Items[n-1];
MyRes.Matem(vas);
{MyRes – указатель на i-й объект }
str(vas:6:2,s6);
Edit5.Text:=s6;
end;
end;
end;
end.
Контрольные вопросы
В каких случаях целесообразно использование в программах процедур и функций?
Как открыть модуль, если модули в виде файлов с расширением *.pas уже имеются?
Если есть процедуры (функции) написанные в среде Borland Pascal и возникла необходимость разработать новую реализацию в Delphi. Как их включить в Delphi и использовать?
Поясните классический подход для описания объектов.
Поясните понятие «объект» и «класс».
Примеры составления программ
Работа с файлом инициации
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Spin;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
edSection: TEdit;
edParam1: TEdit;
edParam2: TEdit;
cbParam4: TCheckBox;
Button1: TButton;
Button2: TButton;
seParam3: TSpinEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure edParam2Exit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses IniFiles;
const
SectionName = 'InitSection';
IniFileName = 'DemoIni.ini';
var
Ini: TIniFile;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
//Создает или изменяет файл инициации
begin
if edSection.Text='' then
edSection.Text := SectionName;
Ini := TIniFile.Create(IniFileName);
Ini.WriteString(edSection.Text, 'Param1', edParam1.Text);
Ini.WriteFloat(edSection.Text, 'Param2', StrToFloat(edParam2.Text));
Ini.WriteInteger(edSection.Text, 'Param3', seParam3.Value);
Ini.WriteBool(edSection.Text, 'Param4', cbParam4.Checked);
Ini.Destroy;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if edSection.Text='' then
edSection.Text := SectionName;
Ini := TIniFile.Create(IniFileName);
edParam1.Text := Ini.ReadString(edSection.Text, 'Param1', 'Delphi');
edParam2.Text := FloatToStr(Ini.ReadFloat(edSection.Text,
'Param2', 3.1415));
seParam3.Value := Ini.ReadInteger(edSection.Text, 'Param3', 100);
cbParam4.Checked := Ini.ReadBool(edSection.Text, 'Param4', True);
Ini.Destroy;
end;
procedure TForm1.edParam2Exit(Sender: TObject);
begin
try
StrToFloat(edParam2.Text)
except
edParam2.SelectAll;
edParam2.SetFocus;
end
end;
end.
Главная форма программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TMainForm = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.Button1Click(Sender: TObject);
begin
Close
end;
end.
Использование процедуры AssignPrn для печати документа
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
OpenDialog1: TOpenDialog;
BitBtn1: TBitBtn;
Button3: TButton;
FontDialog1: TFontDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Printers;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
// Выбор файла с текстом и его загрузка в редактор
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName)
end;
procedure TForm1.Button2Click(Sender: TObject);
// Печать содержимого редактора как вывод в текстовый файл
var
Prn: TextFile;
k: Integer;
begin
AssignPrn(Prn);
Rewrite(Prn);
// Для печати используем такой же шрифт, как и для показа в редакторе:
Printer.Canvas.Font := Memo1.Font;
// Цикл печати:
for k := 0 to Memo1.Lines.Count-1 do
WriteLn(Prn, Memo1.Lines[k]);
CloseFile(Prn)
end;
procedure TForm1.Button3Click(Sender: TObject);
// Выбор шрифта и связывание его с Memo1
begin
if FontDialog1.Execute then
Memo1.Font := FontDialog1.Font
end;
end.
Использование для печати документа свойства Printer.Canvas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
OpenDialog1: TOpenDialog;
BitBtn1: TBitBtn;
Button3: TButton;
FontDialog1: TFontDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Printers;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
// Выбор файла с текстом и его загрузка в редактор
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName)
end;
procedure TForm1.Button2Click(Sender: TObject);
// Печать содержимого редактора c помощью свойства Printer.Canvas
var
Y,dY,X,k: Integer;
S: String;
begin
if Memo1.Lines.Count=0 then Exit;
Screen.Cursor := crHourGlass;
with Printer do
begin
BeginDoc;
with Canvas do
begin
Font := Memo1.Font;
dY := TextHeight('1'); // Определяем высоту строки
Y := 3*dY; // Отступ от верхнего края листа
X := PageWidth div 15; // Отступ от левого края
for k := 0 to Memo1.Lines.Count-1 do
begin
// Выводим очередную строку
TextOut(X,Y,Memo1.Lines[k]);
// Смещаемся на следующую строку листа
inc(Y,dY);
if PageHeight-Y<2*dY then // Нижний край листа?
begin // Да
NewPage; // Переход на новый лист
// Выводим номер страницы посередине листа:
S := '- '+IntToStr(PageNumber)+' -';
TextOut((PageWidth-TextWidth(S)) div 2, dy, S);
// и отчеркиваем его от текста:
MoveTo(X, 3*dy div 2);
LineTo(PageWidth-X, 9*dy div 4);
// Ордината первой строки:
Y := 3*dY
end;
end;
end;
EndDoc;
end;
Screen.Cursor := crDefault;
end;
procedure TForm1.Button3Click(Sender: TObject);
// Выбор шрифта и связывание его с Memo1
begin
if FontDialog1.Execute then
Memo1.Font := FontDialog1.Font
end;
end.
Использование для печати документа компонентов Quick Report
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
OpenDialog1: TOpenDialog;
BitBtn1: TBitBtn;
Button3: TButton;
FontDialog1: TFontDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Printers, Unit2, dbtables;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
// Выбор файла с текстом и его загрузка в редактор
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName)
end;
procedure TForm1.Button2Click(Sender: TObject);
// Печать содержимого редактора c помощью компонентов Quick Report
begin
if Memo1.Lines.Count=0 then Exit;
with Form2 do
begin
QRLabel1.Caption := OpenDialog1.FileName;
QRStringsBand1.Items.Assign(Memo1.Lines);
QRStringsBand1.Font := Memo1.Font;
QuickRep1.Preview;
end
end;
procedure TForm1.Button3Click(Sender: TObject);
// Выбор шрифта и связывание его с Memo1
begin
if FontDialog1.Execute then
Memo1.Font := FontDialog1.Font
end;
end.
Задания для самостоятельного выполнения
Ввести динамический одномерный массив, состоящий из N элементов. Размер массива N ввести во время выполнения программы в поле Edit1. Значения массива задать функцией Random(R), где R= 11. Вывести сформированный массив на экран в компонент Label1. Найти минимальный элемент массива и его индекс. Результат вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.
Ввести динамический двумерный массив (матрицу) NxM. Размеры массива N и M ввести во время выполнения программы в поле Edit1 и Edit2. Значения матрицы задать функцией Random(R), где R=31. Вывести сформированную матрицу на экран в компонент Label1. Найти сумму значений элементов этой матрицы, лежащих в диапазоне от 7 до 19 и вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.
Ввести динамический одномерный массив, состоящий из N элементов. Размер массива N ввести во время выполнения программы в поле Edit1. Значения массива задать функцией Random(R), где R=30. Вывести сформированный массив на экран в компонент Label1. Найти максимальный и минимальный элементы массива и их сумму. Результат вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.
Ввести динамический двумерный массив (матрицу) NxM. Размеры массива N и M ввести во время выполнения программы в поле Edit1 и Edit2. Значения матрицы задать функцией Random(R), где R=101. Вывести сформированную матрицу на экран в компонент Label1. Найти среднее арифметическое значение элементов этой матрицы, лежащих в диапазоне от 31 до 52 и вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.
Ввести динамический одномерный массив, состоящий из N элементов. Размер массива N ввести во время выполнения программы в поле Edit1. Значения массива задать функцией Random(R), где R= 40. Вывести сформированный массив на экран в компонент Label1. Найти произведение минимального и максимального элементов. Результат вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.
Ввести динамический двумерный массив (матрицу) NxM. Размеры массива N и M ввести во время выполнения программы в поле Edit1 и Edit2. Значения матрицы задать функцией Random(R), где R=28. Вывести сформированную матрицу на экран в компонент Label1. Найти произведение значений всех элементов четных строк этой матрицы и вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.
Ввести динамический двумерный массив (матрицу) NxM. Размеры массива N и M ввести во время выполнения программы в поле Edit1 и Edit2. Значения матрицы задать функцией Random(R), где R=34. Вывести сформированную матрицу на экран в компонент Label1. Найти сумму значений элементов этой матрицы, лежащих в диапазоне от 7 до 19 и вывести на экран в компонент Label2. Процедуру выполнения данного задания оформить в событии Button1Click компонента Button1.