1 (edited by konstantin 2021-04-28 10:40:31)

Topic: Компоненты DBFile и DBImage. Нужна помощь

Здравствуйте!

Нужно сделать, чтобы при изменении прилинкованного файла(рисунок) в компоненте DBFile ,- в компонент DBImage помещалось превью этого рисунка.
Сделал обработчик DBFile.OnChange с вызовом сторонней программы, которая создает превью в файл и загружает его в DBImage. Работает.
Проблемы:
1. Оказалось, что событие OnChange генерируется при открытии формы, содержащей этот компонент. Есть идеи как это обойти?
2. В отличии от компонента Image компонент DBImage не имеет метода PasteFromClipboard. Можно это как-то реализовать (чтобы не генерировать лишние файлы и не тратить время на их запись/считывание)?
3. Почему-то при загрузке DBImage методом Picture.LoadFromFile картинка не отображается в обновленном гриде в вызывающей форме. Если делать загрузку изображения через кнопку - то все отображается. Предполагаю, что дело в каком-то атрибуте или формате файла. Каком?

Спасибо

Вдогонку: OpenFile - процедура или функция? Можно как-то обработать  её ошибку выполнения?

Re: Компоненты DBFile и DBImage. Нужна помощь

konstantin wrote:

Здравствуйте!

Нужно сделать, чтобы при изменении прилинкованного файла(рисунок) в компоненте DBFile ,- в компонент DBImage помещалось превью этого рисунка.
Сделал обработчик DBFile.OnChange с вызовом сторонней программы, которая создает превью в файл и загружает его в DBImage. Работает.
Проблемы:
1. Оказалось, что событие OnChange генерируется при открытии формы, содержащей этот компонент. Есть идеи как это обойти?
2. В отличии от компонента Image компонент DBImage не имеет метода PasteFromClipboard. Можно это как-то реализовать (чтобы не генерировать лишние файлы и не тратить время на их запись/считывание)?
3. Почему-то при загрузке DBImage методом Picture.LoadFromFile картинка не отображается в обновленном гриде в вызывающей форме. Если делать загрузку изображения через кнопку - то все отображается. Предполагаю, что дело в каком-то атрибуте или формате файла. Каком?

Спасибо

Вдогонку: OpenFile - процедура или функция? Можно как-то обработать  её ошибку выполнения?

1.

var T:TTimer;

procedure OnAfterShow(Sender: TObject);
begin
   TTimer(Sender).Enabled := false;
   ShowMessage('I`m OnAfterShow');
end;

procedure Form1_OnShow(Sender: TObject; Action: string);
begin
  ShowMessage('I`m OnShow');
    with TTimer.Create(Application) do
    begin
        Interval := 1;
        OnTimer := @OnAfterShow;
    end;
end;

begin
end.

   
я создал логическую переменную
в начале загрузки false а в конце true
в событие OnChange  создал проверку

или можно сделать проверку на frm.Show

3.
то же с этим столкнулся, заработало когда я прописал загрузку два раза подряд..

3 (edited by konstantin 2021-04-29 10:23:32)

Re: Компоненты DBFile и DBImage. Нужна помощь

sibprogsistem wrote:

я создал логическую переменную
...
то же с этим столкнулся, заработало когда я прописал загрузку два раза подряд..

1 - я для обхода повторной загрузки задействовал тривиальный счетчик с проверкой на >1 и обнулением на OnClose Form.
3 - пока не получается - если загрузить скриптом Picture.LoadFromFile и даже dbFileName, и даже сделать сохранение этих значений в  форме через кнопку.клик в БД - не работает - в БД (у меня MySQL) не подгружается ни файл, ни путь к нему

Re: Компоненты DBFile и DBImage. Нужна помощь

Всем привет! Чтобы не плодить тем, спрошу тут.
Может ли кто-то подсказать, как отобразить картинку (DBImage) при выборе строки в гриде если используется MySQL, файл линкуется и копируется в папку?

Это вариант не работает (с MySQL), возникает ошибка. Если указываю поле с названием, ничего не происходит.

frmMain.imgPhotoRK.Clear;
frmMain.imgPhotoRK.LoadFromDatabase('Adres', 'photo', frmMain.tgAdresList.dbItemID);

Re: Компоненты DBFile и DBImage. Нужна помощь

SNKip wrote:

Всем привет! Чтобы не плодить тем, спрошу тут.
Может ли кто-то подсказать, как отобразить картинку (DBImage) при выборе строки в гриде если используется MySQL, файл линкуется и копируется в папку?

Это вариант не работает (с MySQL), возникает ошибка. Если указываю поле с названием, ничего не происходит.

frmMain.imgPhotoRK.Clear;
frmMain.imgPhotoRK.LoadFromDatabase('Adres', 'photo', frmMain.tgAdresList.dbItemID);

а где Вы разместили эти картинки? поместите в саму БД

Re: Компоненты DBFile и DBImage. Нужна помощь

SNKip wrote:

Всем привет! Чтобы не плодить тем, спрошу тут.
Может ли кто-то подсказать, как отобразить картинку (DBImage) при выборе строки в гриде если используется MySQL, файл линкуется и копируется в папку?

Это вариант не работает (с MySQL), возникает ошибка. Если указываю поле с названием, ничего не происходит.

frmMain.imgPhotoRK.Clear;
frmMain.imgPhotoRK.LoadFromDatabase('Adres', 'photo', frmMain.tgAdresList.dbItemID);


procedure Form1_TableGrid_OnCellClick (Sender: TObject; ACol, ARow: Integer);
begin
    frmAspect.DBImage1.Clear;
    frmAspect.DBImage1.LoadFromDatabase('указывает таблицу', 'DBImage', Form1.TableGrid.dbItemID);
end;

Re: Компоненты DBFile и DBImage. Нужна помощь

Замечательно, осталось его в эту БД засунуть....