Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

custom paint


Dima335 ©   (2012-03-31 23:39:00) 

Добрый вечер. На форме есть 2 объекта. У одного отрисовку сделал так:
TMyPainter = class(TcxSheetPainter)
 protected
   procedure DrawHeaderBrick(I, J: Integer); override;
 end;
procedure TMyPainter.DrawHeaderBrick;
var ii: Integer;
begin
inherited;
//код трисовки первого объекта
end;

procedure TForm1.cxSpreadSheet1CustomPaint(Sender: TObject;
 var PainterClass: TcxSheetPainterClass);
begin
PainterClass := TMyPainter;
end;

Теперь надо для второго объекта сделать свою отрисовку. Но как? У него тоже есть процедура DrawHeaderBrick(I, J: Integer).
Ее нужно переопределить, но по-другому, не как у первого объекта. Если я напишу:

TMyPainter2 = class(TcxSheetPainter)
 protected
   procedure DrawHeaderBrick2(I, J: Integer); override;
 end;
procedure TMyPainter.DrawHeaderBrick2;
var ii: Integer;
begin
inherited;
//код трисовки первого объекта
end;
procedure TForm1.cxSpreadSheet2CustomPaint(Sender: TObject;
 var PainterClass: TcxSheetPainterClass);
begin
PainterClass := TMyPainter2;
end;
мне компилятор просто скажет нет такой процедуры DrawHeaderBrick2.


KilkennyCat   (2012-04-01 16:23:00) [1]


> Хорошо, где тогда писать реализацию второго варианта DrawHeaderBrick?

внимательно смотри:
> procedure TMyPainter2.DrawHeaderBrick;

видишь цифру 2?
в конце концов, прочитай про ООП, там всего 3 страницы


Dima335   (2012-04-01 16:08:00) [2]

Верно, спасибо


_Юрий   (2012-04-01 15:48:00) [3]

TMyPainter и TMyPainter2 - оба потомки TcxSheetPainter,  все верно? Или все таки TMyPainter2 - потомок TMyPainter ?


Dima335   (2012-04-01 15:20:00) [4]

Хорошо, где тогда писать реализацию второго варианта DrawHeaderBrick?


KilkennyCat   (2012-04-01 09:07:00) [5]

Второй объект не знает о процедуре первого объекта.

> TMyPainter2 = class(TcxSheetPainter)
>  protected
>    procedure DrawHeaderBrick2(I, J: Integer); override;
>  end;
> procedure TMyPainter.DrawHeaderBrick2;


MyPainter2 = class(TcxSheetPainter)
 protected
   procedure DrawHeaderBrick(I, J: Integer); override;
 end;
procedure TMyPainter 2.DrawHeaderBrick;


Dima335   (2012-04-01 05:18:00) [6]

Если я сошлюсь на DrawHeaderBrick, то это будет процедура для 1 объекта. Второй объект должен рисоваться по-другому


Дмитрий С   (2012-04-01 01:16:00) [7]

А зачем ты двойку в конце ставишь: "DrawHeaderBrick2" ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо