Цитата:
Но ведь ничего криминального в том, что я SyncMode отключил - нет?
Нужно будет учитывать, что при перемещении по гриду, в подключенном к нему датасете курсор не будет перемещаться.
Но ведь ничего криминального в том, что я SyncMode отключил - нет?
я реализовал так
1. Процедура ForEachRow (см. документацию)
Код:
dbgApart - TcxGridDBTableView
dbgApartPhoto - колонка для вывода изображения, properties := Image, properties.GraphicClassName := TdxSmartImage,
procedure TfmApartSearch.DoLoadImageForEachRow(ARowIndex: Integer;
ARowInfo: TcxRowInfo);
Var
sFN_Photo, sPhotoPath: string;
iPhotoFieldIndex, iIdFieldIndex: integer;
begin
// загружаем в каждую запись грида(поле Фото) эскизы, на ходу создавая эскизы, если их нет.
with dbgApart.DataController do
begin
iPhotoFieldIndex := dbgApartPhoto.index;
iIdFieldIndex := dbgApartID.Index;
sPhotoPath := fmMain.sPhotoApart;
sFN_Photo := IncludeTrailingPathDelimiter(sPhotoPath + VarToStr(Values[ARowInfo.RecordIndex, iIdFieldIndex])) + '___thumbnail.bmp';
//если включен параметр "всегда пересоздавать эскизы", то удаляем существующий, чтобы создать новый
if bAlwaysRecreateThumbnails then DeleteFile(sFN_Photo);
//если эскиза не существует, то создаём его из первого файла с именем "_thmb.*"
if not FileExists(sFN_Photo) then
GetThumbnailFromImageFile(sPhotoPath + VarToStr(Values[ARowInfo.RecordIndex, iIdFieldIndex]));// ищем файл, имя которого = _thmb.*
//если эскиза не существует всё равно, то создаём его из первого попавшего подходяещего файла с фотоснимком
if not FileExists(sFN_Photo) then
GetThumbnailFromFirstImageFile(sPhotoPath + VarToStr(Values[ARowInfo.RecordIndex, iIdFieldIndex]));
if FileExists(sFN_Photo) then
Values[ARowInfo.RecordIndex, iPhotoFieldIndex] := ImageFileToString(sFN_Photo);
if Assigned(fmWait) then
begin
fmWait.cxProgressBar1.Position := ARowInfo.RecordIndex;
Application.ProcessMessages;
end;// if Assigned(fmWait) then
end;// with dbgArenda.DataController do
end;
После открытия таблицы загружаю фото из файлов
Код:
//если колонка для фото видима и разрешено использование фото, то создаем и показывем эскизы
if (dbgApartPhoto.Visible) and (fmMain.bUsePhoto) then
begin
fmWait := TfmWait.Create(self);
try
fmWait.cxProgressBar1.Position := 0;
fmWait.cxProgressBar1.Properties.Max := dbgApart.DataController.RecordCount;
fmWait.cxProgressBar1.Visible := true;
fmWait.Show;
Application.ProcessMessages;
dbgApart.DataController.BeginUpdate;
dbgApart.DataController.ForEachRow(False, DoLoadImageForEachRow);
if bAutoRowHeightToThumbHeight then
dbgApart.OptionsView.DataRowHeight := iThumbnailMaxHeight;//максимальная высота строки
finally
dbgApart.DataController.EndUpdate;
FreeAndNil(fmWait);
end;
end;// if (dbgArendaPhoto.Visible) and (fmMain.bUsePhoto) then
остальное
Код:
procedure JpegToBmp(jpg: TJPEGImage; bmpDest: TBitmap);
procedure BmpToBmp(bmpSrc, bmpDest: TBitmap);
procedure PngToBmp(pngSrc: TdxPNGImage; bmpDest: TBitmap);
procedure MakeThumbnail(aFileName: string);
procedure MakeThumbnailJpg(aFileName: string);
procedure MakeThumbnailBMP(aFileName: string);
procedure MakeThumbnailPNG(aFileName: string);
function GetThumbnailFromFirstImageFile(dir: string): string;//взять первый попавшийся файл
function GetThumbnailFromImageFile(dir: string): string;// взять файл, имя которого _thmb.*
function ImageFileToString(AFileName: string): string;
в файле
http://www.onlinedisk.ru/file/977394/
надеюсь поможет
В сетке есть колонка, например, TcxCheckBox.
В событии PropertiesChange как можно узнать какой вьюхе принадлежит sender
Вот мой блог
Тогда уже я скину ссылку
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки