Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.09;
Скачать: [xml.tar.bz2];

Вниз

Разработчики Delphi схалтурили   Найти похожие ветки 

 
Lord BDV   (2002-04-24 19:51) [0]

Товарищи... Уважаемые товарищи программисты!
Похоже, разработчики Delphi или схалтурили, или еще что-то случилось, НО, оказывается, компонент TAnimate не имеет стандартного для почти всех компонент Delphi обработчика события OnClick. А жаль, очень нужно.
Поэтому прошу Вас придумать способ "отловить" щелчек мышкой по этому компоненту.
Интересно будет узнать, какие пути решения этой проблемы предложите Вы.

Пока я вижу единственный вариант выкрутиться: в WinAPI наверняка должна быть функция, фиксирующая состояние мыши: ее абсолютные координаты (относительно экрана), и состояние нажатости правой и левой кнопок мыши. Может быть, использовать эту функцию.
Но какая процедура в Delphi реализует вышеуказанные возможности, я не знаю. Прошу, подскажите и это!


 
Дремучий   (2002-04-24 20:46) [1]

пишешь свой класс-наследник TAnimate и в нем определяешь onClick событие в разделе published


 
Дремучий   (2002-04-24 20:48) [2]

это вообщем не халтура, просто посчитали ненужным,
и соглашусь с тобой, что в этом они не правы....


 
Lord BDV   (2002-04-24 21:40) [3]

В ответ на первый комментарий - а можно без написания нового класса?

Ответ на второй комментарий - и как Вы думаете эту проблему можно решить.

Всех прошу обратить внимание на вторую часть вопроса - а именно - подскажите, какая функция API выдает состояние мышки.


 
Doom   (2002-04-24 21:42) [4]

WM_GetMouseState???


 
Suntechnic   (2002-04-24 21:48) [5]

Конечно лучше всего отнаследоваться и сделать всё по человечески, но если тебе нужно одноразовое решение, то могу предложить следующее. Пишешь свою оконную процедуру. Берёшь адрес существующей (GetWindowLong), сохраняешь этот адрес. Затем подменяешь процедуру окна компонента своей (SetWindowLong), в котрой вызываешь родную по заранее сохранённому адресу. Итог: ты имеешь оконную процедуру куда валятся все сообщения, и в том числе о кликах мыши.


 
Lord BDV   (2002-04-25 10:33) [6]

Прошу прощения за неосведомленность в этой области программирования, но не могли бы Вы набросать примерный код и поподробнее разъяснить, как с ним работать.

Например, в юните формы, на которой лежит TAnimate, я написал процедуру:

Procedure AnmClickAction;
begin
...
end;


Так каким образом конкретно "пришить" эту процедуру к TAnimate на форме, чтобы она выполнялась каждый раз, когда пользователь тыкает в TAnimate?


 
AlexSV   (2002-04-25 11:05) [7]

Вообщем согласен с Дремучий ©, но предлагаю, как вариант не писать свой класс-наследник, а просто вывести OnClick в область
public.

Лучше примером:
-- интерфейсная часть (ничего нового)

type
TForm1 = class(TForm)
Animate1: TAnimate;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
// объявляем процедуру, которую повесим на Click
procedure AnimateClick(Sender: TObject);
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

// объявляем тип, для перевода Click в public
type
TClickAnimate = class(TAnimate)
public
property OnClick;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
// Надеюсь объяснять не надо - привязали Click
TClickAnimate(Animate1).OnClick := AnimateClick;
end;

// Собственно сам Click
procedure TForm1.AnimateClick(Sender: TObject);
begin
ShowMessage("Animate clicked!");
end;



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

Форум: "Основная";
Текущий архив: 2002.05.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
1-26151
Punk
2002-04-25 06:06
2002.05.09
PageControl


1-26177
Gumbert-Gumbert
2002-04-24 21:05
2002.05.09
Вопрос к специалистам (и не специалистам) по написанию компонент


1-26107
Voit
2002-04-26 21:20
2002.05.09
Помогите найти описание компоненты char!!! (если можна на емайл)


1-26062
Александр_30
2002-04-25 09:20
2002.05.09
получение значений массива из функции


1-26088
Alibaba
2002-04-26 15:35
2002.05.09
Мой тип.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский