Witam, mam pytanko ;]
Jak mogę odczytać powiedzmy do TLabel informacje, w którym miejscu znajduje się myszka na danym komponencie?(licząc od ich krawędzi) Przykład możemy znaleźć w programie Paint...
Witam, mam pytanko ;]
Jak mogę odczytać powiedzmy do TLabel informacje, w którym miejscu znajduje się myszka na danym komponencie?(licząc od ich krawędzi) Przykład możemy znaleźć w programie Paint...
Mouse.pos.x, Mouse.pos.y, ScreenToClient, ClientToScreen, Google ;)
@[losowa_nazwa]:
Jest o wiele prostszy sposób... :D
W każdym komponencie jest 'OnMouseMove'.
procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Wartości X oraz Y są podawane od lewego górnego rogu komponentu.
Patryk27 napisał(a)
@[losowa_nazwa]:
Jest o wiele prostszy sposób... :D
To jest akurat często niewystarczające. Fajne, jeśli sobie machasz myszką i chcesz wyświetlić koordynaty. A co jeśli chcę poznać pozycję w momencie kliknięcia? I np. w tym miejscu rozwinąć PopupMenu?
procedure TMainForm.ButtonClick(Sender: TObject);
var
Pt: TPoint;
begin
GetCursorPos(Pt);
Pt := ScreenToClient(Pt);
PopupMenu1.Popup(Pt.X, Pt.Y);
end;
Patryk27 napisał(a)
W każdym komponencie jest 'OnMouseMove'.
A co z takimi komponentami, które nie dorobiły się OnMouseMove? np.TComboBox, TWebBrowser...
TComboBox, TWebBrowser
Pech...Zapomniałem o tych :D
Dzięki wszystkim za pomoc :)))
Dodaj zmienną typu TPoint.
dodaj taka funkcję
var
Punkt: TPoint;
begin
GetCursorPos(Punkt);
end;
Teraz w zmiennej Punkt sa koordy myszy zakładając że punkt 0, 0 jest pierwszym pixelem monitora.
Teraz zrub tak:
var
Punkt: TPoint;
X, Y: Integer;
begin
X := Punkt.X - ( Form1.Left + Button1.Left );
Y := Punkt.Y - ( Form1.Top + Button1.Top );
end;
Teraz w zmiennych X, Y są koordy myszy zakładajc że punkt 0, 0 jest pierwszym pixelem buttona czy co tam masz.
PS; A gwarantuje że wszystkie wizualne komponent mają właściwości Left i Top
PSS; Najlepiej wstaw to w OnClick
TomRiddle, zrub? bo zrubić? "... "Mądry nie zauważy, a głupi pomyśli że tak ma być..." - tutaj to nie działa :)
BTW: a co będzie jeśli button będzie na panelu, który jest na panelu, który jest na kolejnym panelu? Przeliczanie pozycji będzie wtedy małym koszmarkiem. Użycie ScreenToClient, ClientToScreen i google naprawdę ułatwia życie!