Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.02.2006, 07:18
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию Курсор + TRect

Нужна помощь. Мне нужно определить находиться ли курсор мыши на форме в Регионе типа TRect. Использую следующий код функции, но не работает он что-то:

Код:
function CursInReg(R: TRect): Boolean;
var
 CP: TPoint;
begin
GetCursorPos(CP);
if (CP.X>R.left)and(CP.X<R.Right)and(CP.Y>R.Top)and(CP.Y<R.Bottom) then Result:=True else Result:=False;
end;
Если кто-то с етим встречался, то плиз хелп!!!
Ответить с цитированием
  #2  
Старый 10.03.2006, 15:53
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию

Иммено на форме? Я пробовал твою функцию. У тебя получается только на всем screen'е.
Ответить с цитированием
  #3  
Старый 13.03.2006, 05:57
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию

Нужно определить именно на скрине, а не на форме но, у меня почемуто неработает!
Ответить с цитированием
  #4  
Старый 13.03.2006, 19:54
AlexZL AlexZL вне форума
Новичок
 
Регистрация: 06.01.2006
Сообщения: 87
Репутация: 20
Радость

Цитата:
Иммено на форме? Я пробовал твою функцию. У тебя получается только на всем screen'е.

Вот именно, как раз на всем скрине координаты определяются...

А если надо надо определить положение мыши на форме, добавляем метод ScreenToClient.

Код:
function CursInReg(R: TRect): Boolean;
var
 CP: TPoint;
begin
GetCursorPos(CP);
ScreenToClient(Form1.Handle,CP); //Получили координаты на форме
if (CP.X>R.left)and(CP.X<R.Right)and(CP.Y>R.Top)and(CP.Y<R.Bottom) then Result:=True else Result:=False;
end;
Ответить с цитированием
  #5  
Старый 14.03.2006, 07:44
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
Стрелка Позырькась мои исходники

Мне надо чтобы глаз выводился посередки экрана и таращился на курсор мыши, файлы глаз .bmp в папке Dta:
~.bmp-Взгляд Чисто прямо
D.bmp-Вниз
DL.bmp-Вниз и влево
DR.bmp-Взгляд в низ и в право
L.bmp-в Лево
R.bmp-в Право
U.bmp-Взгляд в верх
UL.bmp-Взгляд Вверх и Влево
UR.bmp-Взгляд Вверх-Вправо
Мои исходники немного корявые но я уверен что там все правильно, посмотри что там нетак, правда там еще неготово
L-TImage - скрытый компонент для загрузке .bmp

Код:
Код:
unit CMAIN;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TFMAIN = class(TForm)
    T: TTimer;
    L: TImage;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure TTimer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FMAIN: TFMAIN;
  B: TBitMap;
  DC: HDC;

implementation

{$R *.dfm}

procedure DrawAll;
begin
DC:=GetDC(0);
if (Mouse.CursorPos.X>=Round(Screen.Width/2)-30)and(Mouse.CursorPos.X<=Round(Screen.Width/2)+30)and(Mouse.CursorPos.Y>=Round(Screen.Height/2)-30)and(Mouse.CursorPos.Y<=Round(Screen.Height/2)+30) then
 begin
  FMAIN.L.Picture.LoadFromFile('Dta\~.bmp');
 end;
if (Mouse.CursorPos.Y>=Round(Screen.Width/2)-40)and(Mouse.CursorPos.X>=Round(Screen.Width/2)-30)and(Mouse.CursorPos.X<=Round(Screen.Width/2)+30) then
 begin
  FMAIN.L.Picture.LoadFromFile('Dta\D.bmp');
 end;

if (Mouse.CursorPos.Y<=Round(Screen.Width/2)+40)and(Mouse.CursorPos.X>=Round(Screen.Width/2)-30)and(Mouse.CursorPos.X<=Round(Screen.Width/2)+30) then
 begin
  FMAIN.L.Picture.LoadFromFile('Dta\D.bmp');
 end;

B.Canvas.Handle:=DC;
B.Canvas.Draw(Round(Screen.Width/2)-80,Round(Screen.Height/2)-80,FMAIN.L.Picture.Graphic);
ReleaseDC(0,DC);
end;

procedure TFMAIN.FormCreate(Sender: TObject);
begin
L.Visible:=False;
L.Width:=80;
L.Height:=80;
L.Transparent:=True;
L.Stretch:=True;

B:=TBitMap.Create;
B.Width:=Screen.Width;
B.Height:=Screen.Height;

FMAIN.Width:=0;
FMAIN.Height:=0;

T.Enabled:=True;
end;

procedure TFMAIN.FormDestroy(Sender: TObject);
begin
B.Destroy;
L.Free;
end;

procedure TFMAIN.TTimer(Sender: TObject);
begin
DrawAll;
end;

end.
Ответить с цитированием
  #6  
Старый 19.03.2006, 06:44
Аватар для ~TB~
~TB~ ~TB~ вне форума
Начинающий
 
Регистрация: 17.02.2006
Адрес: Казахстан
Сообщения: 172
Версия Delphi: XE
Репутация: 1500
По умолчанию Усе

Я разобрался с етим!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter