динамический TStringGrid с событием OnDrawCell [решено]

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

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

динамический TStringGrid с событием OnDrawCell [решено]

Сообщение Zak » 13.07.2013 16:55:12

Всем привет. Помогите пожалуйста с назначением события OnDrawCell у динамически созданного TStringGrid

На форме есть 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.

Последний раз редактировалось Zak 16.07.2013 07:43:15, всего редактировалось 1 раз.
Zak
новенький
 
Сообщения: 31
Зарегистрирован: 16.06.2013 07:24:39
Откуда: морозная Сибирь

Re: динамический TStringGrid с событием OnDrawCell

Сообщение Padre_Mortius » 13.07.2013 17:10:47

Код: Выделить всё
dgrid.OnDrawCell := @StringGridDrawCell;
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: динамический TStringGrid с событием OnDrawCell

Сообщение Zak » 13.07.2013 17:13:51

Padre_Mortius писал(а):
Код: Выделить всё
dgrid.OnDrawCell := @StringGridDrawCell;

Огромное спасибо. Благодарю!
Zak
новенький
 
Сообщения: 31
Зарегистрирован: 16.06.2013 07:24:39
Откуда: морозная Сибирь


Вернуться в Lazarus

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

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

Рейтинг@Mail.ru
cron