Сделай так, чтобы пользователь мог просматривать изображения и описание в TDBGrid, потому что на данный момент данные в этих двух столбцах отображаются description как WIDEMEMO а содержимое image как BLOB. Придумай решение этой проблемы. C++ Builder 10.4, RAD STUDIO

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include "Unit108.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm108 *Form108;
TADOConnection *ADOConnection1;
TADOQuery *ADOQuery1;
TDBGrid *DBGrid1;
TDataSource *DataSource1;


//---------------------------------------------------------------------------
__fastcall TForm108::TForm108(TComponent* Owner)
	: TForm(Owner)
{


}
//---------------------------------------------------------------------------

void __fastcall TForm108::FormCreate(TObject *Sender)
{
	// создание базы данных / таблицы, если их ещё не существует
	String s;
	s = "CREATE DATABASE IF NOT EXISTS `catalog`";
	ADOQuery1->SQL->Text = s;
	ADOQuery1->ExecSQL();
	s = "CREATE TABLE IF NOT EXISTS `catalog`.`products` (`ID` INT NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `price` FLOAT(8, 2) NOT NULL, `description` TEXT NOT NULL, `image` LONGBLOB NOT NULL, PRIMARY KEY (`ID`))";
	ADOQuery1->SQL->Text = s;
	ADOQuery1->ExecSQL();

    ADOQuery1->Close();
    ADOQuery1->SQL->Text = "SELECT * FROM `catalog`.`products`";
	ADOQuery1->Open();



}
//---------------------------------------------------------------------------


void __fastcall TForm108::Button2Click(TObject *Sender)
{
try
{
    TFileStream *fs = new TFileStream(OpenPictureDialog1->FileName, fmOpenRead);
    try
    {
        // Указываем параметры для запроса
        ADOQuery1->SQL->Text = "INSERT INTO `catalog`.`products` (`name`, `price`, `description`, `image`) VALUES (:name, :price, :description, :image)";
        ADOQuery1->Parameters->ParamByName("name")->Value = Edit1->Text;
        ADOQuery1->Parameters->ParamByName("price")->Value = StrToFloat(Edit2->Text);
        ADOQuery1->Parameters->ParamByName("description")->Value = Edit3->Text;

        // Создаем поток для передачи изображения в базу данных
        TMemoryStream *stream = new TMemoryStream();
        try
        {
            stream->CopyFrom(fs, 0);
            stream->Position = 0;
            ADOQuery1->Parameters->ParamByName("image")->LoadFromStream(stream, ftBlob);

			ADOQuery1->ExecSQL();
		}
        __finally
        {
            delete stream;
        }
    }
    __finally
    {
        delete fs;
    }

    // Очистка полей ввода
    Edit1->Clear();
    Edit2->Clear();
    Edit3->Clear();

    // Очистка изображения
    Image1->Picture->Assign(NULL);

    // Обновление данных в таблице
    ADOQuery1->Close();
    ADOQuery1->SQL->Text = "SELECT * FROM `catalog`.`products`";
    ADOQuery1->Open();
}
catch (Exception &e)
{
    ShowMessage("Ошибка при добавлении товара: " + e.Message);
}
}
//---------------------------------------------------------------------------


void __fastcall TForm108::Button3Click(TObject *Sender)
{
    if (OpenPictureDialog1->Execute())
	{
        Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
    }
}
//---------------------------------------------------------------------------