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

Вниз

Не получается . Реакция на событие OnMouseMove.   Найти похожие ветки 

 
Зачем-надо ©   (2007-09-24 18:44) [0]

Почему-то при реакции на событие TForm1.Button1MouseMove при нажатой левой кнопке мыши и перемещении курсора с кнопки, координата стрелки курсора продолжает передаваться. Проверяю так: form1.edit1.Text := intTostr(X)
При этом события кроме onMouseMove "не трогаю".

Есть вопросы :
1. как исключить подобные ситуации - см. в начале

2. Где в дельфи определяется поведение формы (приложения) при нажатых кнопках мыши правой или левой, или вообще обоих?

Заранее спасибо.


 
Вася Правильный   (2007-09-24 18:55) [1]

1. мышь движется? тогда чего ты хочешь? сам же на движение обработку сделал
2. OnMouseDown


 
DiamondShark ©   (2007-09-24 18:56) [2]

Потому что есть такая штука Mouse Capture.


> 1. как исключить подобные ситуации - см. в начале

Не пользоваться контролами, которые захватывают мышь


> 2. Где в дельфи определяется поведение формы (приложения)
> при нажатых кнопках мыши правой или левой, или вообще обоих?

В данном случае -- нигде. Это поведение стандартного виндового контрола.


 
MOO   (2007-09-24 19:06) [3]

Когда будет орешник пополняться, а?


 
Зачем-надо ©   (2007-09-24 21:30) [4]


> мышь движется? тогда чего ты хочешь? сам же на движение
> обработку сделал
хочу чтобы при движении по кнопке  указателем координата передавалась , а когда убираю курсор с поверхности кнопки не передавалась. Даже если нажимаю какие либо кнопки мыши

> 2. OnMouseDown
Че это событие можно использовать для всех кнопок мыши? Можно на примере показать.


 
{RASkov} ©   (2007-09-24 21:44) [5]

> [4] Зачем-надо ©   (24.09.07 21:30)

Может ты расскажешь, что конкретно тебе нужно и для чего?

1) PtInRect
2) ~WndProc

Ответишь на вопрос выше - тогда может проще будет ответить на твои...


 
{RASkov} ©   (2007-09-24 22:23) [6]

> [4] Зачем-надо ©   (24.09.07 21:30)
> Че это событие можно использовать для всех кнопок мыши?

Событие не используется для кнопок мыши...
Как вообще понять твой вопрос????

Есть события которые генерирует "мышь", нажатие кнопки, перемещение, отпускание кнопки, "кручение" колеса мыши.....
И если у какого либо контрола есть обработчик на перехват каких либо действий от мыши, то как правило в этом обработчике есть дополнительные параметры касающиеся данного события... Например в OnMouseDown есть Button: TMouseButton; Shift: TShiftState; X, Y: Integer
где Button - это как раз та кнопка которая в данный момент вызвала данный обработчик
   Shift - содержит дополнительные параметры как по мыши, так и по клавиатуре
   X и Y - собственно координаты мыши относительно контрола который вызвал данный обработчик.
Я здесь рассматривал только "естественный" вызов данного обработчика....

>для всех кнопок мыши?
Только не думай что в Button: TMouseButton; есть все имеющиеся на твоей мыши кнопки, если у тебя мышь имеет более трех стандартных кнопок...


 
Зачем-надо ©   (2007-09-24 23:20) [7]

зачем - зачем , хочу научиться писать программы. Считаю это занятие интересным .
Пытаюсь самостоятельно разобраться в Pascal . Вроде бы понятный и наглядный язык. Но ошибки все равно появляются . С некоторыми самостоятельно не справляюсь. Спрашиваю у более опытных в программировании.
Вот и все.  Я ответил на ваш вопрос?

Сейчас "колдую" над прогой с кнопкой. наверняка сталкивались  . Идея такая курсор мыши надвигается на кнопку а она уходит в сторону от стрелки. При этом на пользователя направлена камера, она начинает его фоткать. Потом комп вырубается , и так продолжается несколько раз. Далее смотрим фотки , смеемся. ))


 
{RASkov} ©   (2007-09-24 23:51) [8]

> [7] Зачем-надо ©   (24.09.07 23:20)
> хочу научиться писать программы
......

> Идея такая курсор мыши надвигается на кнопку а она уходит
> в сторону от стрелки. При этом на пользователя направлена
> камера, она начинает его фоткать.

не с того начал изучение. Попробуй начать с самого начала, а не с другой стороны....

> Я ответил на ваш вопрос?

Сорри.... я все равно подробно не понял что же нужно-то, но это и понятно - почему я не понял.
Так как ты и спросить-то пока по делфи не умеешь :) (или правильнее не знаешь что и как спросить).

Вот попробую ответить на
> [4] Зачем-надо ©   (24.09.07 21:30)
> хочу чтобы при движении по кнопке  указателем координата
> передавалась , а когда убираю курсор с поверхности кнопки
> не передавалась


