Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2010, 13:08   #1
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию Изменение стандартных модулей Delphi

Всем доброго времени суток!

Вопрос: Как можно изменить модуль Delphi, допустим Graphics?
Мне нужно чуть подправить процедуру TBitmap.LoadFromStream.
Модуль .pas изменяется, а как его скомпилить в .dcu?
Hottabych вне форума Ответить с цитированием
Старый 17.08.2010, 13:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а как его скомпилить в .dcu?
Жмакай F9 само скомпилит
Цитата:
Как можно изменить модуль Delphi, допустим Graphics?
Знаешь за что Саддам руки отрубал?
Скомпилируй - перенеси проект на другую Делфи - узнаешь
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.08.2010, 13:34   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Hottabych Посмотреть сообщение
Модуль .pas изменяется, а как его скомпилить в .dcu?
Правильный ответ на этот вопрос - не делать этого вообще. Наследование не просто так придумано.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 17.08.2010, 13:36   #4
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию



Да не компилит. Я добавил в Graphics.pas, в TBitmap метод LoadFromStreamCount(Stream: TStream; const Count: integer), сохранил...
Код:
imgScreen.Picture.Bitmap.LoadFromStreamCount(CMStream, fr_sz);
Пишет Undeclared identifier "LoadFromStreamCount"
Кстати, IDE - RAD 2007, и я щас на win7

Цитата:
Правильный ответ на этот вопрос - не делать этого вообще.
И что, теперь из-за одного параметра компонент создавать?

Ну, давайте думать... Как изменить Graphics.dcu в директории lib?
При удалении этого файла делфи пишет "не найден этот файл"

Последний раз редактировалось Stilet; 17.08.2010 в 14:06.
Hottabych вне форума Ответить с цитированием
Старый 17.08.2010, 13:59   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
компонент создавать?
Не создавать, а переопределить. Иначе потом наткнешся на очень нехорошие грабли.
Или поменять стратегию проекта. Подумай хорошенько нужно ли оно тебе такой ценой.
И ответь себе на один вопрос "Почему люди пишут сторонние компоненты вместо того чтоб генофонд доправлять"
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.08.2010, 14:03   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
И что, теперь из-за одного параметра компонент создавать?
Да.

Цитата:
Ну, давайте думать... Как изменить Graphics.dcu в директории lib?
Не НАДО этого делать. Иначе потом вам кто-нибудь за это зонтик в одно место вставит и раскроет.

Есть лимит способов это сделать. Самый простой - процедура:

Код:
procedure LoadFromStreamCount(ABitmap: TBitmap; AStream: TStream; ASize: Integer);
D2007? Юзаем класс-хэлпер (я НЕ рекомендую этот способ, но упоминаю его как возможный).

Код:
type
  TBitmapHelper = class helper for TBitmap
     procedure LoadFromStreamCount(AStream: TStream; ASize: Integer);
  end;
Правильный метод - написание наследника от TImage с нужными методами. Если вы используете TImage, плюхнутый как компонент на форму, то вы можете использовать метод Geo.

P.S. Если вы не поняли: здесь знают ответ на вопрос "как перекомпилировать Graphic.pas", но специально его вам не говорят. Во избежание.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.

Последний раз редактировалось Stilet; 17.08.2010 в 14:21.
GunSmoker вне форума Ответить с цитированием
Старый 17.08.2010, 14:13   #7
Hottabych
Форумчанин
 
Регистрация: 13.01.2008
Сообщений: 140
По умолчанию

А можно переделать Tmod_Bitmap, описать у себя модуле и скормить процедуре imgScreen.Picture.Bitmap.Assign(mod _Bitmap)?
Hottabych вне форума Ответить с цитированием
Старый 17.08.2010, 14:13   #8
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
И что, теперь из-за одного параметра компонент создавать?
А в чем проблема? Унаследовался и переопределил нужный метод.

Цитата:
Сообщение от Hottabych Посмотреть сообщение
А можно переделать Tmod_Bitmap, описать у себя модуле и скормить процедуре imgScreen.Picture.Bitmap.Assign(mod _Bitmap)?
Можно, но в этом случае сильно не коверкай его, только добавляй функционал. Если не будет принимать, то передавай его как (MyBitmap as TBitmap).
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось Stilet; 17.08.2010 в 14:24.
mutabor вне форума Ответить с цитированием
Старый 17.08.2010, 14:25   #9
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Сообщение от Hottabych Посмотреть сообщение
А можно переделать Tmod_Bitmap
Можно, если Tmod_Bitmap - это наследник от TBitmap.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 17.08.2010, 18:11   #10
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
Сообщение от Hottabych Посмотреть сообщение

...
И что, теперь из-за одного параметра компонент создавать?
....
Я так вообще всяческие эдиты, стринггриды и тп, модифицировал только тем что добавлял пару полей для ссылок на записи в бд. Конечно наследника создавать.
vovk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переопределение стандартных функций LeoN PHP 1 11.06.2010 08:18
Перегрузка стандартных операций Новичек_Rudik Помощь студентам 1 19.04.2010 23:32
Запрет/Разрешение на открытие сторонних(стандартных) программ MyIE Общие вопросы Delphi 2 06.04.2010 23:59
Не подключается BT-адаптер на стандартных драйверах Web-Gangsta Компьютерное железо 6 22.02.2010 16:49
Отключение стандартных обработок DBnavigator Badrvic Компоненты Delphi 3 14.10.2009 11:40