Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

SpeedButton на Delphi

Hi!
Есть SpeedButton на Delphi.Есть ли какие-то варианты кроме как OnMouseMove
чтоб узнать находится ли курсор на кнопке или нет?

Ответить   Sat, 07 Feb 2004 00:19:56 +0200 (#73680)

 

Ответы:

Здравствуйте !

Может, 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

Ответить   Sat, 7 Feb 2004 03:43:19 +0300 (#73738)

 

Вся чепуха в том, что если быстро сувать мышь, то не реагирует :-( (т.е.
курсор остается на кнопке, хотя его там физически нет). Короче, нужно
что-то быстрее OnMouseMove

Ответить   Sat, 07 Feb 2004 03:02:38 +0200 (#73755)

 

А быстрее тока перехват сообщений от форты напрямую

С уважением 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

Ответить   Sat, 7 Feb 2004 11:22:57 +0600 (#73796)

 

Здравствуйте !

Только что дошло, что вам надо сделать...
Собственно, это классика. Есть такая штука как 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

Ответить   Sun, 8 Feb 2004 11:19:19 +0300 (#74520)

 

Здорово.

Неа.
Нечего не получиться. Виндовс почти без задержки передает сообщения в
нужное окно. Ускорение на несколько команд видимого эффекта не дает.
Скорей всего ошибка в программе. Возможно слишком много вложено в саму
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

Ответить   "victorkyd" Wed, 11 Feb 2004 00:07:10 +0300 (#75988)

 

Помоему нигде... у Microsoft не OpenSource'овское ядро и проги тоже :-(

Ответить   Tue, 10 Feb 2004 20:02:38 +0200 (#76910)

 

Здравствуйте.

Вы полагаете, что если бы это было известно, то их бы еще не украли?

Гм... у MicroSoft нет исходников? :) Или имелось ввиду, что они не
опубликованы?

Ответить   Болюба Георгий Wed, 11 Feb 2004 10:31:29 +0300 (#77308)

 

Привета!

Гы! :-)) OpenSource - это поняте такое! Вот у Линуха ядро OpenSource. Т.е.
зашел - скачал исходник, пересобрал и работай на здоровье... А у Виндовоза
не...
Разве что в VC есть такая фича DIZASM (или DISASM)...короче, в сейфмоРде
можно виндовозное ядро разобрать асмом :-)

Ответить   Thu, 12 Feb 2004 00:09:39 +0200 (#78155)

 

Кстате недавно были обнаружены дыры во всех Виндах...




Номер выпуска : 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

Ответить   info@l*****.tk Thu, 12 Feb 2004 10:41:45 +0200 (#78314)

 

Здравствуйте.

Гм... Не понял как это к сабжу относиться, ну да фиг с ним...

Ответить   Болюба Георгий Thu, 12 Feb 2004 12:18:03 +0300 (#78323)

 

Hi!

Я написал, что у МайкаСофта:) проги не OPenSource'овские, на что
кто-то(лень смотреть) сказал следующее:

Вот собственно ему это и посвещалось (что такое OPenSource)

Ответить   -=BorMaN=- Sat, 14 Feb 2004 16:52:46 +0200 (#80133)

 

Здравствуйте.

Собсна, это я сказал :)
только я знаю, что такое OpenSource, а вы вырвали фразу из контекста
:)

Если внимательно изучить всю тему с начала, то создается впечатление,
что если у МS не OpenSource, то и исходники ни где не храняться...

"проги не OPenSource'овские" - вроде в первый раз было только ядро ;)

Ответить   Болюба Георгий Mon, 16 Feb 2004 10:35:23 +0300 (#80968)

 

Здраствуйте.

Сегодня по 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

Ответить   "victorkyd" Sun, 15 Feb 2004 00:19:41 +0300 (#79791)

 

Здравствуйте.

Такие заявления корпорация МS выдает раз в год. При этом результата
нет...

Ответить   Болюба Георгий Mon, 16 Feb 2004 10:29:08 +0300 (#80963)

 

Даааа!!! У Майкрософт нееет исхооодников! Виндовс рождается из чрева Била
Гееейтсааа! Ууууха-ха-ха-хааааа. :)

Ответить   Thu, 12 Feb 2004 16:53:35 -0800 (#79286)

 

Здравствуйте.

Била

Не, я понял - исходники есть, но они нигде не храняться. Некая
абстрактная стральная метасущность...

Ответить   Болюба Георгий Fri, 13 Feb 2004 15:25:57 +0300 (#79310)

 

Hi!

Нигде не хранятся...ну ты загнул %))
А вся инфа у тебя на компе тоже нигде не хранится или как :-)
Или ты все хранишь исключительно в Инет?е!
Короче, у МайкаСофта есть туева хуча локальных серваков, на которых могут
хранится все сорцы...
А может и в инете есть (к примеру может быть адрес 192.123.24.35 -
попробуй угадай IP тачки, где ВСЕ лежит!)
P.s.Если угадаешь адресс машины с сорцами МикроСофта - пиши нам :-))

Ответить   -=BorMaN=- Sat, 14 Feb 2004 19:57:17 +0200 (#80196)

 

Здравствуйте.

ЭТО НЕ Я СКАЗАЛ :) ЧИТАЙТЕ ТЕМУ С НАЧАЛА :)!

мды...

я с этим согласен

мды. Товарисч, в инете тачки с таким адресом быть не может :)
подумайте на досуге почему...

Нет у них сорцев в инете, не было, и не будет...

Ответить   Болюба Георгий Mon, 16 Feb 2004 10:41:04 +0300 (#80972)

 

Здравствуйте !

Кстати, вот здесь :
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

Ответить   Fri, 13 Feb 2004 21:39:09 +0300 (#79677)

 

Привет!

Ну так это же другое дело. Желанные исходники ХЛ2 тоже просочились...

Ответить   Sat, 14 Feb 2004 05:52:54 -0800 (#79888)

 

Дрова!!!

Всего выше описаного в проге нет... весь цыкл можно увидеть в мессаге Re:
SpeedButton на Delphi от Mon, 09 Feb 2004 19:49:59 +0200

Ответить   Tue, 10 Feb 2004 20:02:45 +0200 (#76911)

 

Не! имеется ввиду 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

Ответить   Wed, 11 Feb 2004 01:03:46 +0600 (#76998)

 

Дрова!!!

Всего выше описаного в проге нет... весь цыкл можно увидеть в мессаге Re:
SpeedButton на Delphi от Mon, 09 Feb 2004 19:49:59 +0200

Ответить   Tue, 10 Feb 2004 20:48:32 +0200 (#76970)

 

Помоему нигде... у Microsoft не OpenSource'овское ядро и проги тоже :-(

Ответить   Tue, 10 Feb 2004 20:48:35 +0200 (#76971)

 

Есть конечно, по 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

Ответить   Sat, 7 Feb 2004 11:23:17 +0600 (#73797)

 

Здравствуйте, 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

Ответить   Feniks Mon, 9 Feb 2004 11:40:14 +0200 (#75366)

 

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'ы

Ответить   Mon, 09 Feb 2004 19:49:59 +0200 (#75726)

 

Здарова, 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;

--
Никогда больше не буду говорить афоризмами. Да, кстати, запишите мою последнюю
фразу

Ответить   Томилов Александр Tue, 10 Feb 2004 08:22:20 +0500 (#77013)

 

Дрова!!!
Вот именно то, что нужно!!!

Все офигенно просто и без мозго___!!! Спасибо! Действительно, если все так
описать - работает 100%

Ответить   Tue, 10 Feb 2004 23:29:26 +0200 (#77103)