function IsMouseInControl(Ctrl: TControl; const X, Y: Integer): Boolean; overload;
begin
 Result:=PtInRect(Ctrl.ClientRect, Point(X,Y));
end;

function IsMouseInControl(Ctrl: TControl): Boolean; overload;
var P: TPoint;
begin
 GetCursorPos(P);
 P:=Ctrl.ScreenToClient(P);
 Result:=PtInRect(Ctrl.ClientRect, P);
end;

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 //3 "почти разных" способа
 if PtInRect(TControl(Sender), Point(X, Y)) then Caption:=Format("X=%d Y=%d", [X, Y])
//или  if IsMouseInControl(TControl(Sender), X, Y) then Caption:=Format("X=%d Y=%d", [X, Y])
//или  if IsMouseInControl(TControl(Sender)) then Caption:=Format("X=%d Y=%d", [X, Y])
 else Caption:="Mouse not in "+Sender.ClassName+".ClientRect";
end;


А вот это:

> Сейчас "колдую" над прогой с кнопкой. наверняка сталкивались
> . Идея такая курсор мыши надвигается на кнопку а она уходит
> в сторону от стрелки. При этом на пользователя направлена
> камера, она начинает его фоткать. Потом комп вырубается
> , и так продолжается несколько раз

Во первых.... подозрение, что прога вообще никому не нужная... даже автору(т.е. тебе)
Во вторых это не вопрос.... это ТЗ какое-то или что-то, но.... точно не вопрос...
В третьих.... Подумай хорошенько - нужно ли тебе это и если нужно, то почитай книжки и посмотри примеры....


 
{RASkov} ©   (2007-09-24 23:57) [9]

> Зачем-надо ©

ЗЫ: А за ник тебя накажут :) Может даже и ветку(и) закроют(ывать будут).


 
Зачем-надо ©   (2007-09-25 18:41) [10]


> Так как ты и спросить-то пока по делфи не умеешь :) (или
> правильнее не знаешь что и как спросить).
это точно. Ну  будем учиться.

> function IsMouseInControl(Ctrl: TControl; const X, Y: Integer):
>  Boolean; overload;begin  Result:=PtInRect(Ctrl.ClientRect,
>  Point(X,Y));end;function IsMouseInControl(Ctrl: TControl):
>  Boolean; overload;var P: TPoint;begin  GetCursorPos(P);
>   P:=Ctrl.ScreenToClient(P);  Result:=PtInRect(Ctrl.ClientRect,
>  P);end;procedure TForm1.Button1MouseMove(Sender: TObject;
>  Shift: TShiftState; X, Y: Integer);begin  //3 "почти разных"
> способа  if PtInRect(TControl(Sender), Point(X, Y)) then
> Caption:=Format("X=%d Y=%d", [X, Y])//или  if IsMouseInControl(TControl(Sender),
>  X, Y) then Caption:=Format("X=%d Y=%d", [X, Y])//или  if
> IsMouseInControl(TControl(Sender)) then Caption:=Format("X=%d
> Y=%d", [X, Y])  else Caption:="Mouse not in "+Sender.ClassName+".
> ClientRect";end;


А можно к этому комментарий, а то не очень понятно. Или ссылку на что нибудь подходящее.

Бальшое спасибо за помощь


 
{RASkov} ©   (2007-09-25 20:20) [11]

> [10] Зачем-надо ©   (25.09.07 18:41)
> А можно к этому комментарий, а то не очень понятно

А что тебе конкретно в приведенном коде не понятно?
Сам понимаешь, что расписывать все с нуля никто не будет....
В двух словах:
В обработчике OnMouseMove Кнопки1 параметрами X и Y передаются координаты мыши относительно той самой кнопки
Когда у мыши зажата кнопка, то контрол(кнопка) "захватывает" события мыши(есть на это причины см help(F1)).
Мы эти координаты проверяем функцией PtInRect и если мышь в "нужном месте" то "одно" если нет то "другое"
То, что вынесено в отдельные функции, это, грубо, одно и то же.... просто я вынес для... возможно, удобства...
Читай буквари.

> Бальшое спасибо за помощь

Пажаласта :(
:)


 
Dmitro ©   (2007-09-25 22:38) [12]

Вот те код:

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
 button1.left:= random(width - button1.width - 2);
 button1.top:= random(height - button1.height - 2);
 //ДЕЛАЕМ ФОТКУ
 //СОХРАНЯЕМ ФОТКУ
end;

Странно только - как ты фотку-то делать собрался и чем........... уж не ВЕБ-ли камерою??????


 
Dmitro ©   (2007-09-25 22:49) [13]


> {RASkov} ©
> В двух словах:
> В обработчике OnMouseMove Кнопки1 параметрами X и Y передаются
> координаты мыши относительно той самой кнопки
> Когда у мыши зажата кнопка, то контрол(кнопка) "захватывает"
> события мыши(есть на это причины см help(F1)).
> Мы эти координаты проверяем функцией PtInRect и если мышь
> в "нужном месте" то "одно" если нет то "другое"
> То, что вынесено в отдельные функции, это, грубо, одно и
> то же.... просто я вынес для... возможно, удобства...
> Читай буквари.


БЛИН, ну вы даете......!!!!!!!!!
Это ж форум для начинающих....
Твоя задача - понять о чем спрашивают и сразу выложить исходник про это. При чем исходник должен знать что такое "Form1.Button1", "Form1.Edit1", и т.п. и СРАЗУ РАБОТАТЬ!!!

А ТОЖ ДЕЛФЯ ВЫМРУТЬ НАФИХ.......


 
{RASkov} ©   (2007-09-25 23:28) [14]

> [12] Dmitro ©   (25.09.07 22:38)

Давай теперь комментируй свой код :)
Только не мне, а пацану...
Заодно сразу и расскажи ему про

