Builder C++ event scrollbar

0

Witam,

W Builderze jest event "OnChange" ScrollBar. Czyli za kazdym razem gdy przesune scrollbara o jedna pozycje to kod z eventu zostanie wykonany. W momencie gdy gwaltowanie przesune scrolla o 100 pozycji, to ten kod zostanie wykonany kilka razy. Da sie zrobic tak, ze event zadziala dopiero gdy puszcze suwak?

Pozdrawiam
Nieposkromiony Kot

0

Da sie zrobic tak, ze event zadziala dopiero gdy puszcze suwak?

Ale po co? To bardzo denerwujące, gdy suwak działa w sposób przez ciebie zamierzony.

0

Mam napisana funkcje, ktora aktualizuje rysowanie wykresow. Gdy jestem w trakcie przesuwania suwaka to wykres ma problem z odswiezeniem sie. Wolalbym aby event pojawial sie dopiero wtedy gdy puszcze suwak. Wszystko juz dziala,.. poza tym nieszczesnym suwakiem. Nie bardzo chcialbym zmieniac reszte kodu.

0

ScrollBar ma takie fajne zdarzenie jak OnScroll

void __fastcall TForm1::OnScroll(TObject *Sender, TScrollCode ScrollCode, int &ScrollPos)
{
  if (ScrollCode == scEndScroll)
  {
    ShowMessage("finito!");
  }
}

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/StdCtrls_TScrollBar_OnScroll.html oraz http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/StdCtrls_TScrollCode.html

0

Dzieki dobry czlowieku! Ostatnie pytanko. Probowalem zrobic to samo za pomoca GetKeyState. Jednak on reaguje na "press". Da sie jakos wykorzystac GetKeyState tak aby reagowal na "drop" - zwolnienie przycisku? Gdzie mozna poczytac o takich fajnych opcjach jak kolega znalazl w dokumentacji? Przegladalem z 1-2h dokumentacje i nie trafilem na ta strone co kolega... Jakos nie potrafie korzystac z ich dokumentacji.

0

Znalazłem to po prostu przeglądając zdarzenia komponentu TScrollBar rzuciło mi się zdarzenie OnScroll i tak znalazłem rozwiązanie.

Jeśli chodzi o GetKeyState to na szybko nie mam rozwiązania. Nie mniej jednak dla niektórych komponentów jak TForm istnieje zdarzenie OnMouseUp które wykorzystywałem. Można by próbować rozszerzyć scroll bara o takie zdarzenie. Ale pytanie czy jest sens, skoro przewijanie może odbyć się również za pomocą strzałek z klawiatury.

0

Ostatnie pytanko: da sie zablokowac przesuwanie scrollbara w innym sposob niz ScrollBar->Enable = false? Na 200ms musze zablokowac mozliwosc przesuwania scrollbara.Na dluzsza mete takie znikanie scrolla jest irytujace (efekt migania). Moge zrobic tak, ze scroll wraca do poprzedniego ustawienia poki nie wykona sie metoda z if(ScrollCode == scEndScroll) ale to tez powoduje, ze "zaamiga" jeden raz (Powrot z nowej pozycji do starej). Chcialbym aby przez te 200ms Scrollbar byl wyswietalny, ale nie dalo sie go przesunac.

0

Metoda ze zmianą właściwości Enabled wydaje się być najbardziej właściwa. Ja zawsze ją stosuję w podobnych przypadkach i nie mam z tym problemów. A co Ci nie pasuje w niej?

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