77987
Дата: 27.05.2011 21:40:44
Используется обычный cxGrid (TcxGridTableView, без БД) в нём есть столбец с properties=image. Хочу в этот столбец в режиме run time вставить изображение в запись. Не могу найти нужную процедуру. Как это сделать?
В гугле и Яндексе забанен за слишком частые запросы
77987
Дата: 27.05.2011 21:55:00
Edkonst2008,
да, но где он для конкретной записи?
Данные заношу, например, так, но он для изображения не годится
Tabl.DataController.SetValue(0,0,0)
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. Запомнил на будущее
Соколинский Борис
Дата: 28.05.2016 12:26:49
Сорри за некропостинг.
Приведенный вариант, разумеется, работает, но хотелось бы его немного усовершенствовать, а именно: загружать картинку не сразу, а в момент когда ее нужно показывать, это очень важно когда картинок много.
Наглый способ загрузки в OnCustomDrawCell не прокатывает (AV), а интуитивного понимания, куда еще это можно вставить у меня нет, cxGrid-ом редко пользуюсь.