Mam jeszcze jedno pytanie.
Mam tablice SpeedButtonów i tworzę je dynamicznie na formie. Mają one wymiary 20 na 20. I układam sobie co dwadzieścia począwszy od top=0 i left=0 i sobie w pętli daję np 5 rzędów po 5 kolumn.
Podpiąłem pod onMoUseup procedurke która coś tam robi(np wyświetla który buton nacisnąłem) przy czym tylko i wyłącznie to sie robi, gdy po przytrzymaniu klawisza nie przesunę kursora na inny przycisk. Mam nadzieje że wiecie o co mi chodzi. Jak sie naciśnie butona i nagle sie ktoś rozmyśli to wystarczy przytrzymać klawisz myszki i "ściągnąć" kursor w inne miejsce. No i ok. Zrobiłem to. Robię to w następujący sposób:(mniej więcej):
określam granicę lewą, prawą, górną i dolną dla butona. Czyli top(left) i ew +20
czyli dla przycisku 1,2 (licząc od zera) mam granice: x1=20,x2=39, y1=40, y2=59
No i ok. Ciągle wszystko w porządku. Liczy dobrze.
Teraz liczę rzeczywiste współrzędne dla miejsca, w którym puściłem klawisz myszki. Ponieważ położenie mouse.cursorpos. Zwraca on położenie myszki w współrzędnych ekranowych. Innymi słowy punkt(0,0) jest w lewym górnym rogu EKRANY a nie formy. Wiec odejmuję od tej wartości wysokość i szerokość formy.
No i jest ciągle ok. Teraz pozostaje odjąć wysokość belki formy. Liczę to w następujący sposób: forma.wysokość-forma.wysokość clienta. No i tutaj zaczyna sie problem. Wyszła mi belka =25. Jednak jak sobie kliknę w narożniku formy to wychodzi ujemny Y. niewiele np -3, ale ujemny. Zaznaczam że obramowanie jest ustawione na 0 itd. Również współrzędna X jest trochę przekłamana. Jak klikam w pobliżu PRAWEJ krawędzi butona, którego położenie może być maxymalnie 20 - tak jest ustawione, pokazuje np 22. Przypuszczam że chodzi o ten minimalny jakby cień formy, ale nie umiem tego policzyć.
Wie ktoś jak to zrobić dokładnie? Mianowicie żeby punkt (0,0) był zbieżny z rogiem butona o położeniu left i top=0?