у компонента PaintBox хочу процедуру вызываваемую по событию OnPaint заменить на свою процедуру описанную в собственном классе.
как это сделать?
Делегирование |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Делегирование |
F0b0s |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
у компонента PaintBox хочу процедуру вызываваемую по событию OnPaint заменить на свою процедуру описанную в собственном классе.
как это сделать? |
volvo |
Сообщение
#2
|
Гость |
Наследуй свой класс от TPaintBox и переопределяй (override) процедуру Paint.
|
F0b0s |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Наследуй свой класс от TPaintBox и переопределяй (override) процедуру Paint. а если без наследования? делегированием...то есть вызовом метода одного класса через объект другова...ну как то так... =) в инете смотрел про делегирование событий кроме вот этой непонятной( по содержанию) ссылки ни чё путного нет delphisourse |
volvo |
Сообщение
#4
|
Гость |
Цитата то есть вызовом метода одного класса через объект другова А теперь подумай, метод какого класса ты будешь вызывать, и через объект какого класса? Ничего, что для реализации придется залезть в исходники VCL, поскольку ты хочешь вызывать СВОЙ метод через TPaintBox, для чего тебе в любом случае придется править именно TPaintBox? |
F0b0s |
Сообщение
#5
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
процедура вызываемая по событию OnPaint: procedure PaintBoxPaint(Sender: TObject) является методом класса TForm1 наследника TForm. поэтому я ка бы думаю что надо будет поправить не TPaintBox а TForm1...я не прав?
|
volvo |
Сообщение
#6
|
Гость |
А попробуй вот это:
Procedure TForm1.myPaint(Sender: TObject);Это тебе подойдет? Или обязательно извратиться с делегированием? |
F0b0s |
Сообщение
#7
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
желательно извратится с делегированием =) но и на том спасибо!
|
F0b0s |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 10 Пол: Мужской Репутация: 0 |
Вообщем сделал вот так:
Код TForm1 = class(TForm) .... procedure PaintBox1Paint(Sender: TObject); end; TMyProc = Procedure (Sender:TObject) of object; TMyClass = class FMyProc: TMyProc; .... end; procedure TForm1.PaintBox1Paint(Sender: TObject); begin // код рисования end; procedure TForm1.FormCreate(Sender: TObject); begin MyClass:=TMyClass.Create; MyClass.FMyProc:= Form1.PaintBox1Paint; PaintBox1.OnPaint:=MyClass.FMyProc; end; думаете сойдет за делегирование? Сообщение отредактировано: F0b0s - |
Текстовая версия | 24.04.2024 16:08 |