Delphi. Форма, компоненты Button и Memo
Рисование линий и прямоугольников в Delphi. Компоненты Image, OpenPictureDialog, SavePictureDialog. Создание и сохранение текстовой информации. Редактирование, изменение стиля, сохранение и поиск текста. Компоненты ListBox, ComboBox, StringGrid.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 16.10.2014 |
Размер файла | 2,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Лабораторная работа №1. Delphi. Форма, компоненты Button и Memo
Запустим Delphi. Перед нами четыре окна Delphi. Вверху во вcю ширину экрана окно управления проектом и средой разработки - главное окно Delphi.
delphi рисование текстовый listbox
При его сворачивании сворачиваются и все остальные. Слева - Инспектор объектов. В нём задаются свойства составляющих нашу программу компонентов. И наконец, в центре одно над другим два окна Delphi, окно формы будущей программы и окно программной начинки. Прямо перед нами - окно, которое в Delphi называется Форма. Именно Форма является визуальным прообразом нашей будущей программы. Теперь посмотрите, как легко получается программа в Delphi:
1. Наводим мышку на зелёный треугольник-стрелку на главном окне
2. Смотрим - всплывает подсказка "Run"
3. Нажимаем на эту кнопку
4. Получаем готовую Windows-программу
По умолчанию программа создаётся в папке C:\Program Files\Borland\Delphi7\Projects:
Мы получили программу, состоящую из одного пустого окна. Тем не менее наша программа имеет все атрибуты, присущие всем программам в Windows: заголовок, системное меню (кликните по левому краю заголовка), кнопки свернуть, развернуть, закрыть, может менять свои размеры.
Закройте программу-Форму. Рассмотрим полезные для нас свойства Формы:
1. Надпись на заголовке - свойство Caption. Сейчас это Form1, и совпадает со свойством Name. В инспекторе объектов можно поменять их по своему усмотрению. Напишите в свойстве Caption, например, "Простейшая программа"
2. Цвет - свойство Color.
3. Размеры - ширина и высота в пикселах, свойства Width и Height. Изменяем их мышкой, двигая края Формы, затем устанавливаем более точные значения в Инспекторе.
4. Положение на экране - свойства Top и Let. Это расстояния в пикселах от верхней и левой границы экрана соответственно. Если необходимое положение Формы закрывает элементы управления Delphi, просто сверните её.
5. Свойство Position, с помощью которого можно настроить автоматическое появление Формы в нужном месте. Разверните выпадающий список:
o При значении poDesigned Форма появится в том месте, где она находилась при проектировании. Это значение по умолчанию.
o При значениях poDesktopCenter и poScreenCenter Форма появится в центре рабочего стола или центре экрана.
Форма может быть вызвана из другого окна-формы. Тогда при значениях
o poMainFormCenter она появится в центре главного окна приложения,
o poOwnerFormCenter - в центре вызывающего окна, так называемого "владельца".
Не у всех окон в заголовке есть кнопки свернуть, развернуть, закрыть.
6. Свойство BorderIcons. В Инспекторе слева от него маленький плюсик, открывающий признак наличия или отсутствия нужной кнопки. True - кнопка будет, False - нет.
Смело экспериментируйте, но изменения будут видны только в работающей программе, а не в прототипе.
Вы можете управлять также границами Формы. Для этого служит
7. Свойство BorderStyle. При значении
o bsSizeable - обычная Форма, значение по умолчанию.
o bsNone - Форма вообще не будет иметь границ, включая строку заголовка.
o bsSingle - Форма не может менять размеры, но может свернуться или развернуться.
Таким образом, комбинируя свойства BorderIcons и BorderStyle можно, например, получить форму с неизменными размерами и без возможности свернуться и развернуться:
В пустой форме смысла нет. Наполнить её содержанием помогут компоненты Delphi. Они располагаются на соответствующих вкладках палитры компонентов на главном окне. Все основные компоненты Delphi находятся на первых четырёх вкладках:
· Standard,
· Additional,
· Win32,
· System.
Их названия всплывают в виде подсказок при наведении мышки на пиктограммы. Чтобы перенести компонент на форму, нужно щёлкнуть его мышкой (при этом выбранный компонент выделяется), и затем щёлкнуть в том месте формы, где его предполагается разместить. В дальнейшем компоненты можно свободно перетаскивать по форме мышкой, "конструируя" нужный интерфейс.
Есть соответствующие справочники, где рассматриваются все компоненты Delphi. Но самые важные свойства компонентов Delphi и работу с ними мы рассмотрим. Рассмотрим компоненты отображения текста. Создайте новый проект (File -" New -" Application), и перенесите на форму компоненты Label, Edit, Memo и Button. Выбирая одним щелчком мышки или клавишей Tab нужный компонент, в Инспекторе Объектов мы можем получить доступ к его свойствам.
Прежде всего, у визуальных компонентов есть свойства, определяющие их положение на Форме:
· Ширина компонента, Width
· Высота компонента, Height
· Расстояние до левого края формы, Left
· Расстояние до верхнего края формы, Top
Эти свойства получают значения в тот момент, когда компоненты попадают на форму. Примерно разместив на форме компоненты с помощью мышки, в Инспекторе объектов устанавливаем их точные размеры и координаты.
За визуальное представление отвечают для компонентов:
· Label и Button - свойство Caption,
· Edit - свойство Text,
· Memo - свойство Lines.
При "конструировании" формы в Инспекторе объектов можно придать свойствам компонентов любые значения. Теперь "запустите" программу (зелёная стрелка или F9). Видим, что компоненты "работают". Label является надписью (меткой) на форме, Button кнопка нажимается, Edit - строка ввода и Memo - многострочный текстовый редактор позволяют вводить текст.
Теперь напишем программу. Она будет по нажатию кнопки отображать на форме то, что мы введём в строке ввода. Начните новый проект (File => New => Application).
1. Расположите на форме компонент Edit (строка ввода). Свойство Text очистите.
2. Далее - компонент Button (кнопка). В свойстве Caption напишите, например, "показать".
3. Затем - компонент Label (метка). В свойстве Font для наглядности сделайте размер побольше, например 24, выберите шрифт и цвет. Свойство Caption также очистите.
4. Щёлкните дважды по нашей кнопке. Произошло изменение. Мы оказались в окне модуля, где система Delphi создала для нас заготовку обработчика события нажатия на кнопку.
5. В обработчике пишите: Label1 и поставьте точку. Подождите секунду после ввода точки, выведется подсказка. Система Delphi предлагает нам выбрать из списка нужное свойство или метод. Нажмите "C", и строка "Caption" станет выделенной. Delphi пытается угадать, что мы хотим ввести. Дальше писать не обязятельно, достаточно нажать Enter.
6. В результате получим: Label1.Caption. Таким образом мы видим, что точкой разделяются в Delphi объект и его свойства. Указанием на объект служит его имя (свойство Name). Имя компонента можно посмотреть в Инспекторе Объектов, а также наведя мышку на компонент и дождавшись появления подсказки.
7. Далее присваиваем свойству Caption объекта Label1 значение. Оператор присваивания: := Двоеточие перед знаком равенства обязательно!!!
8. Получаем: Label1.Caption:=
9. Пишем именно то, что мы хотим отобразить в метке - свойство Text объекта Edit1: Edit1.Text
10. Далее то, чем завершается любая команда - оператор ";".
Вот что у нас получилось между begin и end: Label1.Caption := Edit1.Text;
Сохраним и запустим программу.
Лабораторная работа №2. Delphi. Формы. Рисование линий и прямоугольников
В данном уроке научимся работать с Canvas. Что это такое? Если перевести это слова на русский язык то получится, что это холст, канва. Canvas представляет из себя область компонента, на которой можно создавать, хранить и модифицировать графическое изображение.
У формы есть свойство Canvas. Такое же свойство есть и у TImage. Следовательно можно нарисовать начиная от простой точки до овала и вывода текста. Давайте попробуем нарисовать прямую линию из точки А в точку Б. Выложите на форму кнопку и в обработчике onClick пишем:
Form1.Canvas.MoveTo(0,0); Form1.Canvas.LineTo(100,100);
Что есть что? MoveTo - это из каких координат начинать рисовать линию, можно сказать это начало линии. А LineTo соответственно конец линии.
Изменим цвет линии. Перед тем как начинать рисовать напишем:
Form1.Canvas.Pen.Color := clRed;
У канвы есть свойство Pen. С его помощю можно поменять толщину (Width), цвет (Color), стиль (Style) и многое другое.
Теперь нарисуем прямоугольник:
Form1.Canvas.Rectangle(0,0,100,50);
Координаты думаю понятны. Первые две указывают левый верхний угол, еще две - правый нижний угол прямоугольника.
Нарисовать-то нарисовали, цвет рамки поменять сможем (pen), а вот как поменять цвет заливки фигуры - свойство Brush (заливка). Поменяем цвет заливки квадрата на зеленый, для этого перед тем как рисуем сам прямоугольник напишем:
Form1.Canvas.Brush.Color:=clGreen;
Помимо этого можно сделать чтобы заливка была не сплошной а узором. Для этого перед рисованием прямоугольника делаем:
Form1.Canvas.Brush.Style:=bsDiagCross;
Чтобы было проще разобраться с Pen и Brush выложите на форму TShape и у него найдите эти свойства. Поэкспериментируйте и поглядите как меняется компонент. И уже исходя из этих знаний можно все это сделать программно, просто в коде обратиться к изменяемым свойствам.
Помимо прямоугольников можно рисовать эллипсы:
Form1.Canvas.Ellipse(0,0,100,50);
Ну и напоследок как один пиксель сделать определенного цвета:
Form1.Canvas.Pixels[10,10]:=clRed;
В данном случае цвет красный.
Лабораторная работа №3. Delphi. Рисование графиков
Генератор колебаний. Пример. У формы и у компонента PaintBox (страница System палитры компонентов) есть свойство Canvas. Это свойство представляет собой растровое изображение, на котором можно рисовать или в которое можно загрузить рисунок. Я не буду рассказывать подробно об особенностях рисования, тем более что я в этом не силен, но основные сведения дам.
Свойство Canvas доступно только во время работы приложения и с помощью его можно:
· Canvas.Brush - свойство фона. У него можно установить свойство Canvas.Brush.Color в необходимый цвет и с помощью следующей за ней командой Canvas.FillRect(ClientRect) можно очистить всю рабочую область компонента под заданный цвет. С помощью свойтва Canvas.Brush можно в качестве фона установить рисунок. Для этого есть свойство Canvas.Brush.Bitmap, которому нужно присваивать переменную с растровым рисунком.
· Canvas.MoveTo(x,y) - устанавливает перо в заданную точку, где x и y - координаты точки, относительно компонента. Начало координат, точка [0,0] находится в верхнем левом углу. После этой команды перо установлено, но точка не нарисована. Чтобы провести линию от текущего положения пера до заданного Canvas.LineTo(x,y). Поставить точку определенного цвета на холсте Canvas.Pixels[x,y]:=ЦВЕТ_ТОЧКИ.
· Через Canvas можно писать текст, рисовать дуги, сектор круга, овал, прямоугольник, ломаную линию, кривую.
· Свойства пера содержатся в Canvas.Pen. Здесь можно задать толщину пера Canvas.Pen.Width:=ТОЛЩИНА_В_ТОЧКАХ. Задать цвет Canvas.Pen.Color:=ЦВЕТ.
Рассмотрим пример генератора колебаний/ Генератор сам по себе есть только на экране. Колебания, которые он создает, рассчитываются по формуле.
Следовательно, он вам может оказаться полезным. Можно изменить рассчетную функцию и вы получите для этой функции график. Даю основные сведения, которые вам понадобятся при самостоятельном написании этой программы.
1. Программа имеет только одно окно Form1, у которого сразу переименовываем заголовок на подходящее название.
2. Устанавливаем свойство Form1.Position в poDesktopCenter, чтобы окно при каждом запуске и при любом экранном разрешении всегда было ровно посередине экрана.
3. Устанавливаем свойство Form1.BorderStyle в bsSingle, для неизменяемого размера окна. Оставляем во вложенных свойствах BorderIcons только biSystemMenu в true, остальные в false. Это для того, чтобы окно нельзя было свернуть в значек, развернуть во весь экран и окно имело иконку в заголовке.
4. Устанавливаем в форму компонент PaintBox, два компонента RadioButton, CheckBox, три кнопки Button и TrackBar, расположенный на странице Win32.
5. RadioButton1.Caption переименовываем в "Sin". Этот флаг будет признаком рисования синусоиды. RadioButton2.Caption переименовываем в "Cos" - косинусоида. Начальное значение флага Checked для RadioButton1 в true.
6. CheckBox1.Caption переименовываем в "Все". Если флаг установлен, то будет рисоваться два графика.
7. Названия кнопок Button1 - "Старт", Button2 - "Стоп (пауза)" и Button3 - "Выход". Названия на кнопках меняются через свойство Caption. Теперь назначение этих кнопок понятно.
8. Компонент TrackBar1 свойство минимального значения Min устанавливаем в 1, максимальное значение Max - 50.
9. PaintBox1, на котором будет непосредственно рисоваться график размеры высоты Height=140, ширина Width=500. Привдим текст модуля для окна Form1. Сразу после слова implementation в модуле окна объявляем глобальные переменные, которые будут доступны из любой процедуры в этом модуле.
Var stop:boolean; // признак рисования
x:Integer; // координата оси X
Реакция на событие нажатия на кнопку Button1 (Начало рисования)
Procedure TForm1.Button1Click(Sender: TObject);
Var y:Integer; // ось Y
begin
if x=0 then //если точка в начале координат, то:
begin
PaintBox1.Canvas.Brush.Color:=clWhite; // цвет фона белый
PaintBox1.Canvas.FillRect(ClientRect); // заливка всей рабочей области
end;
stop:=false; // флаг старта процесса рисования
While not stop do // бесконечный цикл, пока флаг остановки не поднят:
begin
if (RadioButton1.Checked)or(CheckBox1.Checked) then // если установлен "Sin" или "Все", то:
begin
y:=Round(Sin(pi*x/100)*50)+70; // вычисление положения синусоиды
PaintBox1.Canvas.Pixels[x,y]:=clBlack; // нарисовать черную точку
end;
if (RadioButton2.Checked)or(CheckBox1.Checked) then // если установлен "Cos" или "Все", то:
begin
y:=Round(Cos(pi*x/100)*50)+70; // вычисление положения косинусоиды
PaintBox1.Canvas.Pixels[x,y]:=clBlack; // нарисовать черную точку
end;
inc(x); // увеличить значение X на едицину. Аналог X:=X+1
if x>500 then // если X вышел за пределы PaintBox1, то:
begin
x:=0; // установить X на начало координат
PaintBox1.Canvas.Brush.Color:=clWhite; // Цвет фона белый
PaintBox1.Canvas.FillRect(ClientRect); // Очистка рабочей области PaintBox1
end;
Sleep(TrackBar1.Position); // Процедура "засыпает" на заданное время в миллисекундах
Application.ProcessMessages; // Обработка всей очереди сообщений
end;
end;
Коротко расскажем о работе этой процедуры. Как только нажата кнопка "Старт" Компонент PaintBox1 очищается и начинается бесконечный цикл While, выйти из которого можно только, пока переменная Stop не примет значение true. Это можно сделать кнопкой Button2, соответствующая процедура которой обработается во время Application.ProcessMessages. С помощью бегунка TrackBar1 можно менять скорость рисования кривой. Этот параметр передается в команду Sleep.
Процедура нажатия на кнопку остановки Button2:
procedure TForm1.Button2Click(Sender: TObject);
begin
Stop:=true; // установить флаг остановки процесса рисования
end;
Процедура создания окна Form1OnCreate:
procedure TForm1.FormCreate(Sender: TObject);
begin
x:=0; // начальное значение X
end;
Если нажата кнопка "Выход", то реакция на это событие будет таким:
procedure TForm1.Button3Click(Sender: TObject);
begin
Close; // закрыть окно
end;
И реакция перед закрытием окна OnClose. Без этой процедуры, если рисование включено, то окно не закроется.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Stop:=true; // остановить (если включен) цикл рисования
end;
После запуска программы, установки флажка "Все" и нажатии на кнопку "Старт" на экране отобразится этот график:
В принципе, с нашей программой можно отслеживать практически любые функции. Просто надо описать свою отслеживаемую функцию вместо моих строк Y:=Sin...
Если вы хотите убрать постоянную прорисовку графика функции, то следующий код в программе
if x>500 then // если X вышел за пределы PaintBox1, то:
begin
x:=0; // установить X на начало координат
PaintBox1.Canvas.Brush.Color:=clWhite; // Цвет фона белый
PaintBox1.Canvas.FillRect(ClientRect); // Очистка рабочей области PaintBox1
end;
измените на:
if x>500 then // если X вышел за пределы PaintBox1, то:
begin
x:=0; // установить X на начало координат
Stop:=true; // остановка рисования
end;
Напомним, что график функции вы видите перевернутым. Начало координат в мониторе находится в верхнем левом углу. Математики тут найдут выход. Для переворачивания функции нужно от значения рабочей высоты элемента, на котором рисуем, вычитать значение функции Y:=140 - ФУНКЦИЯ;
Как видите, поле для экспериментов велико.
Лабораторная работа №4. Delphi. Компоненты Image, OpenPictureDialog, SavePictureDialog. Рисование и сохранение графической информации
Создадим новое приложение показывающей работу в Delphi 7, позволяющее пользователю рисовать на холсте, выбирая ширину и цвет линии, и возможность сохранять результаты своей работы в файле как точечный рисунок. Рисовать будем не на всей поверхности окна(Form1.Canvas), а на холсте специально отведённого для размещения рисунка компонента Image(Image1.Canvas). Для этого запускаем нашу программу Delphi 7 и добавляем на форму следующие компоненты (см. рис.):
· 3 кнопки - Button;
· ColorDialog - диалог выбора цвета;
· SavePictureDialog - диалог сохранения рисунка;
· Image - компонент для размещеия, рисования рисунка;
· Label - компонент для надписи
· UpDown - компонент с помощью которого будем устанавливать толщину линии (находится на вкладке Win32).
События компонентов в приложении простого графического редактора:
· Form1.OnCreate;
· Image1MouseMove , Image1MouseDown;
· UpDown1: OnClick;
· Button1, Button2, Button3: OnClick.
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption:= 'Простейший редактор графики';
Label1.Caption:= 'Толщина линии: 1';
Button1.Caption:= '&Цвет';
Button2.Caption:= '&Стереть';
Button3.Caption:= '&Сохранить';
Image1.Canvas.Brush.Color:= clWhite;
// Над холстом указатель мыши имеет другую форму
Image1.Cursor:=crCross;
UpDown1.Min:=1;
UpDown1.Max:=20;
SavePictureDialog1.DefaultExt:= 'bmp';
end;
Рисование происходит при нажатии левой кнопки мыши (событие On MouseDown) точка, над которой была нажата кнопка, фиксируется, то есть назначается текущим положением пера (метод Canvas.MoveTo). После этого любое перемещение мыши (событие OnMouseMove) проводит линию от текущего положения пера до нового положения указателя мыши, и текущей позицией становится эта новая точка (метод Canvas.LineTo). Так происходит до тех пор, пока остаётся нажатой левая кнопка мыши.
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Begin
//Протаскивание мыши при нажатой левой кнопке
if (ssLeft in Shift) then
//проводит линию от текущей позиции пера до точки,
//над которой находится указатель мыши
Image1.Canvas.LineTo(X,Y);
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Begin
// при нажатии левой кнопки мыши
// текущей позицией пера становится точка. Над
// которой находится указатель мыши
Image1.Canvas.MoveTo(X,Y);
end;
Компонент UpDown служит для выбора ширины пера. Выбранную ширину мы отображаем в надписи Label1:
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
//Устанавливаем ширину линии, выбранную в UpDown
Image1.Canvas.Pen.Width := UpDown1.Position;
Label1.Caption:= 'Толщина линии:' +IntToStr(UpDown1.Position);
end;
При выборе цвета ColorDialog пользователь закрывает окно нажатием кнопки OK, то скопируем значение свойства Color объекта ColorDialog1в одноимённое свойство пера:
procedure TForm1.Button1Click(Sender: TObject);
begin
//открываем диалог выбора цвета
if ColorDialog1.Execute then
Image1.Canvas.Pen.Color := ColorDialog1.Color;
end;
Для того чтобы стереть рисунок закрашиваем весь холст цветом фона - белым:
procedure TForm1.Button2Click(Sender: TObject);
begin
//устанавливаем белый цвет кисти
Image1.Canvas.Brush.Color:= clWhite;
//закрашиваем всё окно текущим цветом
Image1.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height));
end;
Процесс сохранения рисунка выполняет следующая процедура:
procedure TForm1.Button3Click(Sender: TObject);
var
Img:TBitmap;
Region: TRect; begin
if SavePictureDialog1.Execute then
// выделяем память для вспомогательной переменной
Img:= TBitmap.Create;
Try
Img.Width:= Image1.Width;
Img.Height:= Image1.Height;
Region := Rect(0, 0, Img.Width,Img.Height);
// копируем содержимое
Image во вспомогательную переменную
Img.Canvas.CopyRect(Region ,Image1.Canvas, Region );
// сохраняем вспомогательную переменную в файле
Img.SaveToFile(SavePictureDialog1.FileName);
finally // освобождаем память Img.Free;
end;
end;
end.
И так процесс создания программы для демонстрации работы в Delphi 7 графика мы завершили. Так будет выглядеть приложение после работы с простейшим редактором графики:
На основе вышеописанного, самостоятельно создайте кнопку, которая загрузит в форму любую картинку из компьютера (соответственно за открытие картинки отвечает диалог OpenPictureDialog).
Лабораторная работа №5. Delphi. Компоненты MainMenu, Memo
Создание и сохранение текстовой информации
1. Создание макета формы.
Запустите Turbo Delphi, (или если Turbo Delphi уже запущена) введите команду File\New\VCL Forms Application - Delphi for Win32
Макет формы представляет образ формы в интегрированной среде разработки программы с размещенными на ней компонентами.
Компонентом называют размещаемый на макете формы имеющий образ объект, а также соответствующий значок в Палитре компонентов, предоставляющий определённые функциональные возможности для разрабатываемой программы. Предописанные компоненты Delphi представляют классы, имеющие такие же имена, но с префиксом T. Например, компонент Memo - многострочный текстовый редактор класса TMemo позволяет хранить строки текста, отображать их в своём окне, иметь полосы прокрутки, выделять фрагменты текста и работать в выделенными фрагментами и т.д.
1.1. Разместите на форме компонент Memo1 - многострочный редактор текста: на панели инструментов Standard щелкните на значке TMemo, а затем щелчком на форме, буксировкой и перетаскиванием маркеров придайте ему такие размеры и положение, чтобы осталось сверху место для размещения других компонентов.
1.2. Разместите на форме значок MainMenu1: на панели инструментов Standard щелкните на значке MainMenu, а затем на свободном месте на форме. Этот компонени будет использован для создания на форме строки меню с подменю.
Рис. 1. Макет формы с элементами управления
1.3. Аналогично, используя панель инструментов Dialogs, разместите на форме значки OpenDialog1 - окна диалога выбора открываемого файла, SaveDialog1 - окна диалога выбора файла для сохранения редактируемого текста.
1.4. Выполните программу, убедитесь в том, что невизуальные компоненты - значки меню и диалогов не отображаются на форме, а в остальном вид формы полностью соотетствует её макету.
- Создание макета формы начинается с размещения на ней компонентов, позволяющих реализовать некоторые функции разрабатываемой программы. Компоненты представлены значками в Палитре компонентов, сгруппированными на вкладках по специфике применения. Для размещения компонента на макете формы следует щелкнуть его значок на вкладке Палитры компонентов, а затем щелкнуть на макете формы.
- После размещения компонентов на форме буксировкой можно придать форме и компонентам необходимые положение и размеры.
Рис. 2. Конструктор меню
- Некоторые компоненты не отображаются на форме во время работы программы и их размещение на макете формы определяется лишь удобством разработки программы. В рассматриевом примере такими компонентами являются все, кроме Memo1.
- Визуальными компонентами называют те, которые имеют окна, то есть могут быть видимыми при работе программы. Например, компоненты Memo, Label, Edit.
- Невизуальными компонентами называют такие, которые не имеют на форме соответствующих значкам образов при работе программы. Например, компоненты, представляющие окна диалога.
Рис. 3. Дерево объектов: форма и подчиненные ей объекты
Рис. 4. Вкладка Properties Инсперктора объектов после добавления пункта меню Создать.
Рис. 5. Вкладка Events Инсперктора объектов. После создания шаблона обработчика щелчка на пункте меню Создать.
2. Создание структуры меню.
2.1.
Двойным щелчком на значке MainMenu1 откройте Конструктор меню (см. рис. 2), дайте первому пункту строки меню название Файл, а первому пункту его подменю название Создать.
Справка. Чтобы добавить пункт меню/подменю, следует щелчком выделить свободную рамку в Конструкторе меню, набрать текст названия пункта меню в строке Caption окнаИнспектора объектов - Object Inspector на вкладке Properties (см. рис. 4) и нажать клавишу Enter. Если это название набрано русскими буквами, то именем пункта меню, используемым в программе, будет имя вида N<число>. Например, для первого пункта меню - N1, для второго - N2, и так далее.
Форма и расположеные на ней компоненты образуют иерархическю структуру, отображаемую в окне Дерева объектов (окне Structure). Для выполняемого задания её вид представлен на рис. 3.
3. Создание заглушек обработчиков событий.
Обработчик события - это метод, автоматически вызываемый при наступлении события, связанного с формой или компонентом и имеющий в программе определенную функцию, то есть выполняющий определённую работу в соответствующей ситуации. Например, обработчик щелчка на пункта меню Файл/Открыть… должен, в частности, обеспечить диалог по выбору файла и загрузку его текста в поле многострочного редактора (TMemo).
Шаблоном обработчика события будем называть конструкцию, состоящую только из заголовка метода и операторных скобок. Шаблон создётся автоматически, например, при двойном щелчке в поле, соответствующем событию формы или компонента, на вкладке События Инспектора объектов. Одновременно в объявление класса TForm1 добавляется заголовок метода.
Заглушкой обработчика события будем называть его шаблон, дополненный комментариями и\или объявлениями и операторами, но не выполняющий полностью требуемых функций обработчика события.
3.1. Для пункта меню Создать двойным щелчком в строке OnClick на вкладке Events в окне Инспектора объектов (см. рис. 5) или двойным щелчком на строке Создать {N2} в дереве объектов создайте шаблон обработчика события - щелчка на пункте меню Создать во время исполнения программы, и превратите его в заглушку, добавив комментарий
procedure TForm1.N2Click(Sender: TObject);
begin
//Обработчик щелчка на пункте меню ФАЙЛ.СОЗДАТЬ
end;
Справка. Если не добавить что-либо в шаблон обработчика события, то он и соответствующий заголовок метода в объявлении класса TForm1 будут удалены из текста программы при её подготовке к выполнению.
3.2. Аналогично, снабдив соответствующими комментариями, создайте заглушки обработчиков событий - щелчков на всех пунктах подменю строки меню.
3.3. Аналогично, снабдив соответствующим комментарием, создайте заглушку обработчика события - создания формы, шаблон которого можно получить так: щелкнуть на свободном месте макета формы и в Инсперторе объектов на вкладке Events сделать двойной щелчок в строке OnCreate.
После добавления на форму управляющих элементов и заглушек обработчиков событий объявление класса формы TForm1 примет вид
type
TForm1 = class(TForm)
Memo1: TMemo;
MainMenu1: TMainMenu;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
4. Добавление переменных, представляющих текущее состояние процесса обработки данных.
procedure TForm1.FormCreate(Sender: TObject);
begin
//Обработчик события СОЗДАНИЯ ФОРМЫ
//При создании формы удалить текст из
//Memo1 - рабочей области редактора
Memo1.Clear;
//заполнить рабочей областью редактора
//(то есть развернуть элемент Memo1 во)
//всю клиентскую область окна формы
Memo1.Align:=alClient;
procedure TForm1.N6Click(Sender: TObject);
begin
//Обработчик щелчка на пункте меню ФАЙЛ.СОХРАНИТЬ КАК...
//Открытие окна диалога для выбора папки и
//задания имени и типа файла, в котором следует
//сохранить текст из Memo1-рабочей области редактора
if Form1.SaveDialog1.Execute then begin
//Если файл выбран,
//то S присвоить спецификацию файла,
S:=SaveDialog1.FileName;
Справка. Эти переменные используются разными методами и их объявление можно дать либо внутри объявления класса, либо в разделе var в интерфейсной части, либо в разделе var в части реализации.
4.1. Добавьте в раздел реализации объявление переменной S:string. Она должна представлять спецификацию файла, обрабатываемого в текущий момент. Её пустое значение будет обозначать, что текст из элемента Memo1 еще не сохранен в файле.
5. Создание обработчиков событий.
5.1. Добавьте в метод procedure TForm1.FormCreate(Sender: TObject) обработки события FormCreate операторы и комментарии, как на рис.8.
5.2. Создайте обработчик procedure TForm1.N6Click(Sender: TObject) события щелчка на пункте меню Файл\Сохранить как…, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, как на рис. 9.
Для проверки работы. Запустите программу, наберите в поле Memo1 строки Иванов…. 5 5 5 и Медоватов. 4 4 5 (фамилии дополнены точками до 10 символов) и сохраните этот текст в текущей папке в файле F1.txt. Затем откройте этот файл на новой вкладке с именем F1.txt окна редактора текстов Delphi следующим образом: введите команду Файл/Открыть…, в появившемся окне диалога Open выберите в раскрывающемся списке Тип файлов: строку Any file(*.*), в списке файлов выберите F1 и щелкните на кнопке Открыть. В дальнейшем, если будет выполняться сохранение в файле, в среде Delphi будет появляться сообщение, предлагающее обновить текст на вкладке F1.txt.
5.3. Создайте самостоятельно обработчик procedure TForm1.N5Click(Sender: TObject) события щелчка на пункте меню Файл\Сохранить, имея в виду следующее: если текст ещё не сохранялся в файле, точнее, если S='', то следует вызвать N6Click(Self) - обработчик, созданный для пункта меню Файл.Сохранить как… в предыдущем пункте задания, иначе - просто выполнив оператор Memo1.Lines.SaveToFile(S) - сохранение всего редактируемого текста в файле со спецификацией, хранящейся в S.
procedure TForm1.N3Click(Sender: TObject);
begin
//Обработчик щелчка на пункте меню ФАЙЛ.ОТКРЫТЬ...
if Memo1.Modified then begin //если текст Memo1 был
// изменён, то предложить диалог для выбора файла
case MessageDlg('Текст был изменен. Сохранить данные'+
' в файле по выбору?', mtConfirmation,
[mbYes, mbNo, mbCancel], 0) of
6{idYes}: begin // сохранить текст в файле, выбрав его
//в диалоге ФАЙЛ.СОХРАНИТЬ КАК...
N6Click(Self);
//перейти к диалогу ФАЙЛ.ОТКРЫТЬ
end;
{2}idCancel: exit;//выйти из диалога ФАЙЛ.ОТКРЫТЬ
//в редактор без сохранения
{7}idNo:;//не сохранять текст в файле и
5.4. Создайте обработчик procedure TForm1.N3Click(Sender: TObject) события щелчка на пункте меню Файл\Открыть…, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, имея в виду следующее.
5.4.1. Если редактируемый текст не был изменён (Memo1. Modified ложно), то сразу перейти к диалогу открытия файла, иначе следует предложить пользователю разрабатываемой программы выбрать в диалоге (см. справку по функции MessageDlg) вариант продолжения работы с измененным текстом:
- I) или сохранить его в файле по выбору, вызвав N6Click(Self) и затем открыть новый файл;
- II) или не сохранять текст и открыть новый файл;
- III) или отменить выполнение команды, выйдя из метода по exit и продолжить редактирование текста, как если бы команда открытия файла вообще не вводилась.
(см. текст обработчика рис. 10).
5.4.2. Диалог для выбора открываемого файла запускается командой OpenDialog1.Execute (см справку по классу TOpenDialog). Если открываемый файл не был выбран (в окне диалога Открыть была нажата кнопка Отмена), то следует просто выйти из обработчика (вернуться к редактированию прежнего текста), иначе следует загрузить выбранный файл на редактирование, переменной S присвоить спецификацию этого файла и отобразить её в заголовке окна форма, а также свойству Memo1.Modified присвоить значение false - признак того, что загруженный на редактирование текст не изменён.
5.5. Создайте самостоятельно обработчик procedure TForm1.N7Click(Sender: TObject) события щелчка на пункте меню Файл. Выход, для чего сделайте двойной щелчок на соответствующей строке дерева объектов и в появившейся заглушке добавьте операторы и комментарии, имея в виду следующее. Если редактируемый текст не был изменён (Memo1.Modified ложно), то сразу завершите работу программы оператором close, иначе следует предложить пользователю разрабатываемой программы выбрать в диалоге (см. справку по функции MessageDlg) вариант продолжения работы с измененным текстом:
- I) или сохранить его в файле (пользователь нажал кнопку Yes) по выбору, вызвав N6Click(Self) и затем завершитm работу программы;
- II) или не сохранять текст (пользователь нажал кнопку No) и завершить работу программы;
- III) или отменить выполнение команды (пользователь нажал кнопку Cancel), выйдя из метода по exit и продолжить редактирование текста, как если бы команда завершить работу программы вообще не вводилась.
При выполнении этого пункта задания используя вкладки Index или Search справочной системы Turbo Delpi сначала следует найти справку по функции MessageDlg, затем - допустимые значения её параметров из числа стандартных. Например, вызов функции
MessageDLG('Сохранить файл?',mtInformation,[mbCancel,mbYes,mbNo],0)
обеспечит диалог вида
Лабораторная работа №6. Delphi. Компоненты диалога, RichEdit. Создание, редактирование, изменение стиля, сохранение и поиск текстовой информации
1. Меню
Сейчас мы напишем несложный текстовый редактор, причем будем стараться максимально использовать готовые возможности Delphi и писать минимум кода.
· Создайте новый проект с формой и сохраните его в папке Редактор под именем Editor.bdsproj. Измените заголовок формы на "Текстовый редактор".
В качестве поля для ввода текста применим компонент TRichEdit из группы Win32, который позволяет редактировать и сохранять документы в формате RTF (Rich Text Format, расширенный текстовый формат).
· Добавьте на форму компонент TRichEdit, присвойте ему имя Editor и установите выравнивание alClient.
В редакторе TRichEdit можно обращаться к каждой строке текста через список строк Lines. Например, Editor.Lines.Count -- это число строк, Editor.Lines[0] -- самая верхняя строка, в Editor.Lines[Editor.Lines.Count-1] -- самая последняя. Чтобы у окна редактора были полосы прокрутки, нужно изменить свойство ScrollBars. По умолчанию оно равно ssNone (нет полос прокрутки), кроме этого возможны значения ssVertical (только вертикальная), ssHorizontal (только горизонтальная) и ssBoth (обе).
· Очистите поле ввода, удалив все строки из свойства Lines. Установите свойство ScrollBars равным ssBoth.
· Если вам нужен простейший текстовый редактор (как Блокнот), который не позволяет менять шрифт и форматировать абзацы, можно использовать компонент TMemo. Основные приемы работы с ним такие же, как и с TRichEdit.
· Добавьте на форму компонент TMainMenu. Для первого пункта введите имя FileMenu (свойство Name)' и текст Файл (свойство Caption).
Если теперь щелкнуть на окне редактора меню, вы увидите новый пустой пункт верхнего меню и пустой пункт подменю. Их свойства настраиваются точно также. Если вместо текста написать знак "минус", в меню будет линия-разделитель.
Свойство ShortCut -- это сочетание клавиш, которое воспринимается программой как выбор этого элемента меню (при этом в меню вообще не нужно заходить!). Например, сочетание Ctrl+N обычно используется для создания нового документа. Для этого нужно записать в значение свойства ShortCut текст "Ctrl+N".
Добавьте подпункты выпадающего меню Файл:
Создать (имя NewMI, клавиши Ctrl+N)
Открыть (имя OpenMI, клавиши Ctrl+O)
Сохранить (имя SaveMI, клавиши Ctrl+S)
линия-разделитель
Выход (имя ExitMI, клавиши Ctrl+Q).
При выборе элемента меню (любым способом) возникает событие OnClick, для которого можно назначить обработчик. Например, при выборе пункта Выход нужно закрыть форму (и завершить работу программы):
Close;
В данном случае вызывается метод Close формы. Поскольку этот вызов стоит в методе самой формы, имя формы указывать не нужно, хотя, в принципе, можно было бы написать Form1.Close.
При создании нового файла нужно очистить все строки редактора:
Editor.Lines.Clear;
· Назначьте обработчики события OnClick для пунктов Выход и Создать. Запустите программу и проверьте работу меню.
2. Работа с файлами
Открытие и сохранение файла сделаем с помощью стандартных диалогов TOpenDialog и TSaveDialog (вспомните аналогичные диалоговые окна TOpenPictureDialog и TSavePictureDialog, которые мы использовали в графическом редакторе).
· Добавьте на форму компоненты TOpenDialog и TSaveDialog. В обработчиках события onClick соответствующих пунктов меню организуйте загрузку и сохранение файлов с расширением RTF так же, как и для рисунков (не забудьте задать свойства DefaultExt, Filter и Title у диалогов). Открыть:
if OpenDialog1.Execute then
Editor.Lines.LoadFromFile(OpenDialog1.FileName);
Сохранить
if SaveDialog1.Execute then
Editor.Lines.SaveToFile(SaveDialog1.FileName);
3. Шаблоны и действия
Если нажать правую кнопку мыши в редакторе меню, мы увидим список всех команд в контекстном меню:
Простейшие операции -- вставка нового пункта (клавиша Insert) и удаление текущего (Delete). Если нажать Ctrl+"вправо", добавляется подменю (сейчас эта возможность неприменима). Пункт Select menu позволяет выбрать нужное меню, если такой компонент на форме не один.
Несколько элементов контекстного меню включают слово Template -- шаблон, заготовка. В Delphi есть готовые шаблоны, которые можно использовать и свободно настраивать для каждого случая.
· Вызовите редактор меню и выберите пункт Insert from Template из контекстного меню.
Вы увидите список всех встроенных шаблонов:
Можно догадаться, что для меню Файл (File) и Правка (Edit) уже есть готовые шаблоны, правда, на английском языке. Что касается меню Файл, оно у нас уже готово и настроено, а вот меню Правка мы добавим из шаблона.
· Добавьте из шаблона меню Правка (Edit menu). Если оно оказалось слева от меню Файл, перетащите его мышкой в нужное место. Удалите все лишние элементы кроме Undo (Отмена), Cut (Вырезать), Copy (Копировать) и Paste (Вставить). Измените название Edit на русский вариант Правка.
Теперь можно заменить все английские названия на русские и построить обработчики для каждого пункта меню.
В Delphi существуют так называемые действия (Actions) -- невидимые компоненты специального типа, которые выполняют стандартные операции, например, работают с буфером обмена. Для работы с такими действиями мы будем использовать компонент TActionList (список действий) из группы Standard.
· Добавьте на форму компонент TActionList. Вызовите его редактор двойным щелчком мыши.
Вы увидите, что список действий, который используются в программе, пуст -- ведь мы ничего не добавляли.
Щелкните по стрелке справа от единственной активной кнопки. Вы увидите два пункта меню: New Action (создание нового своего действия) и New Standard Action (добавить стандартное действие, именно это нам и нужно).
Выберите пункт меню New Standard Action. В появившемся окне выделите (при нажатой клавише Ctrl) 4 нужных действия из группы Edit (Правка): TEditCut (Вырезать), TEditCopy (Копировать), TEditPaste (Вставить), TEditUndo (Отмена).
В окне Structure хорошо видно, что новые действия называются EditCut1, EditCopy1, EditPaste1 и EditUndo1.
· Выбирая добавленные действия в окне Structure, в их свойствах Caption и Hint замените все английские надписи на русские.
Теперь нужно назначить действия пунктам меню, выбрав нужное действие в списке свойства Actions.
· Назначьте нужные действия пунктам выпадающего меню Правка. Обратите внимание, что их названия автоматически поменялись на русские. Почему?
Теперь добавим в программу контекстное меню, которое будет появляться при нажатии на правую кнопку мыши над полем редактора.
· Поместите на форму компонент TPopupMenu и добавьте в него команды для работы с буфером обмена. Названия очередного элемента меню вводить не требуется, просто выберите нужное действие в свойстве Action.
Меню готово, но пока не "привязано" к какому-то объекту. Для такой привязки используется свойство PopupMenu того компонента, для которого контекстное меню должно работать.
Для компонента Editor установите свойство PopupMenu=PopupMenu1. Проверьте работу контекстного меню.
4. Панель инструментов
· Добавьте на форму компонент TToolbar (двойным щелчком или перетащив его на заголовок формы. Установите для него высоту Height=30, а также свойства
BorderWidth = 2 (отступ кнопок от границ панели)
Indent = 5 (дополнительный отступ с левого края)
Images = ImageList1 (список картинок).
Пока на панели нет ни одной кнопки. Если нажать на ней правую кнопку мыши, в верхней части контекстного меню появляются команды New Button (новая кнопка) и New Separator (новая линия-разделитель, граница между группами кнопок).
Сначала мы добавим три кнопки для работы с файлами.
· Добавьте на панель инструментов три кнопки, установите для них обработчики события onClick, выбрав в списке готовые функции NewMIClick, OpenMiClick и SaveMIClick. Подумайте, почему на кнопках автоматически появились нужные картинки. Запустите программу и проверьте работу кнопок.
Теперь добавим еще 4 кнопки, связав их с действиями Вырезать, Копировать, Вставить и Отмена.
Добавьте на панель инструментов разделитель (New Separator) и еще четыре кнопки, установите для них свойства Action, выбрав в списке действия EditCut1, EditCopy1, EditPaste1 и EditUndo1. Проверьте работу кнопок.
Добавим еще три кнопки для установки стилей шрифта: жирного, курсива и подчеркивания. Используем для них стандартные действия (Actions) из группы Format.
· Добавьте к списку действий ActionList1 стандартные действия TRichEditBold (жирный), TRichEditItalic (курсив) и TRichEditUnderline (подчеркивание) из группы Format. Исправьте для этих действий английские надписи на русские и установите правильные номера соответствующих картинок в списке ImageList1.
· Добавьте на панель инструментов разделитель (New Separator) и еще три кнопки, назначьте им только что введенные стандартные действия. Запустите программу и проверьте работу новых кнопок.
Лабораторная работа №7. Delphi. Компоненты ListBox, ComboBox, StringGrid
Создание и использование
Компоненты ListBox, ComboBox и Memo, расположены на первой же вкладке палитры компонентов.
Каждая строка компонентов ListBox и ComboBox является объектом Items[i], а Memo - Lines[i], где i - номер строки, который отсчитывается от нуля. Добавление строк в компоненты выполняется методами Add и Insert:
begin
Memo1.Lines.Add('Первая строка');
ComboBox1.Items.Add('Первая строка');
ComboBox1.Items.Add('Вторая строка');
ListBox1.Items.Add('Первая строка');
ListBox1.Items.Add('Вторая строка');
end;
Метод Add добавляет новую строку в конец. Метод Insert имеет дополнительный параметр, указывающий, после какой строки разместить новую строку. Доступ к строкам осуществляется так:
ComboBox1.Items[0] := 'Первая строка изменилась';
ListBox1.Items[1] := 'Вторая строка изменилась';
У компонента ComboBox дополнительно есть свойство Text, где (как и у компонента Edit) находится вводимый текст:
ComboBox1.Text := ' Вводимый текст ';
На выделенную в данный момент строку компонента ComboBox указывает свойство ItemIndex типа Integer, то есть это номер выделенной строки.
Следовательно, получить саму выделенную строку компонента ComboBox можно следующей конструкцией:
S := ComboBox1.Items[ComboBox1.ItemIndex];
или, пользуясь оператором присоединения
With ComboBox1 do S := Items[ItemIndex];
Вот как по нажатию клавиши Enter можно заносить в этот компонент вводимую в строку информацию и удалять нажатием Escape:
Выделите на Форме ComboBox и перейдите в Инспектор объектов, на вкладку Events. Щёлкните дважды по обработчику OnKeyPress. Система Delphi создаст заготовку обработчика. Напишите:
begin
if Key = #13 then
ComboBox1.Items.Add(ComboBox1.Text)
if Key = #27 then;
ComboBox1.Items.Delete(ComboBox1.Items.Count-1);
end;
Key - определённая в этом обработчике переменная, содержащая код нажатой клавиши, #13 и #27 - коды клавиш Enter и Escape соответственно. Items.Count - количество содержащихся в компоненте строк. Так как отсчёт строк идёт от нуля, мы отнимаем единицу. После очередного удаления количество строк меняется, таким образом, Items.Count-1 всегда указывает на последнюю строку. Последовательно нажимая Escape, мы можем удалить все строки. Командой ComboBox1.Items.Delete(0); можно добиться того же эффекта, только удаляться будут первые строки. Впрочем, чтобы стереть всё сразу, есть метод Clear.
Компонент Delphi StringGrid (Таблица строк) расположен на странице Additional Палитры компонентов. Использование электронных таблиц пользователями компьютеров стало привычным и достаточно удобным средством в работе с данными. С помощью компонента StringGrid создаются таблицы, в ячейках которых содержаться произвольные текстовые данные. Он является прямым потомком компонента DrawGrid, много свойств и методов унаследовано от него.
Основное свойство компонента StringGrid - это двумерный массив Cells[ACol, ARow: integer] типа String с помощью него можно обращаться к содержимому ячеек и изменять их содержание. ACol устанавливает номер столбца, ARow - задает строку в таблице. Этим свойством можно воспользоваться только во время выполнения программы, оно доступно для записи и чтения.
Нумерация строк и столбцов идет с нуля. Свойство ColCount задает число столбцов, RowCount - число строк.
Компонент StringGrid по умолчанию слева и сверху имеет заголовочные области, они имеют серый цвет. Количество подобных строк и столбцов устанавливается в свойствах FixedCols и FixedRow. Если же для таблицы не нужны заголовочные области, то эти свойства должны быть равны нулю.
Для закрепления материала давайте создадим приложение, которое покажет нам таблицу умножения. На форму шириной (Width) равной 365 и высотой (Height) 389 поместим компонент StringGrid. Обработчик onCreate формы (возникает двойным щелчком мыши по форме) будет таким:
procedure TForm1.FormCreate(Sender: TObject);
var
x, y : integer;
begin
// Задаем число столбцов и строк таблицы
StringGrid1.ColCount := 10;
StringGrid1.RowCount := 10;
// Задаем шируну и высоту ячеек
StringGrid1.DefaultColWidth := 30;
StringGrid1.DefaultRowHeight:= 30;
// раставляем цифры от 1 до 9 в
// горизонтальной области заголовка
for x := 1 to StringGrid1.ColCount - 1 do
StringGrid1.Cells[x, 0] := IntToStr(x);
// растравляем цифры от 1 до 9 в
// вертикальной области заголовка
for y := 1 to StringGrid1.ColCount - 1 do
StringGrid1.Cells[0, y] := IntToStr(y);
// выводим результаты умножения в ячейки таблицы
for x := 1 to StringGrid1.ColCount - 1 do
for y := 1 to StringGrid1.RowCount - 1 do
StringGrid1.Cells[x, y] := IntToStr(x*y);
end;
Запустим приложение внешний вид его будет примерно таким:
Итог: нами был рассмотрен компонент StringGrid, его свойства и методы.
Лабораторная работа №8. Delphi. Страничные раскладки. Создание их и использование
Сегодня научимся работать с компонентом - Page Control.
Откройте Delphi, создайте форму, и киньте на форму PageControl (ищите в Tool Palette):
Немного исследовав объект, можно заметить, что можно создавать и удалять вкладки, еще перед запуском программы, но так ведь не интересно, верно?
Давайте создадим кнопку, которая будет создавать вкладки прямо во время работы программы. Киньте на форму любую кнопку (например Button 1, ищете в ToolPalette). И перейдите в процедуру, которая активизируется при нажатии кнопки. В var допишите
ts:TTabSheet;
Если нет Var добавьте. Затем в саму процедуру допишите:
ts:= TTabSheet.Create(Self);
ts.Caption:='Новая вкладка';
ts.PageControl:=PageControl1;
ts.Visible:=true;
Первая строчка значит создание самой вкладки, вторая задаёт название, третья указывает, в каком компоненте вкладка будет жить, а последняя указывает на видимость новой вкладки. На самом деле непонятно зачем нужна невидимая вкладка, но кто знает, какая идея может родиться в головах разработчиков… Теперь можно маленько усложнить. Добавьте на наш компонент что-нибудь, например label.
Но теперь новая вкладка будет создаваться пустой… Дело в том что Ваш компонент (label) тоже нужно создать, вместе с новой вкладкой. Для этого дописываем такие строки:
label1:=Tlabel.Create(Self);
label1.Parent:=ts;
label1.caption:='Это программа';
Вот теперь вроде нормально, скажете Вы, но вот странность, координаты (0,0) а на первой вкладке по центру были…
Это потому что каждый параметр нужно прописывать вручную. За высоту и ширину отвечаю параметры label1.left:="ваше число"; label1.top:="ваше число";
И если вы хотите развернуть вашу вкладку на весь экран, то рекомендую воспользоваться параметром Align (в Object Inspector) и выставить там параметр alClient.
Лабораторная работа №9. Общие представления. Графика
Работа с графикой в Delphi это не только линии и рисунки, но также и и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделить немного времени. Работа с графикой в Delphi предполагает обращение к канве - свойству Canvas компонентов. Canvas Delphi это холст, который позволяет программисту иметь доступ к каждой своей точке (пикселу), и словно художнику отображать то, что требуется. Конечно, рисовать попиксельно для работы с графикой в Delphi не приходится, система Delphi предоставляет для мощные средства работы с графикой, облегчающие задачу программиста.
В работе с графикой в Delphi в распоряжении программиста находятся канва (холст, полотно - свойство Canvas Delphi компонентов), карандаш (свойство Pen), кисть (свойство Brush) того компонента или объекта, на котором предполагается рисовать. У карандаша Pen и кисти Brush можно менять цвет (свойство Color) и стиль (свойство Style). Доступ к шрифтам предоставляет свойство канвы Font. Эти инструменты позволяют отображать как текст, так и достаточно сложные графики математического и инженерного содержания, а также рисунки. Кроме этого, работа с графикой позволяет использовать в Delphi такие ресурсы Windows как графические и видеофайлы.
Конечно, не все компоненты в Delphi имеют эти свойства. На вкладке Additional расположен специализированный компонент TImage, специально предназначенный для рисования, но также свойство Canvas имеют, например, такие компоненты как ListBox, ComboBox, StringGrid, а также и сама Форма, которая размещает наши компоненты. Кроме того, для печати документов Delphi обращается к свойству Canvas такого объекта как принтер.
Подобные документы
Программа "Labs", выбор шрифта с помощью элемента ComboBox. Очистка содержимого и добавление значений в элемент ListBox. Загрузка картинки в элементе Image. Совместная работа SpinButton и TextBox. Изменение масштаба надписи и текста элемента Label.
лабораторная работа [3,1 M], добавлен 31.05.2009Создание приложения для просмотра графических файлов. Компоненты, объекты и операторы для отображения графической информации в библиотеке Delphi. Канва как область компонента для рисования и отображения изображений. Рисование пером, закрашивание кистью.
методичка [98,1 K], добавлен 19.06.2011Создание нового документа. Редактирование текстовых файлов типа TXT и RTF. Сохранение измененного документа. Изменение шрифта, начертания и размера символов. Отмена последнего действия. Оформление нового текста, форматирование абзаца, удаление текста.
реферат [158,6 K], добавлен 25.10.2013Принципы и порядок работы с файлами на языке Delphi, получение навыков программирования с использованием файлов. Создание каталога продуктов. Страница палитры компонентов, настраиваемые компоненты и их значения. Текст программы и ее тестирование.
лабораторная работа [243,9 K], добавлен 09.01.2009Проектирование базы данных учета посещаемости и среда разработки программного продукта. Работа с базами данных Access в Delphi: компоненты доступа к данным, создание отчетов в Delphi и запросов на языке SQL. Программа и эксплуатационная документация.
дипломная работа [53,2 K], добавлен 16.07.2008Понятие и назначение условных операторов, их функциональные особенности и характерные свойства. Разновидности и отличия циклов. Прерывание фрагмента программы с циклом с использованием оператора break. Компоненты для отображения и редактирования текста.
контрольная работа [13,2 K], добавлен 02.05.2012Создание электронного учебника "Визуальные и не визуальные компоненты Delphi". Основные требования к организации интерфейса. Логическая структура и технические средства. Аппаратно–программный комплекс. Применение программы, тестирование и отладка.
курсовая работа [39,5 K], добавлен 03.12.2012Разработка программы автоматизации процесса проверки знаний учащихся. Использование языка программирования Borland Delphi 7.0, его свойства, компоненты для работы со строками. Создание обучающих тестов на знание лексики и грамматики английского языка.
курсовая работа [521,0 K], добавлен 06.03.2016Создание компьютерной игры посредством среды программирования Delphi. Инструменты разработки, компоненты и методы для разработки программы. Логическая и физическая структуры, основные функции и элементы управления программы, ее тестирование и отладка.
курсовая работа [27,9 K], добавлен 26.07.2014Функциональное и эксплуатационное назначение изделия. Программная совместимость. Результирующие компоненты изделия. Носители информации. Безопасность и секретность. Требования к надежности. Мобильность. Стадии и этапы разработки.
реферат [553,2 K], добавлен 13.08.2006