Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> возможность отображения компонента 
:(
    Опции темы
tol
  Дата 17.4.2006, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



если кто сможет помочь smile 
как работает механизм отображения компонента на своём
владельце компоненте ?
если создать свой компонент- производный например от кнопки,
как изменить старое отображение  на новое ?
слышал о процедуре PaintWindow(DC: HDC);override; но незнаю
как она работает smile  
PM MAIL   Вверх
Alexeis
Дата 17.4.2006, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(tol @  17.4.2006,  00:19 Найти цитируемый пост)
как изменить старое отображение  на новое 


Заменить ни как, можно просто рисовать поверх.

Цитата(tol @  17.4.2006,  00:19 Найти цитируемый пост)
как работает механизм отображения компонента на своём
владельце компоненте 


Отрисовкой стандартных компонентов занимается windows, так как код этих компонентов (действительный код, а не делфиская оболочка), находится в одной из Api библиотек

 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
tol
Дата 17.4.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



Но для этого необходимо выйти на на Canvas этого компонента smile 

А как его определить заранее ? 

возможно использовать свойство PARENT ? 
PM MAIL   Вверх
DigitalDummy
  Дата 17.4.2006, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.4.2006
Где: В подвале шоколад ной фабрики.

Репутация: нет
Всего: 2



Отрисовку такого объекта, как кнопка, можно заменить полностью своим кодом с помощью API.
Вам интересен такой вариант?

Например, для полного комфорта, можно написать всё это так, чтобы в конце для отрисовки осталась только следующая процедура:
Код

procedure TMyButton.OnCustomPaint(Canvas: TCanvas);
begin
  ...
  // ваш код
  ...
end;
 

Это сообщение отредактировал(а) DigitalDummy - 17.4.2006, 18:11
PM WWW   Вверх
s-mike
Дата 17.4.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 5
Всего: 16



Цитата(tol @  17.4.2006,  01:19 Найти цитируемый пост)
как работает механизм отображения компонента на своём
владельце компоненте ?

Создается DC, контролу передаются сообщения отрисовки WM_ERASEBKGND, WM_PAINT, в этих сообщениях передается DC, на котором обработчиком этих сообщений (или их перехватчиком например со стороны VCL) отрисовывается изображени компонента. 
PM MAIL WWW   Вверх
tol
Дата 17.4.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 13.4.2006

Репутация: нет
Всего: нет



спасибо за помощь  smile 

попробую эту иформацию реализовать в работе smile  
PM MAIL   Вверх
Alexeis
Дата 18.4.2006, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 55
Всего: 459



Цитата(s-mike @  17.4.2006,  20:52 Найти цитируемый пост)
Создается DC

s-mike, DC на самом деле создается при создании окна, его нужно только получить.
Код

 DC := GetDC(Button1.handle);


обработчики WM_ERASEBKGND, WM_PAINT в TButton уже существуют их надо перекрыть и при этом при помощи команды 
inherited;(без парамеров т.е. без указания имени наследованной функции) в начале своего обработчика вызвать унаследованные 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
s-mike
Дата 21.4.2006, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 5
Всего: 16



Цитата(alexeis1 @  18.4.2006,  09:15 Найти цитируемый пост)
DC на самом деле создается при создании окна, его нужно только получить.

DC все время меняется, при каждой перерисовке. Недаром оно передается в обработчики сообщений. 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.