C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Blob и CalcField. Можно ли их сочетать?
laifik
  Отправлено: 06.10.2003, 10:32


Дежурный стрелочник

Группа: Участник
Сообщений: 70



В редакторе Table1 я создала новое поле CalcField, например, ImageArh. Тип поля Blob. Хочу, чтобы в него загружалась иконка. Для этого хотела пойти таким путем:
TCanvas *pCanvas = Image1->Canvas;
Module1->Table1ImageArh->??? = *pCanvas;
Но не знаю, какой здесь подходит тип. Уже, кажется, перебрала все возможные, все равно программа ругается.
Второй вариант, хотела так:
Module->Table1ImageArh->LoadFromFile(OpenDialog1->FileName);
Но здесь не подходит поле Calculated. Подскажите, пожалуйста, что делают при решении такой задачи? Если можно, с маленьким примером. Заранее благодарна. ohmy.gif
Admin
Отправлено: 07.10.2003, 14:00


Владимир

Группа: Администратор
Сообщений: 1190



2
Да, поле Blob (Graphic) не может быть Calculate. надо сделать его Data

1
Вы хотите поместить в это поле значение(картинку),
или отобразить эту картинку (иконку) в Grid-e ?

Если поместить картинку в поле — это уже обсуждалось на форуме:

https://rxlib.ru/forums/index.php?ac...6219e66151d1230

Если отобразить в Grid-e:

Поместите иконки в ImageList1, далее

CODE

void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
     const TRect &Rect, int DataCol, TColumn *Column,
     TGridDrawState State)
{
   Graphics::TBitmap *Im1 = new  Graphics::TBitmap;

   if(Column->FieldName=="VImg")
     {
     DBGrid1->Canvas->Brush->Color=clWhite;
     DBGrid1->Canvas->FillRect(Rect);

     if(Table1ID->Value == 1) ImageList1->GetBitmap(0,Im1);
     if(Table1ID->Value == 2) ImageList1->GetBitmap(1,Im1);
     if(Table1ID->Value == 3) ImageList1->GetBitmap(2,Im1);

     DBGrid1->Canvas->Draw((Rect.Left+Rect.Right-Im1->Width)/2,Rect.Top,Im1);
     }
}

Вернуться в Работа с базами данных в C++Builder