OnMouseMove nie wykrywa lewego buttona myszki

0

Witam.
Na wstępie tylko powiem że Turbo Delphi to jakaś porażka. Fakt, środowisko odpicowali nieźle, te podkreślanie błędów, ikonki, po prostu miodzio :-/ ale co chwilę znajduję jakieś błędy w komponentach. Chyba czas na stałe przesiąść się do lazarusa, tam przynajmniej w "Daily snaps" można spodziewać się jakiś poprawek. Ale do tematu. Od kilku godzin męczę się nad komunikatami myszy a dokładnie Drag&Drop. To w TrayIcon w OnMouseDown zawsze w Shift jest lewy przycisk, to w OnMouseMove komponentu są wszystkie oprócz lewego to teraz w GetKeyState(VK_LBUTTON) przychodzi sobie co chce. Ja już nie wytrzymuję. Chce tylko zrobić Drag&Drop buttonów w Toolbarze:

procedure TMyToolButton.MyToolButtonMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  //jeżeli wcisniety jest lewy przycisk myszy to rozpoczynamy
  // proces DND
  if (ssLeft in [Shift]) then
    TMyToolButton(Sender).BeginDrag(False);
end;

Nie ma w ogóle ssLeft, pomyślałem sobie, zawsze przecież zostaje WinAPI, ale w GetKeyState(VK_LBUTTON) przychodzą jakieś cuda. W helpie jest coś na temat bitów, przyznaję że to mój słaby punkt, ale obojętnie co bym nie sprawdzał: GetKeyState(VK_LBUTTON)=0; GetKeyState(VK_LBUTTON)<0; GetKeyState(VK_LBUTTON)>0 zawsze coś sie wali, nagle włącza się tryb Drag&Drop jak kursor w ogóle nie jest na buttonie, albo jak najeżdżam powoli na button to jest ok ale jak najadę szybko to włącza się drag&drop. Albo za dużo piw wypiłem, albo nie wiem, ale mam już dzisiaj serdecznie dość delphi, przynajmniej tego Turbo a wiązałem z nim nadzieje że dzięki niemu delphi znów wróci na podium. Ktoś wie o co kaman? Ostatecznie spróbuję jakoś zrobić DnD na samych zdarzeniach Toolbara, pewnie bez jakiś flag się nie obejdzie, bo toolbar nie ma żadnego property ItemIndex (zaznaczony - źrodłowy button)

0

Ściągnij Delphi 7 Personal

0

Do tej pory robiłem na D7, ale niestety ten projekt musi być zrobiony w TD, ponieważ w przyszłości ma być tak jakby komercyjny a licencja TD na to pozwala.

0

U mnie działa wykrywanie czy jest lewy przycisk wciśnięty (pod warunkiem że nacisnąłem go na toolbarem na którym robię OnMmouseMove), więc to nie jest tego wina. Może masz zły Drag&Drop albo gdzie indziej w kodzie zwalniasz lewy przycisk myszy

0

Dla toolbara może i działa, jeżeli tak to dobrze, spróbuję tam. Mi nie dziala dla buttona (OnMouseMove przypisane do TToolButton)

0

Jak misze OnMouseMove dla toolbara, to wywołuje się jak najadę na przyciski z tego toolbara

0

D2005 Personal (np. z jakiegoś magazynu komputerowego) pozwala na komercyjne wykorzystanie programów. Nawet się o to mailowo pracowinków Borlanda pytałem.
Pozdrawiam!

0

D2005 personal chyba jeszcze nie, ale Turbo na pewno (dlatego musze napisać to w tym środowisku ;) )

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