![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно отслеживать изменения вида курсора? [D7, XP]
worldmen © (2011-04-09 12:10:00)Я перемещаю курсор программно и мне нужно определить, что курсор находится над текстовым полем в другой проге. При этом курсор изменяет свой вид. Или можно как-то по другому?
clickmaker (2011-04-11 12:14:00) [1]> как определить что он над формой для ввода текста?
см. [2]
worldmen (2011-04-11 12:13:00) [2]Это и все что получается оттуда вытянуть, но как определить что он над формой для ввода текста?
procedure TForm1.Timer2Timer(Sender: TObject);
var CI: TCursorInfo;
begin
CI.cbSize := SizeOf(CI);
GetCursorInfo(CI);
Image1.Picture.Icon.Handle := CI.hCursor; //вид курсора
Label1.Caption:=IntToStr(Ci.hCursor); //номер курсора
Label2.Caption:='X='+IntToStr( CI.ptScreenPos.X);
Label3.Caption:='Y='+IntToStr( CI.ptScreenPos.Y);
end;
clickmaker (2011-04-11 11:09:00) [3]> как я определю, что курсор изменился на текстовый
GetCursorInfo ?
worldmen (2011-04-11 08:46:00) [4]Непонимаю, как я определю, что курсор изменился на текстовый с этими функциями?
function WindowFromPoint(Point: TPoint): HWnd; - Опpеделяет окно, содеpжащее указанную точку.
function GetCursorPos(var Point: TPoint); - Считывает экpанные кооpдинаты текущего положения куpсоpа.
clickmaker (2011-04-09 15:22:00) [5]> нужно определить, что курсор находится над текстовым полем
> в другой проге
GetCursorPos + WindowFromPoint
worldmen (2011-04-09 14:03:00) [6]Написал такой код, а он выводит только значение C=0 (т.е. crDefault), при этом курсор был в виде crSizeNESW - изменение размера. Что не так?
Var C : TCursor;
begin
C:= Screen.Cursor;
case C of
crDefault : Memo1.Lines.Add(' обычно стрелка');
crArrow : Memo1.Lines.Add(' стрелка ');
crCross : Memo1.Lines.Add(' плюсик ');
crIBeam : Memo1.Lines.Add(' текст ');
crSizeNESW : Memo1.Lines.Add(' изменение размера ');
crSizeNS : Memo1.Lines.Add(' изменение размера ');
crSizeNWSE : Memo1.Lines.Add(' изменение размера');
end