Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.08;
Скачать: CL | DM;

Вниз

Написание компанента   Найти похожие ветки 

 
LuckyMan   (2002-07-28 21:12) [0]

Здравствуйте. Столкнулся со следующей пролемой. Мне нужно выполнить следующее: написать компонент, эмулирующий обычную кнопку, однако, имеющую анимированный caption (бегущую строку).
Но в выполнении задания стоит условие - использовать стандартный
контрол Button нельзя и рисовать ее нужно при помощи стандартных
графических процедур(линий и т.д.). т.е. писать компанент надо с нуля. Кнока должна реагировать на стандартные события (Click, DBlClick и т.д.), в общем вести себя как обычная кнопка.

На данный момент выполнено следующее: качестве класса объекта
выбран TCustomControl. Написаны процедуры для отрисовки четырех
визуальных состояний кнопки(кнопка нетронута, кнопка выделена, кнопка нажата и Disabled). а вот столкнулся с такими проблемами:

1. Ну, для того чтобы перерисовать кнопку при нажатии я использовал

procedure TCustomButton.MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);

begin
if (Button = mbLeft) then
begin
........


тоже самое c MouseUp (для отрисовки состояния, когда кнопка отжата но остается выделена),

????
а вот как отловить событие того, что на форме выбран другой
объект с TabStop=true (это может произойти при выборе клавишей Tab или щелчком мыши на другом объекте) и перерисовать его
в результате наличия этого события?

2. Как сделать так, чтобы стало возможным отлавливать изменения, сделанные пользователем в редакторе свойств объекта перед запуском программы и пересовывать объект на форме согласно результатам этих изменений опятьже перед запуском программы

3. Что посоветуете с анимацией надписи ?

Заранее Спасибо!


 
Юрий Зотов   (2002-07-28 21:40) [1]

> как отловить событие того, что на форме
> выбран другой объект

В этот момент Ваша кнопка получит сообщение WM_KILLFOCUS. Посмотрите, например, как в VCL реализовано событие OnExit.

Кстати, кнопка может стать выделенной и без всякой мыши - клавишей Tab. Так что надо ловить не Down/Up, а WM_SETFOCUS.


> Как сделать так, чтобы стало возможным отлавливать изменения,
> сделанные пользователем в редакторе свойств объекта

Для этого служат методы Set (методы записи свойств). Они вызываются при любом изменении свойств и могут выполнять и перерисовку, и вообще любую дополнительную работу. Примеров в VCL - целая туча.


> Что посоветуете с анимацией надписи?

Встроить в кнопку таймер и по нему перерисовывать Caption.


И последнее - рисование НАМНОГО упростится, если использовать DrawFrameControl (см. в справке API).



Страницы: 1 вся ветка

Текущий архив: 2002.08.08;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.006 c
14-24230
Mnch
2002-07-08 11:26
2002.08.08
Формат dbx


1-23986
Nostradamus
2002-07-26 23:48
2002.08.08
Интерестно


4-24281
Александр_
2002-05-29 08:27
2002.08.08
Отображение таблиц в RTF документе


14-24195
RV
2002-07-12 11:30
2002.08.08
в продолжение Когда можно работать ?


4-24284
ted
2002-05-12 19:43
2002.08.08
кол-во страниц отправленых на принтер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский