SpeedButton на Delphi

Hi!
Есть SpeedButton на Delphi.Есть ли какие-то варианты кроме как OnMouseMove
чтоб узнать находится ли курсор на кнопке или нет?
За последние 60 дней ни разу не выходила
Сайт листа:
http://codeguru.ru
Открыт:
21-09-2003
Пре-модерация: Нет
Адрес для писем в лист: comp.soft.prog.prog-list@subscribe.ru
Адрес
модератора: comp.soft.prog.prog-owner@subscribe.ru
Hi!
Есть SpeedButton на Delphi.Есть ли какие-то варианты кроме как OnMouseMove
чтоб узнать находится ли курсор на кнопке или нет?
Вся чепуха в том, что если быстро сувать мышь, то не реагирует :-( (т.е.
курсор остается на кнопке, хотя его там физически нет). Короче, нужно
что-то быстрее OnMouseMove
А быстрее тока перехват сообщений от форты напрямую
С уважением monah
janal***@n*****.ru
Возраст листа : 139
Количество подписчиков : 379
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/73796
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Здравствуйте !
Только что дошло, что вам надо сделать...
Собственно, это классика. Есть такая штука как SetCapture.
Смысл - производится "захват мыши". Все сообщения от мыши после
вызова будут идти в указанное окно. И WM_MOUSEMOVE, конечно,
тоже. То есть даже если мышь за пределами окна, сообщения от нее
придут, и можно легко определить, что она за пределы вышла.
--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru
Номер выпуска : 1814
Возраст листа : 140
Количество подписчиков : 382
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/74520
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Здорово.
Неа.
Нечего не получиться. Виндовс почти без задержки передает сообщения в
нужное окно. Ускорение на несколько команд видимого эффекта не дает.
Скорей всего ошибка в программе. Возможно слишком много вложено в саму
MauseMove,возможно какие-нибудь циклы. Возможно какие-нибудь другие
события отнимают много времени (например Timer).Если это так, то
необходимо удалить лишние процедуры, если невозможно это сделать,
примените тот же механизм, что используется в играх по сети, когда
необходимо по медленной линии передать большое количество данных не
замедляя самой игры. Как говорится: и волки сыты...
Ксати, к вопросу о написании собственной ОС, не знаете на каком серваке
Microsoft хранит свои исходники?
С уважением, Виктор.
-----Original MessageFrom: Victor V. Vakchturov [mailto:forum-moderat***@m*****.ru]
Sent: Sunday, February 08, 2004 11:19 AM
To: comp.soft.prog.prog (3863622)
Здравствуйте !
Только что дошло, что вам надо сделать...
Собственно, это классика. Есть такая штука как SetCapture. Смысл -
производится "захват мыши". Все сообщения от мыши после вызова будут
идти в указанное окно. И WM_MOUSEMOVE, конечно, тоже. То есть даже если
мышь за пределами окна, сообщения от нее придут, и можно легко
определить, что она за пределы вышла.
--
С уважением, Вахтуров Виктор.
Номер выпуска : 1863
Возраст листа : 142 (дней)
Количество подписчиков : 383
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/75988
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Помоему нигде... у Microsoft не OpenSource'овское ядро и проги тоже :-(
Здравствуйте.
Вы полагаете, что если бы это было известно, то их бы еще не украли?
Гм... у MicroSoft нет исходников? :) Или имелось ввиду, что они не
опубликованы?
Привета!
Гы! :-)) OpenSource - это поняте такое! Вот у Линуха ядро OpenSource. Т.е.
зашел - скачал исходник, пересобрал и работай на здоровье... А у Виндовоза
не...
Разве что в VC есть такая фича DIZASM (или DISASM)...короче, в сейфмоРде
можно виндовозное ядро разобрать асмом :-)
Кстате недавно были обнаружены дыры во всех Виндах...
Номер выпуска : 1948
Возраст листа : 144 (дней)
Количество подписчиков : 386
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/78314
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Hi!
Я написал, что у МайкаСофта:) проги не OPenSource'овские, на что
кто-то(лень смотреть) сказал следующее:
Вот собственно ему это и посвещалось (что такое OPenSource)
Здравствуйте.
Собсна, это я сказал :)
только я знаю, что такое OpenSource, а вы вырвали фразу из контекста
:)
Если внимательно изучить всю тему с начала, то создается впечатление,
что если у МS не OpenSource, то и исходники ни где не храняться...
"проги не OPenSource'овские" - вроде в первый раз было только ядро ;)
Здраствуйте.
Сегодня по SNN придставитель Microsoft заявил, что откроет свои
исходники(или уже открыл, я увидел самый,самый конец заявления). Такое
ощущение, что они тоже подписались на рассылку. Ну, да ладно, надо
качать пока не передумали.
С уважением,
Виктор.
Номер выпуска : 1988
Возраст листа : 146 (дней)
Количество подписчиков : 387
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/79791
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Здравствуйте.
Такие заявления корпорация МS выдает раз в год. При этом результата
нет...
Даааа!!! У Майкрософт нееет исхооодников! Виндовс рождается из чрева Била
Гееейтсааа! Ууууха-ха-ха-хааааа. :)
Здравствуйте.
Била
Не, я понял - исходники есть, но они нигде не храняться. Некая
абстрактная стральная метасущность...
Hi!
Нигде не хранятся...ну ты загнул %))
А вся инфа у тебя на компе тоже нигде не хранится или как :-)
Или ты все хранишь исключительно в Инет?е!
Короче, у МайкаСофта есть туева хуча локальных серваков, на которых могут
хранится все сорцы...
А может и в инете есть (к примеру может быть адрес 192.123.24.35 -
попробуй угадай IP тачки, где ВСЕ лежит!)
P.s.Если угадаешь адресс машины с сорцами МикроСофта - пиши нам :-))
Здравствуйте.
ЭТО НЕ Я СКАЗАЛ :) ЧИТАЙТЕ ТЕМУ С НАЧАЛА :)!
мды...
я с этим согласен
мды. Товарисч, в инете тачки с таким адресом быть не может :)
подумайте на досуге почему...
Нет у них сорцев в инете, не было, и не будет...
Здравствуйте !
Кстати, вот здесь :
http://zdnet.com.com/2100-1104_2-5158496.html
сказано, что часть исходников просочилась в инет :-)
--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru
Номер выпуска : 1986
Возраст листа : 145 (дней)
Количество подписчиков : 387
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/79677
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Привет!
Ну так это же другое дело. Желанные исходники ХЛ2 тоже просочились...
Дрова!!!
Всего выше описаного в проге нет... весь цыкл можно увидеть в мессаге Re:
SpeedButton на Delphi от Mon, 09 Feb 2004 19:49:59 +0200
Не! имеется ввиду MouseMove inherited! Именно там, в объекте TMouseMove
могут прятатся лишние тормоза, циклы и им подобное.
С уважением monah
janal***@n*****.ru
Номер выпуска : 1889
Возраст листа : 142 (дней)
Количество подписчиков : 385
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/76998
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Дрова!!!
Всего выше описаного в проге нет... весь цыкл можно увидеть в мессаге Re:
SpeedButton на Delphi от Mon, 09 Feb 2004 19:49:59 +0200
Помоему нигде... у Microsoft не OpenSource'овское ядро и проги тоже :-(
Есть конечно, по WinAPI читаешь позицию курсора и проверяешь, принадлежит ли
она(позиция) кнопке.
А вообще, если не секрет чем МоусМов не угодил?
<<<<<<<<<GetCursurPos(p:TPoint);>>>>>>>>>>>>>>
С уважением monah
janal***@n*****.ru
Возраст листа : 139
Количество подписчиков : 379
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/73797
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Здравствуйте, Boris.
Вы писали 7 февраля 2004 г., 0:19:56:
Похожую фишку я делал с TLabel.
Мне надо было, что бы при наведении мыши на TLabel менялся шрифт и
цвет, а когда мышь уходила с него, возвращать все назад.
Покапав инфу в инете и куча FAQ-шек, я пришел к выводу, что это
решается только следующим методом:
- создаешь новый компонент на основе того, который тебе нужен
(TSpeedButton)
- в своем классе ловишь и обрабатываешь сообщения CM_MOUSEENTER и
CM_MOUSELEAVE.
Вот мой рабочий класс:
unit EMailLabel;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TEMailLabel = class(TLabel)
private
{ Private declarations }
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
protected
{ Protected declarations }
public
{ Public declarations }
published
{ Published declarations }
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TEMailLabel]);
end;
{ TEMailLabel }
procedure TEMailLabel.CMMouseEnter(var Message: TMessage);
begin
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;
procedure TEMailLabel.CMMouseLeave(var Message: TMessage);
begin
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;
end.
После его подключения к Делфи, у этого компонента появляются новые
события: OnMouseLeave и OnMouseEnter. Вот их та и обрабатывай в своей
проге.
P.S. Да поправят меня Великие УМЫ, если я не прав.
С уважением,
Feniks mailto: feni***@b*****.ua
Номер выпуска : 1838
Возраст листа : 141 (дней)
Количество подписчиков : 383
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/75366
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru
Hi!
Довольно познавательный пример!
Для TLabel'a все отлично работает и OnMouseMove...:-(
|if (x<label1.Width-1)and(x>1)and(y<speedbutton1.Height-3)and(y>1) then
|label1.Font.Size:=12
|else label1.Font.Size:=10;
Суть в том, что там обрабатывать и перерисовывать то нечего...
Короче, я скорее всего перейду на TLabel'ы
Здарова, Boris Kolupaev!
9 февраля 2004 г., понедельник, 22:49:59, ты намылил:
Да не, не переходи. Весь смысл в том что при переходе с одного
контрола на другой вызывается MouseMove этого контрола, поэтому надо
просто во всех контролах прописать обработку MouseMove.
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label1.Caption:='Form';
end;
procedure TForm1.SpeedButton1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
label1.Caption:='SpeedButton';
end;
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
label1.Caption:='Button';
end;
--
Никогда больше не буду говорить афоризмами. Да, кстати, запишите мою последнюю
фразу
Дрова!!!
Вот именно то, что нужно!!!
Все офигенно просто и без мозго___!!! Спасибо! Действительно, если все так
описать - работает 100%
Здравствуйте !
Может, GetCursorPos + GetWindowRect + PtInRect ?
--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru
Номер выпуска : 1794
Возраст листа : 139
Количество подписчиков : 379
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/73738
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru
http://subscribe.ru/ mailto:ask@subscribe.ru