На форме есть PageControl1, в нём программно создаю закладки (TTabSheet), а в каждой закладке по-одному стринггриду с тремя колонками
также хочу рисовать иконки в (любой) колонке, но проблема заключается в моём непонимании как программно назначить событие каждому стринггриду.
в данном случае конечно понимаю что, событие (процедура) будет одно на все гриды. но как при создании грида, её присвоить свойству OnDrawCell не пойму, притом что надо знать acol, arow, arect и т.п.
в приведенном ниже коде, у меня такая ошибка:
Error: Wrong number of parameters specified for call to "StringGridDrawCell"
понятно что не хватает аргументов, но блин, не могу понять откуда их взять

пример кода (лишний свой код вырезал):
- Код: Выделить всё
type
TForm1 = class(TForm)
PageControl1: TPageControl;
procedure StringGridDrawCell(Sender: TObject; aCol, aRow: Integer; aRect: TRect; aState: TGridDrawState);
private
procedure LoadData;
end;
var
Form1: TForm1;
implementation
procedure TFrom1.LoadData;
var
dgrid : tStringGrid;
tab : tTabSheet;
col : tGridColumn;
begin
.........
//удаляем все закладки (если есть)
while PageControl1.PageCount > 0 do
PageControl1.Pages[PageControl1.PageCount-1].Free;
//создаем новые закладки
while not Query.EOF do begin
tab := tTabSheet.Create(PageControl1);
with tab do begin
PageControl := PageControl1;
tab.Width := PageControl1.Width;
tab.Height := PageControl1.Height;
Caption := Query.FieldByName('name').asstring;
dgrid := tStringGrid.Create(tab);
dgrid.Width := tab.Width;
dgrid.Height := tab.Height;
dgrid.RowCount := 1;
dgrid.MouseWheelOption := mwGrid;
dgrid.Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRowSizing,goColSizing,goColMoving,goThumbTracking,goDblClickAutoSize,goSmoothScroll];
dgrid.FixedCols := 0;
dgrid.TitleStyle := tsNative;
dgrid.Anchors := [akTop,akLeft,akRight,akBottom];
dgrid.ScrollBars := ssAutoBoth;
dgrid.Parent := tab;
dgrid.Visible := true;
dgrid.OnDrawCell := StringGridDrawCell; //<<<---- вот тут ругается ошибкой
col := dgrid.Columns.Add; col.Title.Caption := 'Колонка1'; col.Alignment := taCenter; col.Layout := tlCenter; col.Title.Alignment := taCenter; col.Title.Layout := tlCenter;
col := dgrid.Columns.Add; col.Title.Caption := 'Колонка2'; col.Alignment := taCenter; col.Layout := tlCenter; col.Title.Alignment := taCenter; col.Title.Layout := tlCenter;
col := dgrid.Columns.Add; col.Title.Caption := 'Колонка3'; col.Alignment := taCenter; col.Layout := tlCenter; col.Title.Alignment := taCenter; col.Title.Layout := tlCenter;
end;
Query.Next;
end;
Query.Close;
end;
procedure TForm1.StringGridDrawCell(Sender: TObject; aCol, aRow: Integer; aRect: TRect; aState: TGridDrawState);
var
grid : TStringGrid;
begin
if (aCol = 11) and (aRow >= 1) then begin
grid := (Sender as TStringGrid);
... рисуем что нам надо на гриде (grid) ...
end;
end;
.........
end.