![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ClipCursor() [D5, Win95/98]
Schummi © (2002-05-25 15:38:00)Доброго времени суток, Мастера. Такой вопрос. Использую процедуру ClipCursor() - ограничивает область для курсора. Однако возникает ошибка EAccessViolation. Почему она возникает и как от неё избавиться? Спасибо!
Walker (2002-05-27 02:27:00) [1]Ха-ха-ха!
var
r:TRect;
begin
//r.Left, Right and so on
ClipCursor(@r);
end;
Song (2002-05-26 23:04:00) [2]2mukha © (26.05.02 19:05)
А почему не совсем удачно? Насколько я помню в ClipCursor() нужно передавать переменную типа PRect
ION T (2002-05-26 19:36:00) [3]Да просто ClipCursor(nil) надо вызывать для освобождения....
mukha (2002-05-26 19:05:00) [4]Мне тоже не удалось решить такую проблему. Для ограничения перемещения курсора областью формы я поступил следующим образом, не совсем удачно, но работает:
// ограничение области перемещения курсора
procedure TForm1.FormCreate(Sender: TObject);
var
aRect:TRect;
begin
Form1.BorderStyle:=bsSingle;
GetWindowRect(Handle, aRect);
ClipCursor(@aRect);
end;
// снятие ограничения перемещения курсора
procedure TForm1.FormDestroy(Sender: TObject);
var
aRect:TRect;
begin
arect:=rect(0,0,GetSystemMetrics(SM_CXFULLSCREEN),GetSystemMetrics(SM_CxFULLSCREEN));
ClipCursor(@aRect);
end;
Song (2002-05-26 12:38:00) [5]Интересно, а если ты передаёшь в процедуру ClipCursor nil, тогда зачем ты задавал R?
Schummi (2002-05-26 10:20:00) [6]2KilkennyCat
procedure TForm1.Button1Click(Sender: TObject);
var
R:PRect;
begin
R.Left:=0;
R.Right:=400;
R.Top:=0;
R.Bottom:=400;
ClipCursor(nil);
end;
Schummi (2002-05-26 10:19:00) [7]2KilkennyCat Как???
KilkennyCat (2002-05-26 09:52:00) [8]Из хелпа:
Remarks
The cursor is a shared resource. If an application confines the cursor, it must release the cursor by using ClipCursor before relinquishing control to another application.
Ошибка о доступе. Вывод: освободи курсор перед вызовом.
KilkennyCat (2002-05-26 09:49:00) [9]Приведи кусок кода, а то как же понять, почему ошибка...
Schummi (2002-05-26 09:48:00) [10]Народ, может так:
var
R:TRect;
begin
...
ClipCursor(^R);
...
end;
Просто я так делал:
var
R:PRect;
begin
...
{присваивание значений Top, Left, Right, Bottom в R}
ClipCursor(R);
...
end;
Schummi (2002-05-26 09:11:00) [11]2ZZ
Издеваешься? А так как же?
ZZ (2002-05-25 16:06:00) [12]Ошибка в 17 строке