Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

DBImage - графическое изображение

CuBook3.675

Компонент DBImage (графическое изображение) предназначен для вывода изображений, содержащихся в графических полях БД. Если компонент DBImage связать с полем, не содержащим изображение, например с числовым, то в области компонента выводится имя этого поля. В случае, когда компонент DBImage не связан ни с одним полем, он отображает свое собственное имя (значение свойства Name).
 
Кроме вывода изображения компонент также позволяет изменить (заменить) его, вставив нужный рисунок из буфера обмена Windows.
 
Свойство Stretch типа bool указывает, нужно ли приводить в соответствие размеры изображения размерам области компонента DBImage. По умолчанию это свойство имеет значение false, и размеры изображения не подстраиваются под размеры области.
 
Свойство AutoDisplay типа bool указывает, каким способом в компоненте Image отображаются изменения в связанном с ним поле. По умолчанию свойство имеет значение true, и содержимое графического поля отображается. Если свойству AutoDisplay установить значение false, например, так:
DBImage1->AutoDisplay = false;
то при изменении значения поля, например, из-за перехода к другой записи, вместо изображения выводится имя поля. В этом случае для вывода графики нужно выполнить двойной щелчок на графическом компоненте или нажать клавишу <Enter>, когда на нем находится фокус ввода. Можно также вывести содержимое поля программно с помощью метода LoadPicture. Например:
void __fastcall TForml::ButtonlClick(TObject *Sender)
{
DBImage1->LoadPicture();
}
В этой процедуре при нажатии кнопки Button1 в графическом компоненте DBImage1 выводится содержимое графического поля текущей записи.
 
С помощью компонента DBImage можно работать с буфером обмена Windows, выполняя перемещение или копирование изображения в буфер и вставку изображения из буфера. Для выполнения этих действий используются обычные для Windows-программ комбинации клавиш: копирование в буфер — <Ctrl>+<Insert>, удаление в буфер — <Shift>+<Delete>, вставка из буфера — <Shift>+<Insert>.
 
Указанные действия могут быть выполнены программно. Метод CopyToClipboard копирует изображение в буфер обмена, метод CutToClipboard вырезает (перемещает) изображение в буфер обмена, а метод PasteFromClipboard вставляет изображение из буфера обмена. При использовании любого способа вставки из буфера новое изображение автоматически заменяет предыдущее содержимое компонента DBImage.
 
Для примера рассмотрим программу для работы с электронным каталогом книг. Пусть информация о книгах хранится в таблице Paradox, представляющей собой электронный каталог и включающей следующие поля:
  • код (автоинкрементное поле);
  • авторы (символьное поле);
  • издательство (символьное поле);
  • название (символьное поле);
  • серия (символьное поле);
  • цена (денежное поле);
  • обложка (графическое поле).
Содержимое каталога выводится в соответствующих визуальных компонентах, расположенных на панели компонента DBGrid. В верхней части расположены поля редактирования DBEdit, содержащие по одному из указанных полей. Фото обложки книги выводится в графическом компоненте DBImage1. Для навигации по электронному каталогу книг используется навигатор DBNavigator1. Флажок CheckBox1 управляет масштабированием изображения по размеру компонента DBImage1. По умолчанию этот флажок снят, и изображение не подстраивается под размеры графического компонента.
 
Все символьные поля и денежное поле редактируются с помощью соответствующих компонентов DBEdit. Для редактирования снимка имеются кнопки позволяющие вставлять изображение из файла и сохранять его в файле, а также обмениваться изображениями через буфер. Нажатие кнопки Открыть вызывает появление диалога OpenPictureDialog1 выбора файла для открытия. После выбора нужного файла содержащееся в нем изображение загружается в компонент DBImage1. Фильтр диалога настроен на выбор графических файлов формата BMP, а также форматов ICO, EMF и WMF, которые при загрузке автоматически преобразуются в формат BMP.
 
Нажатие кнопки Сохранить открывает диалог SavePictureDialog1 выбора файла для сохранения. После выбора файла в него записывается изображение из компонента DBImage1. Фильтр диалога настроен на выбор графического файла формата BMP. Настройка фильтров обоих диалогов произведена при создании формы.
 
Кнопки с названиями Копировать, Вырезать и Вставить выполняют соответствующий обмен между графическим компонентом DBImage1 и буфером. Кнопка Закрыть прекращает работу приложения. Ниже приведен код файла главного модуля приложения.
#include <vcl.h>
#pragma hdrstop
#include "Uni11Albom.h"
#pragma package{smart_init) #pragma resource "*.d£m" TForml *Forml;
//--------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
if (OpenPictureDialog1->Execute()) DBImage1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
}
//--------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
OpenPictureDialog1->Filter = "Все файлы (*.bmp;*.ico;*.emf;*.wmf)|*.bmp;*.ico;*.emf;*.wmf;
SavePictureDialog1->Filter = "*.bmp|*.bmp";
}
void __fastcall TForm1::Button2Click(T0bject *Sender)
if (SavePictureDialog1->Execute())
{
DBImage1->Picture->SaveToFile(SavePictureDialog1->FileName);
}
//--------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
DBlmage1->CopyToClipboard();
//--------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
DBImage1->CutToClipboard();
//--------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
DBImage1->PasteFromClipboard();
//--------------------------------
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
DBlmage1->Stretch = CheckBox1->Checked;
Отметим, что в отличие от компонента Image, у графического компонента DBImage нет свойства Canvas, позволяющего рисовать на поверхности изображения.
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий