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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хочу свой SpeedButton 
:(
    Опции темы
Reaper
Дата 2.4.2004, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Создаю компонент наследником от TGraphicControl.
Как сделать так, что бы при наведении мыши кнопка изменялась постепенно
(например разворачивалась).

PM MAIL   Вверх
pascal
Дата 3.4.2004, 03:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



отслеживаем приход / уход и сохраняем статус в переменной компоненты
Код

 TTest = class(TGraphicControl)
 private
 ...
   procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
   procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
 ...


ставим на приходе / уходе таймер
Код

       SetTimer(FHandle, XXX, FAnimateTime, nil)

где:
  FHandle - Handle объекта кому будет приходить сообщение таймера
  FAnimateTime - время через которое будет следующий шаг анимации (желательно не меньше 50)
  XXX - информация которая будет возвращена тебе в сообщении таймера
           кстати XXX это ещё и уникальный идентификатор таймера в пределах FHandle
           то есть если попытаешься создать ещё один таймер с тем же XXX, то будет изменён старый
           кстати на приходе и уходе используй одинаоквый XXX
           (так проще и для тебя и для операционки)

теперь остался последний шаг, обработка событый таймера
Код

 TTest = class(TGraphicControl)
 ...
 protected
 ...
   procedure WndProc(var Message: TMessage);
 ...

procedure TTest.WndProc(var Message: TMessage);
begin
 if Message.Msg=WM_TIMER then
 begin
   if Message.WParam=XXX then
   begin
     ... // обратываем
     if (последний кадр) then KillTimer(FHandle, XXX);
   end;
 end
 else with Message do Result := DefWindowProc(FHandle, Msg, WParam, LParam);
end;


Это сообщение отредактировал(а) pascal - 3.4.2004, 03:40
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


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

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


 




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


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

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