в cxGrid вставить изображение

77987
Дата: 27.05.2011 21:40:44
Используется обычный cxGrid (TcxGridTableView, без БД) в нём есть столбец с properties=image. Хочу в этот столбец в режиме run time вставить изображение в запись. Не могу найти нужную процедуру. Как это сделать?
В гугле и Яндексе забанен за слишком частые запросы
Edkonst2008
Дата: 27.05.2011 21:43:47
77987
Используется обычный cxGrid (TcxGridTableView, без БД) в нём есть столбец с properties=image. Хочу в этот столбец в режиме run time вставить изображение в запись. Не могу найти нужную процедуру. Как это сделать?

Думаю, Assign поможет.
77987
Дата: 27.05.2011 21:55:00
Edkonst2008,

да, но где он для конкретной записи?
Данные заношу, например, так, но он для изображения не годится
Tabl.DataController.SetValue(0,0,0)
DimaBr
Дата: 28.05.2011 02:31:26
Самое простое - использовать TcxGridDBTableView + TdxMemData (или ещё какой нибудь датасет в памяти)
X11
Дата: 28.05.2011 23:25:28
DimaBr
Самое простое - использовать TcxGridDBTableView + TdxMemData (или ещё какой нибудь датасет в памяти)


угу, с полем типа blob :)
77987
Дата: 29.05.2011 01:22:04
DimaBr,

а совсем без датасета ни как не вставить? должен же быть метод, ведь как-то вручную можно вставить в специальном диалоговом окне изображения.
DimaBr
Дата: 29.05.2011 01:53:14
procedure UpdateRecordPictureByFileName(ADataController: TcxCustomDataController;
  AFileName: string; ARecordIndex, APictureColumnIndex: Integer);
var
  AValue: string;
  APicture: TPicture;
begin
  if FileExists(aFileName) then begin
    APicture := TPicture.Create;
    try
      APicture.LoadFromFile(AFileName);
      SavePicture(APicture, AValue);
    finally
      FreeAndNil(APicture);
    end;
  end
  else AValue := '';
  ADataController.Values[ARecordIndex, APictureColumnIndex] := AValue;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  cxGrid1TableView1.DataController.RecordCount := 1;
  UpdateRecordPictureByFileName(cxGrid1TableView1.DataController,'C:\1.bmp',0,0);
end;
77987
Дата: 29.05.2011 13:16:06
DimaBr,

огромнейшее спасибо!
Всё очень просто оказывается, интересная процедура SavePicture. Запомнил на будущее
DimaBr
Дата: 29.05.2011 20:05:56
Учитесь пользоваться поиском. В Google ответ в первой же строчке
Соколинский Борис
Дата: 28.05.2016 12:26:49
Сорри за некропостинг.

Приведенный вариант, разумеется, работает, но хотелось бы его немного усовершенствовать, а именно: загружать картинку не сразу, а в момент когда ее нужно показывать, это очень важно когда картинок много.
Наглый способ загрузки в OnCustomDrawCell не прокатывает (AV), а интуитивного понимания, куда еще это можно вставить у меня нет, cxGrid-ом редко пользуюсь.