![](/user_photo/2706_HbeT2.jpg)
- •Методическое пособие для самостоятельных работ «Основы интегрированной среды программирования 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 I,j,k :shortint; p,q :real;
begin
{Начинается защищенная часть,}{ при выполнении возможны исключительные ситуации}
try
i:=StrToInt(s1);
j:=StrToInt(s2);
p:=StrToFloat(s3);
k:=i*j*100;
r:=sqrt(i*j);
q:=p/i;
except {Обработка исключительных ситуаций}
on EInvalidOp do ShowMessage ('Недопустимая операция');
on ERangeError do
ShowMessage ('Значение за пределами допустимых границ');
on EConvertError do ShowMessage(’Исходные данные не возможно преобразовать в числа');
on EZeroDivide do begin
ShowMessage('Деление на нуль');
q:=0;
end;
else ShowMessage ('Не удалось определить причину преры- вания');
end;
end; end.
В приведенном примере показано программирование реакций на различные исключительные ситуации. В большинстве случаев мы ограничились выводом сообщения о ней, но в принципе возможно и преодоление ее последствий, например, присвоением значения по умолчанию (q:=0;).
Контрольные вопросы
Что такое «Событийно-управляемая программа»?
Что понимается под визуальным программированием?
Из каких частей состоит экран инструментальной системы Delphi?
Разъясните суть тестирования и отладки.
Какие средства имеются в Delphi для проведения тестирования и отладки?
Примеры составления программ
Пример эллиптического главного окна
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Label1: TLabel;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Close
end;
end.
Демонстрация режима заполнения многоугольников
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TForm1 = class(TForm)
PaintBox1: TPaintBox;
PaintBox2: TPaintBox;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
Rgn1, Rgn2: Cardinal;
const
Points: array [1..5, 1..2] of Integer =
((91, 0), (160, 183), (0, 70), (183, 70), (23, 183));
begin
Rgn1 := CreatePolygonRgn(Points, 5, Alternate);
Rgn2 := CreatePolygonRgn(Points, 5, Winding);
with PaintBox1.Canvas do
begin
Brush.Color := clBlack;
FillRgn(Handle, Rgn1, Brush.Handle);
end;
with PaintBox2.Canvas do
begin
Brush.Color := clBlack;
FillRgn(Handle, Rgn2, Brush.Handle);
end;
end;
end.
Сортировка символов в Win32 и Win16
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;
type
TfmExample = class(TForm)
Panel1: TPanel;
bbRun: TBitBtn;
bbClose: TBitBtn;
lbOutput: TLabel;
mmOutput: TMemo;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
procedure bbRunClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmExample: TfmExample;
implementation
{$R *.DFM}
procedure TfmExample.bbRunClick(Sender: TObject);
var
k: Byte;
List1, List2: TStringList;
S: String;
begin
// Создаем два списка
List1 := TStringList.Create;
List1.Sorted := True;
List2 := TStringList.Create;
// Цикл наполнения списков монотонно возрастающими кодами
for k := 32 to 255 do
begin
S := IntToStr(k); // Код символа
if k<100 then
S := '0' + S;// Двузначное число дополняем ведущим нулем
// Формируем строку List1 из символа + табуляция + код символа
List1.Add(Char(k) + #9 + S);
// Формируем строку List2 из кода + табуляция + символ
List2.Add(S + #9 + Char(k));
end;
// Объединяем оба списка
List1.Sorted := False; // Отключаем сортировку List1
for k := 0 to List1.Count-1 do
List1[k] := #9 + List1[k] + #9#127#9 + List2[k];
// Переносим результат в mmOutput
mmOutput.Lines.Assign(List1);
// Уничтожаем List1 и List2
List1.Free;
List2.Free;
end;
end.
Преобразование компонента в текст с помощью потока
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;
type
TfmExample = class(TForm)
Panel1: TPanel;
bbRun: TBitBtn;
bbClose: TBitBtn;
edInput: TEdit;
lbOutput: TLabel;
mmOutput: TMemo;
procedure bbRunClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
fmExample: TfmExample;
implementation
{$R *.DFM}
procedure TfmExample.bbRunClick(Sender: TObject);
var
MemoryStream: TMemoryStream;
StringStream: TStringStream;
k: Integer;
begin
for k := 0 to ComponentCount-1 do
begin
MemoryStream := TMemoryStream.Create;
MemoryStream.WriteComponent(Components[k]);
MemoryStream.Seek(0,0);
StringStream := TStringStream.Create('');
ObjectBinaryToText(MemoryStream, StringStream);
MemoryStream.Free;
StringStream.Seek(0,0);
mmOutput.Lines.Add(StringStream.ReadString(Length(StringStream.DataString)));
StringStream.Free;
end;
end;
end.
Копирование файлов
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtDlgs;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
Source, Destiny: TFileStream;
begin
if OpenDialog1.Execute and SaveDialog1.Execute then
begin
Source := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
Destiny := TFileStream.Create(SaveDialog1.FileName, fmCreate);
Destiny.CopyFrom(Source,0);
Source.Free;
Destiny.Free
end;
end;
end.
Демонстрация использования компонентов Windows Shell
unit UExplorer;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, ShellCtrls, StdCtrls, ExtCtrls, ToolWin, Menus;
type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Splitter1: TSplitter;
ShellComboBox1: TShellComboBox;
ShellTreeView1: TShellTreeView;
ShellListView1: TShellListView;
StatusBar1: TStatusBar;
procedure ShellTreeView1Change(Sender: TObject; Node: TTreeNode);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
Panel: TStatusPanel;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.ShellTreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if Tag=1 then
Panel.Text := Node.Text
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
Panel := StatusBar1.Panels.Add;
Tag := 1
end;
end.
Задания для самостоятельного выполнения
Из текстового файла D:\SV\T1.TXT считать текст. Найти самое длинное слово текста и количество букв в этом слове. Результат вывести в компонент LABEL1.
Из текстового файла D:\SV\M1.TXT считать матрицу 5х5. Поместить ее в компонент STRINGGRID1. Найти среднее арифметическое матрицы и вывести в компонент LABEL1.
Из текстового файла D:\SV\T1.TXT считать текст. Найти в тексте слова с количеством букв, равным числу N, введенному в поле EDIT1. Сформировать из них строку и вывести ее в компонент LABEL1.
Из текстового файла D:\SV\M1.TXT считать матрицу 5х5 в компонент STRINGGRID1. Найти максимальные элементы по каждой строке матрицы и вывести их в компонент LABEL1 с пояснением.
Ввести текст в компонент MEMO1. Найти в тексте слова с четным количеством букв, сформировать из них строку ST1 и записать в файл D:\SV\T1.TXT, и с нечетным количеством букв, сформировать из них строку ST2 и записать в файл D:\SV\T2.TXT. Ввести значения матрицы 5х5 в компонент STRINGGRID1. Найти максимальные элементы каждого столбца матрицы. Вывести их в компонент LABEL1 с пояснениями, сформировать из них одномерный массив и записать его в файл D:\SV\M1.TXT. Из текстового файла D:\SV\T1.TXT считать текст. Найти в нем слова, состоящие из пяти букв и сформировать из них строку ST1. Вывести результат в компонент LABEL1.
Ввести значения матрицы 5х5 в компонент STRINGGRID1. Найти сумму элементов главной S1 и побочной S2 диагоналей. Результат вывести в компонент LABEL1 с пояснениями.
Из текстового файла D:\SV\T1.TXT считать текст. Найти все слова, начинающиеся со слога, заданного в поле компонента EDIT1. Сформировать из этих слов строку ST и вывести ее в компонент LABEL1.
Из текстового файла D:\SV\M1.TXT считать матрицу 5х5. Умножить ее на число, введенное в поле компонента EDIT1, и вывести полученную матрицу в компонент STRINGGRID1.