Size: a a a

2020 March 17

AK

Alexey Kulakov in Delphi & Lazarus
да, я сам рисовал в OnDrawCell
источник

DB

Dmitry Belkevich in Delphi & Lazarus
ок, пока поищу
источник

AK

Alexey Kulakov in Delphi & Lazarus
самое простое было без ресайза у меня (в другом месте с ресайзом)
procedure TROSearchItemForm.sgSearchResultDrawCell(Sender: TObject; aCol,
 aRow: Integer; aRect: TRect; aState: TGridDrawState);
var
 ls:String;
 lp:TPicture;
 idx:integer;
begin
 if (aRow>0) and (aCol=0) then
 begin
   idx:=StrToInt(sgSearchResult.Cells[sgSearchResult.ColCount-1,aRow]);
   ls:=RODB_GetSprite(idx,1,rosmItem);
   if ls='' then exit;

   lp:=TPicture.Create;
   try
     lp.LoadFromFile(ls);
   except
     exit;
   end;
   sgSearchResult.RowHeights[aRow]:=lp.Height+4;
   sgSearchResult.Canvas.Draw(aRect.Left+2,aRect.Top+2,lp.Bitmap);
   lp.Free;
 end;
end;
источник

AK

Alexey Kulakov in Delphi & Lazarus
со старого проекта
источник

DB

Dmitry Belkevich in Delphi & Lazarus
ок, спасибо
источник

AK

Alexey Kulakov in Delphi & Lazarus
ну, т.е. там всё просто
источник

VA

Viktor Akselrod in Delphi & Lazarus
Alexey Kulakov
самое простое было без ресайза у меня (в другом месте с ресайзом)
procedure TROSearchItemForm.sgSearchResultDrawCell(Sender: TObject; aCol,
 aRow: Integer; aRect: TRect; aState: TGridDrawState);
var
 ls:String;
 lp:TPicture;
 idx:integer;
begin
 if (aRow>0) and (aCol=0) then
 begin
   idx:=StrToInt(sgSearchResult.Cells[sgSearchResult.ColCount-1,aRow]);
   ls:=RODB_GetSprite(idx,1,rosmItem);
   if ls='' then exit;

   lp:=TPicture.Create;
   try
     lp.LoadFromFile(ls);
   except
     exit;
   end;
   sgSearchResult.RowHeights[aRow]:=lp.Height+4;
   sgSearchResult.Canvas.Draw(aRect.Left+2,aRect.Top+2,lp.Bitmap);
   lp.Free;
 end;
end;
1) каждый раз загружать файл в отрисовке очень плохая мысль
2) потенциальный мемлик при ошибке загрузки
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Alexey Kulakov
ну, т.е. там всё просто
ну я то примерно представляю что там просто ) но вот не хочется обвязку
источник

AK

Alexey Kulakov in Delphi & Lazarus
не каждый раз :)
источник

DB

Dmitry Belkevich in Delphi & Lazarus
потому как колхоз и вообще - вот то мемлики то еще что )
источник

AK

Alexey Kulakov in Delphi & Lazarus
в другом месте кэширование было. А в данном случае это вполне допустимо было
источник

VA

Viktor Akselrod in Delphi & Lazarus
Alexey Kulakov
не каждый раз :)
каждый
источник

AK

Alexey Kulakov in Delphi & Lazarus
при ошибке загрузки там нет мемлика
источник

DB

Dmitry Belkevich in Delphi & Lazarus
у меня то imagelist
источник

VA

Viktor Akselrod in Delphi & Lazarus
Alexey Kulakov
при ошибке загрузки там нет мемлика
посмотри где у тебя вызов free
источник

DB

Dmitry Belkevich in Delphi & Lazarus
не файлы, я то если что выковыряю картинку
источник

AK

Alexey Kulakov in Delphi & Lazarus
Виктор, я ещё раз говорю, в ЭТОМ месте подобный кульбит был допустим. в ДРУГОМ месте у меня всё кэшировалось, что надо
источник

DB

Dmitry Belkevich in Delphi & Lazarus
но поищу пока что готовое что-то
источник

AK

Alexey Kulakov in Delphi & Lazarus
я посмотрел. но экспешен от загрузки картинки блокируется, а рисование прокатывает как пустышка уже
источник

AK

Alexey Kulakov in Delphi & Lazarus
в примерах Лазаря посмотри, там было
источник