![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Form.Print
don-do © (2003-01-27 08:10:00)В справке Form.Print описан как виртуальный метод, на самом же деле статический, нужно переопределить, кто подскажет как это сделать без большой крови.
REA (2003-01-27 13:05:00) [1]Да там и процедурка то простенькая - можно выдрать и переписать.
Юрий Зотов (2003-01-27 12:35:00) [2]Его не надо хакать, надо просто привести тип формы к Вашему. Для статических методов это обычная практика. А полностью переопределить статический метод - как? Никак. Он же напрямую вызывается, а не косвенно, как виртуальные/динамические.
don-do (2003-01-27 10:48:00) [3]
Dmitry Filippov (2003-01-27 10:47:00) [4]Я бымший don-do
Спасибо! именно так я и делал,
но все же есть ли возможность переопределить статические методы?
У DreamControls есть пример, но их подход переопределяет методы класса, не хочется хакать весь класс.
Anatoly Podgoretsky (2003-01-27 10:21:00) [5]don-do (27.01.03 09:17)
Так не заработает, надо приведение к твоему классу.
Casee (2003-01-27 10:09:00) [6]Тогда нужно написать
TPrintForm(Screen.Forms[1]).Print;
don-do (2003-01-27 09:17:00) [7]Спасибо!
Но мне хочется чтобы заработал код
Screen.Forms[1].Print;
Юрий Зотов (2003-01-27 09:04:00) [8]Статические методы тоже можно переопределять, и в них тоже можно вызывать inherited. Только надо иметь в виду, что если метод Print будет вызван Вами, из кода Вашей формы - то это будет вызов Вашего Print. Если же он будет вызван из кода VCL - то это будет вызов старого Print, из TCustomForm.
Я сделал поиск по исходникам VCL и нигде не нашел внутренних вызовов TCustomForm.Print. Поэтому, думаю, можете смело замещать. Все вызовы будут Вашими - то есть, будет вызываться именно Ваш Print.