Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Как бы отобразить в TcxDBImage картинку для пустого значения в базе?  [new]
Страдалецъ
Member

Откуда: Мурманск
Сообщений: 1337
Ну т.е. если картинка в поле таблицы есть, то она отображается в TcxDBImage, а вот если нет, то выводится фиксированная картинка - типа ушла на базу.
3 ноя 18, 13:16    [21723209]     Ответить | Цитировать Сообщить модератору
 Re: Как бы отобразить в TcxDBImage картинку для пустого значения в базе?  [new]
L_argo
Member

Откуда:
Сообщений: 400
как вариант - прятать контрол, за которым должна стоять картинка "ушла на базу".
3 ноя 18, 14:42    [21723262]     Ответить | Цитировать Сообщить модератору
 Re: Как бы отобразить в TcxDBImage картинку для пустого значения в базе?  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3862
Использовать не дб-контрол, а обычный и грузить туда картинку. Проверять можно по пустому значению в поле, либо размер загруженной в контрол изображения -- он будет нулевым.
3 ноя 18, 15:03    [21723269]     Ответить | Цитировать Сообщить модератору
 Re: Как бы отобразить в TcxDBImage картинку для пустого значения в базе?  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6271
Страдалецъ,

может у него (контрола) событие что-нибудь типа OnCustomDraw есть?

А еще можно наследника в этом юните определить, с ием же именем класса (это хак такой) и перегружать событие отрисовки

Или вообще свой класс на основе TcxDBImage написать, установить его в палитру компонентов и пользоваться во всех проектах.
3 ноя 18, 16:05    [21723289]     Ответить | Цитировать Сообщить модератору
 Re: Как бы отобразить в TcxDBImage картинку для пустого значения в базе?  [new]
Страдалецъ
Member

Откуда: Мурманск
Сообщений: 1337
Нет нифига. Очень мне не хочется события датасета для этих целей задействовать, но видимо придется. Других вариантов не находится. Попробую скачать триальную версию девок и под это дело саппорт спросить, может дадут решение.
3 ноя 18, 17:04    [21723312]     Ответить | Цитировать Сообщить модератору
 Re: Как бы отобразить в TcxDBImage картинку для пустого значения в базе?  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3862
Страдалецъ,

техподдержка у девок бесплатная, подскажут без проблем.
3 ноя 18, 17:13    [21723319]     Ответить | Цитировать Сообщить модератору
 Re: Как бы отобразить в TcxDBImage картинку для пустого значения в базе?  [new]
Фэйтл Эра
Member

Откуда:
Сообщений: 97
Страдалецъ
Ну т.е. если картинка в поле таблицы есть, то она отображается в TcxDBImage, а вот если нет, то выводится фиксированная картинка - типа ушла на базу.

Контрол TcxDBImage, как и просто TcxImage, имеет паблик - свойство "картинка":

    property Picture: TPicture read GetPicture write SetPicture;


... а TPicture умеет загружаться из файлов:
public
    procedure LoadFromFile(const Filename: string);

...и из потоков:
protected
    procedure LoadFromStream(Stream: TStream);


Таким образом, при использовании TcxDBImage, задача решается, например, так:
- в событии OnDataChange источника данных (TDataSource) или в соответствующем событии набора данных (TDataSet) проверяем графическое поле на "пусто":
procedure TMyClassForm.MyDataSourceDataChange(Sender: TObject; Field: TField);
begin
  if MyDataSet_ImageField.IsNull then


и, если оно пусто - грузим картинку из файла:

  
   MycxDBImage.Picture.LoadFromFile('C:\Images\GoneToTheBase.bmp');


Или из потока:
  TStreamedPicture(MycxDBImage.Picture).LoadFromFile(MySuperPuperStream);

...в последнем варианте не забываем обеспечить себе доступ к защищенному члену класса:
type
  TStreamedPicture = class (TPicture);
3 ноя 18, 18:23    [21723344]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить