jak zrobić zeby kursor nie mógł wyjśc poza obszar formy?

0

Witam, jak zrobic w Delphi zeby kursor nie mógł wyjśc poza obszar formy? ewentualnie zeby jak uzytkownik bedzie probowal wyjsc poza obszar formy to zeby kursor ustawial sie na jej srodku. domyslam sie ze trzeba uzyc tego: GetCursorPos(xy); ale nie mam pojecia co dalej, szukalem na forach i w googlach i nic :-|

0

albo dokładnie taka porada jest na tej stronie albo bardzo podobna
http://cyfbar.republika.pl/
w każdym razie poczytaj porady to napiszesz to sam :)

/edit
ha znalazłem
http://cyfbar.republika.pl/curious.html#cur2

0

ale podales mi z C++ a jak zrobic to w delphi?????????????

0

aj, w tym kodzie nie ma nawet co tłumaczyć na delphi

 TRect R = Rect(Left + Memo1->Left + 4,
                Top + Memo1->Top + 30,
                Left + Memo1->Left + Memo1->Width + 4,
                Top + Memo1->Top + Memo1->Height + 30);
 ClipCursor(&R);

hmm ..
var
R : TRect;
begin
R.Left = Left + Memo1.Left + 4;
R.Top = Top + Memo1.Top + 30;
R.Right = Left + Memo1.Left + Memo1.Width + 4;
R.Bottom = Top + Memo1.Top + Memo1.Height + 30;
ClipCursor( ^R) ;

Nie mam pojęcia czy to jest dobrze dawno nie pisałem w delphi

0

wywala bląd przy: ClipCursor( ^R) ;
[Error] Unit1.pas(35): Incompatible types: 'Char' and 'PRect'
hehe widocznie cos tam trzeba tlumaczyc:)

0
cjv napisał(a)

wywala bląd przy: ClipCursor( ^R) ;
[Error] Unit1.pas(35): Incompatible types: 'Char' and 'PRect'
hehe widocznie cos tam trzeba tlumaczyc:)

hmm, tam ma być referencja do recta, nie wiem jak wygląda referencja w delphi wydawało się że tak "^"
spróbuj jeszcze napisać tak:
ClipCursor( R);

i koniecznie do uses dodaj windows

0

dlaej nie dziala;(

ehhh moze ktos jednak wie jak to zrobic w delphi?;> nijak sobie z tym nie radze a jest mi bardzo potrzebne

0
var R:TRect;
begin
R:=Rect(100, 100, 200, 200);
ClipCursor(@R);
end;

Pamiętaj, że po każdej zmianie stanu okna powinieneś wywołać to ponownie.

Edycja: komentarz do poniższego - jak chcesz ograniczyć kursor do ruchu tylko po powierzchni okna, a nie jego obszarze systemowym, zerknij na ten kod:

R:=GetClientRect();
R.TopLeft:=ClientToScreen(R.TopLeft);
R.BottomRight:=ClientToScreen(R.BottomRight);
ClipCursor(@R);
0

Umieszczam to w tym dziale bo mysle ze może sie niejednemu przydać, ale decyzja i tak nalezy do moderatora;) a wiec to trzeba wkleic zeby kursor myszy nie mogl wyjsc poza forme:

var
R : TRect;
begin
R.Left :=  form1.Left ;
R.Top :=   form1.Top  ;
R.Right :=  form1.Left + form1.Width;
R.Bottom := form1.Top + form1.Height ;
ClipCursor( @R) ;

1 użytkowników online, w tym zalogowanych: 0, gości: 1