- •2. Визуальные компоненты
- •2.1. Свойства
- •2.2. События
- •2.3. Методы
- •If Edit1.CanFocus then Edit1.SetFocus; {перед получением фокуса производится проверка на возможность передачи фокуса компоненту}
- •3. Работа с текстом
- •3.1. Использование надписей
- •3.2. Однострочный редактор
- •3.3. Общие свойства, события и методы компонентов редактирования
- •3.4. Класс tStrings
- •3.5. Многострочный редактор
- •3.6. Использование списков
- •3.7. Таблица String Grid
- •4. Кнопки и переключатели
- •4.1. Работа с кнопками
- •4.1.1. Стандартная кнопка
- •4.1.2. Кнопка с рисунком
- •4.2. Работа с переключателями
- •4.2.1. Переключатель с независимой фиксацией
- •If CheckBox1.Checked then MessageDlg ('Время истекло! ', mtError, [mbОк], 0);
- •4.2.2. Переключатель с зависимой фиксацией
- •4.3. Объединение элементов управления
- •5. Использование форм
- •5.1. Свойства, методы и события форм
- •5.2. Организация взаимодействия форм
- •5.3. Особенности модальных форм
- •5.4. Шаблоны форм
- •5.5. Процедуры и функции, реализующие диалоги
- •5.6. Стандартные диалоги
- •If OpenDialog1.Execute then // при отмене диалога открытие файла не происходит
- •If SaveDialog1.Execute then { Получить имя файла }
- •6.Главное и контекстное меню, панели инструментов
- •6.1. Класс tMenuItem
- •6.2. Cоздание главного и контекстного меню
- •6.3. Динамическая настройка меню
- •6.4. Панели инструментов
- •7. Создание графических изображений
- •7.1. Классы для работы с графикой
- •7.2. Основные компоненты для размещения изображений
- •7.3. Типы графических объектов
- •7.4. Создание диаграмм
- •8. Печать объектов
- •8.1. Класс tPrinter
- •8.2. Печать текста
- •Var fPrn: Text; // объявлена переменная типа Text.
- •8.3. Диалоговые окна для работы с принтером
- •8.4. Печать графических изображений
- •8.4.1. Печать форм
- •8.4.2. Печать диаграмм
- •9. Работа с датами
- •9.1. Преобразование даты
- •9.2. Компоненты для ввода дат
- •10. Сохранение параметров программы.
- •Ini : tIniFile; //объявляем переменную типа inifile
- •Ini : tIniFile; //объявляем переменную типа inifile
- •11. Обработка исключительных ситуаций
- •Var f: File; begin AssignFile(f, 'Somefile.Ext'); try // оператор, в котором возможна ошибка Reset(f); // работы с файлом finally CloseFile(f) end;
7.3. Типы графических объектов
В Delphi предоставлено несколько графических объектов, которые имеют собственные методы для рисования на канве, а также для загрузки и сохранения изображений в графические файлы (табл. 7.1).
Таблица 7.1 – Типы графических объектов
Объект |
Описание |
Picture |
Используется как контейнер для содержания произвольного графического образа.Для того чтобы объект Picture мог содержать файлы дополнительных графических форматов, используется метод Register |
Bitmap |
Графический объект, который используется для создания, манипулирования(масштабирования, скроллинга, вращения, закраски) и хранения картинок какфайлов на диске |
Clipboard |
Контейнер, хранящий текст или графические образы, которые могут быть скопированы, вырезаны из приложения или вставлены |
Icon |
Картинка, загруженная из файла пиктограммы |
Drawing |
Содержит файл, в котором записаны операции, требующиеся для создания изображения. Не содержит самого изображения. Использование этого объекта позволяет свободно масштабировать изображение без потери деталей и обычно требует меньше памяти, чем хранение графического образа. В то же время, отображает рисунок значительно медленнее, чем другие объекты |
Чтобы приложение сразу после запуска создавало чистую заготовку для изображения необходимо cоздать заготовку обработчика события OnCreate для формы, содержащей компонент Image, создать объект Bitmap и присвоить его свойству Picture.Graphic компонента Image.
Пример cоздания объекта Bitmap
Главная форма приложения Form1 содержит компонент типа TImage, который имеет
имя (свойство Name = Image1).
procedure TForm1.FormCreate(Sender: TObject);
var
Bitmap: TBitmap; {временная переменная для хранения графического образа}
begin
Bitmap.Create; { создание графического объекта )
Bitmap.Width := 200;{ установка начальной ширины }
Bitmap.Height : =200; { и начальной высоты объекта Bitmap }
{ присвоение созданного графического объекта компоненту Image }
Image1.Picture.Graphic := Bitmap;
Bitmap.Free; {уничтожение графического объекта}
end;
Свойство ScanLine позволяет получать информацию о цветах пикселей одной линии объекта Bitmap в виде массива RGB.
Пример использования свойства ScanLine объекта Bitmap для одновременного получения пикселей одной линии.
procedure TForm1.Button1Click(Sender: TObject);
var
х, у: integer;
BitMap: TBitmap;
P: PByteArray;
begin
Bitmap := ТBitmap.Create;
trу
if OpenDialog1.Execute then
begin
Bitmap.LoadFromFile(OpenDialog1.FlleName);
for у := 0 to Bitmap.height -1 do
begin
P := Bitmap.ScanLine(y);
for х := 0 to Bitmap.width –1 dо Р[х] := у;
end;
end;
Canvas.Draw(0,0,Bitmap);
finally
Bitmap.free;
end;
end;
Ключевые слова try и finally использованы для создания блоков защищенных ресурсов. Схема создания блока защищенных ресурсов { Выделение памяти или другого ресурса } try { Операторы, способные вызвать генерацию ошибки } finally { Освобождение ресурса } end;