> //ДЕЛАЕМ ФОТКУ
> //СОХРАНЯЕМ ФОТКУ

Или ты думаешь он не поинтересуется? :)

> А ТОЖ ДЕЛФЯ ВЫМРУТЬ НАФИХ.......

Делфи точно "вымрет", если пишущие на ней люди думать не будут.


 
Dmitro ©   (2007-09-25 23:54) [15]


> {RASkov} ©   (25.09.07 23:28) [14]
> Делфи точно "вымрет", если пишущие на ней люди думать не
> будут.

Вообще - согласен с тобой в данном случае, а

> > //ДЕЛАЕМ ФОТКУ
> > //СОХРАНЯЕМ ФОТКУ
>
> Или ты думаешь он не поинтересуется? :)

думаю, что нет. Уже не поинтересуется.

Или пусть, хотя-бы скажет - что за камера у него там: мож и ПАМОЖИМ.


 
{RASkov} ©   (2007-09-26 00:05) [16]

> [15] Dmitro ©   (25.09.07 23:54)
> Или пусть, хотя-бы скажет - что за

Скажет... скажет, не переживай...)

> мож и ПАМОЖИМ

Будешь сам с ним выкручиваться
почти шутка. :)


 
Dmitro ©   (2007-09-26 00:13) [17]

Попробуем... Сам мучался, но со своего Panasonic""а пикчу в TBitmap загнал. (давно это было...). И то - методом ТЫКА юзал DLLку от его ПО (хорошо, что в DLLке было сделано.:-)).
Но интерфейс к WEB-камерам всегда организован ч/з функции из DLL.


 
Зачем-надо ©   (2007-09-27 17:30) [18]

Жаль что придется вас расстроить (: но веб камеры у меня пока еще нет. Собирался купить как только закончу с алгоритмом "перемещения кнопки".Где-то за 1,5 т.р  Кстати может посоветуете какую камеру купить, с какими характеристиками. Или наоборот какую не стоит покупать.


 
(MiTch) ©   (2007-09-27 17:37) [19]


> думаю, что нет. Уже не поинтересуется.
Еще как интересно

(****-надо)
Я бы от помощи не отказался. Может резюмируете то над чем я работал (прога с кнопкой). скажете что так , что не так. Куда лезть не стоит. Думаю это бы мне помогло.
Могу выложить здесь на форуме ну или куда скажете.


 
Virgo_Style ©   (2007-09-27 21:24) [20]

(MiTch) ©   (27.09.07 17:37) [19]
Куда лезть не стоит.


В западлостроительство (с) лезть не стоит.


 
Зачем-надо ©   (2007-09-27 22:39) [21]


> Virgo_Style

Спокойно чувак, свои))))))

Зачем-надо := (MiTch)

:D ))))))))


 
Dmitro ©   (2007-09-27 22:43) [22]


> Кстати может посоветуете какую камеру купить, с какими характеристиками.
>  Или наоборот какую не стоит покупать.

1. Составь список камер, которые можно приобрести в городе.
2. Лезь в net и и ищи исходники (зачастую на сях) либо описание к ф-ям для этих камер.
3. Приобретаешь камеру, к которой нашел больше всего!



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

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

Наверх





Память: 0.53 MB
Время: 0.043 c
15-1190633232
Ega23
2007-09-24 15:27
2007.10.21
Может я чего не так понимаю...


2-1191224656
Lexx1
2007-10-01 11:44
2007.10.21
.ini не создается(


2-1190806117
F@T@L_Err0r
2007-09-26 15:28
2007.10.21
Связка


1-1186573487
NKT
2007-08-08 15:44
2007.10.21
Приложение SDI - меню и взаимодействие форм


2-1190460474
vegarulez
2007-09-22 15:27
2007.10.21
Подскажите функцию для посчёта количества символов...





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