Вывод пиктограмки из ИмиджЛиста в ячейку грида

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Вывод пиктограмки из ИмиджЛиста в ячейку грида

Сообщение qivi » 17.11.2010 17:58:07

Вот так я практиковал вывод пиктограмки в ДБ гриде:

Код: Выделить всё
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  var bp:TBitmap;
begin

bp:=TBitmap.Create;

  If Column.FieldName='N' then
   begin

    with DBGrid1.Canvas do
     begin
      Brush.Color:= clWhite;
      FillRect(Rect);
      ImageList1.GetBitmap(0,bp);
      Draw(round((Rect.Left+Rect.Right-bp.Width)/2),round((Rect.Top+Rect.Bottom-bp.Height)/2),bp);
     end;
   end;
end; 


Вот так пытаюсь переделать для простого грида:
Код: Выделить всё
procedure TForm2.SGridDrawCell(Sender: TObject; aCol, aRow: Integer; aRect: TRect; aState: TGridDrawState);
  var bp:TBitmap;
begin

bp:=TBitmap.Create;

If SGrid.Columns.Items[0] then
  begin
    SGrid.Canvas.Brush.Color:=clWhite;
    SGrid.Canvas.FillRect(Rect);
    IL.GetBitmap(0, bp);
    {with SGrid.Canvas do
    begin
     Brush.Color:= clWhite;
     //FillRect(Rect);
     IL.GetBitmap(0,bp);
     Draw(round((Rect.Left+Rect.Right-bp.Width)/2),round((Rect.Top+Rect.Bottom-bp.Height)/2),bp);
    end;}
  end;

end;



Компилятор ругается:
unit2.pas(62,27) Error: Wrong number of parameters specified for call to "Rect"

на строку:
Код: Выделить всё
    SGrid.Canvas.FillRect(Rect);   


Подскажите пожалуйста что не так и как реализовать это? Возможно в простом гриде это делается совсем иначе?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Вывод пиктограмки из ИмиджЛиста в ячейку грида

Сообщение Vadim » 17.11.2010 18:02:17

qivi
А Вы не заметили, что во втором случае параметр процедуры называется не Rect. а aRect? ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Вывод пиктограмки из ИмиджЛиста в ячейку грида

Сообщение qivi » 17.11.2010 18:27:06

А Вы не заметили, что во втором случае параметр процедуры называется не Rect. а aRect? ;)


Честно сказать не знал. Не так часто отступаю от стандартных возможностей компонентов.
Теперь жалуется на If SGrid.Columns.Items[0] then, чем можно заменить ДБГридовский Column.FieldName в простом гриде?
Есть ли пример по выводу пиктограмок в стандартный грид?
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Вывод пиктограмки из ИмиджЛиста в ячейку грида

Сообщение leo_bsv » 17.11.2010 22:20:27

Код: Выделить всё
procedure TForm1.Button6Click(Sender: TObject);
var b:TBitmap;
    x,y:integer;
    r:TRect;
begin
  b:=TBitmap.Create;
  ImageList1.GetBitmap(0,b);
  r:=StringGrid1.CellRect(1,1); // прямоугольник ячейки, в которую вставляем рисунок...
  StringGrid1.Canvas.Draw(r.Left,r.Top,b);
end;
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Вывод пиктограмки из ИмиджЛиста в ячейку грида

Сообщение Nik » 18.11.2010 10:33:36

Я рисую проще:

Код: Выделить всё
procedure TMainForm.MyGridDrawCell(Sender: TObject; aCol, aRow: Integer; aRect: TRect; aState: TGridDrawState);
begin

with MyGrid as TStringGrid do
  begin
   ....
   Canvas.FillRect(aRect);
   ImageList.Draw(Canvas, aRect.Left, aRect.Top, 1);
  // 1 - индекс картинки в ImageList
   ...
  end;

end;
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Вывод пиктограмки из ИмиджЛиста в ячейку грида

Сообщение Vadim » 18.11.2010 19:43:41

qivi писал(а):Честно сказать не знал. Не так часто отступаю от стандартных возможностей компонентов.

Нет, это называется по другому - "Я не посмотрел на заголовок процедуры". :D
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Вывод пиктограмки из ИмиджЛиста в ячейку грида

Сообщение Nik » 18.11.2010 21:01:15

Vadim писал(а):
qivi писал(а):Честно сказать не знал. Не так часто отступаю от стандартных возможностей компонентов.

Нет, это называется по другому - "Я не посмотрел на заголовок процедуры". :D

Кстати говоря, этот параметр переименовали недавно. С полгода назад я перекомпилировал старую Delphi-прогу, там этот параметр был назвал именно Rect - и всё прекрасно работало. А в какой-то момент после очередного обновления из SVN компилятор стал ругаться на Rect, поскольку имя параметра сменили. так что сдаётся мне, в последней стабильной версии Lazarus должен быть именно Rect.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

Рейтинг@Mail.ru