ďťż

Ładny brzuch

witam
mam program z menu i komponentem image na cala forme. jak odczytac polozenie kursora w onclick relatywnie do tego obrazka (tak zeby klikajac w lewy gorny rog obrazka uzyskac 0,0)? przy onmousemove delphi od razu podaje te dane, ale w onclik juz nie, a uzywajac mouse.CursorPos.X dostane polozenie od lewego gornego rogu okna, czyli cos czego nie chce.
i drugie pytanie - jak ograniczyc ruch myszy do obszaru jednego komponentu?
Użytkownik Deadeye edytował ten post 05 grudzień 2006, 22:06


1. A czemu nie onmousedown() ?
2. ClipCursor()


1. A czemu nie onmousedown() ?
2. ClipCursor()

1. heh, po prostu nie pomyslalem ze onmousedown bedzie podawal x i y :) dzieki :)
2. czytalem o tym wczesniej, ale nie dziala. uzywam kodu:
procedure TForm1.FormCreate(Sender: TObject); var r:TRect; begin SetCursorPos(form1.Left+50,form1.Top+50); //ustawienie kursora w srodku okna r:=Form1.obraz.BoundsRect; //ograniczenie do image'a ClipCursor(@r); showcursor(false);
dalej sa juz rzeczy niezwiazane w zaden sposob z tym. i nie dziala - mozesz powiedziec dlaczego?
Użytkownik Deadeye edytował ten post 05 grudzień 2006, 23:12
Sprawdź, czy u Ciebie pójdzie:procedure TForm1.FormActivate(Sender: TObject); var r, rf:TRect; begin SetCursorPos(form1.Left+50,form1.Top+50); //ustawienie kursora w srodku okna r:=Form1.Image1.BoundsRect; //ograniczenie do image'a rf:=Form1.BoundsRect; inc(r.Left,rf.Left+(Width-ClientWidth) div 2); inc(r.Top,rf.Top+Height-ClientHeight-4); inc(r.Right,rf.Left+(Width-ClientWidth) div 2); inc(r.Bottom,rf.Top+Height-ClientHeight-4); ClipCursor(@r); //showcursor(false);
Użytkownik Cyrkiel edytował ten post 06 grudzień 2006, 00:21


A ScreenToClient? :)


Sprawdź, czy u Ciebie pójdzie:procedure TForm1.FormActivate(Sender: TObject); var r, rf:TRect; begin SetCursorPos(form1.Left+50,form1.Top+50); //ustawienie kursora w srodku okna r:=Form1.Image1.BoundsRect; //ograniczenie do image'a rf:=Form1.BoundsRect; inc(r.Left,rf.Left+(Width-ClientWidth) div 2); inc(r.Top,rf.Top+Height-ClientHeight-4); inc(r.Right,rf.Left+(Width-ClientWidth) div 2); inc(r.Bottom,rf.Top+Height-ClientHeight-4); ClipCursor(@r); //showcursor(false);
dzieki, dziala. problem byl w tym ze wczesniej dawalem kod w formcreate, w formactivate dzialal nawet ten pierwszy. tyle ze wtedy moglem albo ograniczyc do calego okna (i dzialalo dobrze) albo do image'a (i wtedy kopiowala sie dlugosc i szerokosc, ale left i top bylo do okna, czyli 0, i w efekcie ograniczenie dzialalo od lewego gornego rogu ekranu a nie tam gdzie okno). ty wyliczyles to idealnie, ale moglbys powiedziec skad to sie bierze? domyslam sie, ale np. czemu odejmujesz 4?


domyslam sie, ale np. czemu odejmujesz 4? Niestety eksperymentalnie, myszka trochę uciekała :unsure:


Niestety eksperymentalnie, myszka trochę uciekała :unsure:
te 4 pixele to wysokosc dolnej i bocznej ramki okna w windows xp, wiec to o to chodzilo :) jeszcze raz dzieki ;D
Użytkownik Deadeye edytował ten post 06 grudzień 2006, 14:11
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •