Jak wywołac systemowy kursor wyboru łącza

dział ogólny

Jak wywołac systemowy kursor wyboru łącza

Nowy postprzez mckri » sobota, 1 listopada 2008, 22:41

Witam.
W jaki sposób mozna dla obiektu (np. Label) po najechaniu na niego myszką, wywołać systemowy kursor wyboru łącza (domyslnie to jest 'łapka')? Builder standardowo posiada kilka kursorów powiązanych z systemowymi (np. crAppStart, crHourGlass), ale 'łapki' systemowej tam nie ma. Wczytanie tego kursora do zasobów programu raczej odpada. Różne wersje Windows maja rózne kursory. Zalezy mi na wywołaniu własnie tego systemowego.
Avatar użytkownika
mckri
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): piątek, 15 sierpnia 2008, 13:48
PodziÄ™kowaÅ‚ : 10
OtrzymaÅ‚ podziÄ™kowaÅ„: 2
System operacyjny: Windows Vista SP2
Kompilator: BCB 5/2007/2009
    NieznanyNieznana

Re: Jak wywołac systemowy kursor wyboru łącza

Nowy postprzez Cyfrowy Baron » sobota, 1 listopada 2008, 23:40

Niemal każdy komponent posiada właściwość Cursor i w tej właściwości możesz wybrać jaki kursor ma być przypisany do danego obiektu, Domyślnie ta właściwość ma wartość crDefault, ale jeżeli chcesz łapkę to wybierz kursor crHandPoint.
Poza tym zawsze możesz umieÅ›cić w zasobach programu dowolny kursor i możesz go przypisać do dowolnego obiektu. Patrz ► patrz serwis: Cyfrowy Baron -> Spis wszystkich porad -> dziaÅ‚: Kursor. Tam masz opisane jak używać kursorów.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: Jak wywołac systemowy kursor wyboru łącza

Nowy postprzez mckri » sobota, 1 listopada 2008, 23:55

Wiem że Builder dostarcza inne podobne kursory. Dlatego że sa podobne a nie takie same, więc odpadaja.
Pozostaje wczytać lokalizację pliku kursora z rejestru. Dzieki.
Avatar użytkownika
mckri
Intelektryk
Intelektryk
 
Posty: 160
Dołączył(a): piątek, 15 sierpnia 2008, 13:48
PodziÄ™kowaÅ‚ : 10
OtrzymaÅ‚ podziÄ™kowaÅ„: 2
System operacyjny: Windows Vista SP2
Kompilator: BCB 5/2007/2009
    NieznanyNieznana

Re: Jak wywołac systemowy kursor wyboru łącza

Nowy postprzez Cyfrowy Baron » niedziela, 2 listopada 2008, 10:24

Nie od razu zrozumiałem o co Tobie dokładnie chodzi.
Nie musisz od razu pobierać ścieżki dostępu do takiego kursora z rejestru, istnieją prostsze metody.
Kursor systemowy można przypisać do obiektu w zdarzeniu OnMouseMove dla obiektu Label:

Kod: Zaznacz cały
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1MouseMove(TObject *Sender, TShiftState Shift,
     int X, int Y)
{
HCURSOR cursor = LoadCursor(NULL, IDC_HAND);
::SetCursor(cursor);
}
//---------------------------------------------------------------------------


gdzie IDC_HAND to jest właśnie "łapka".
Kursor "łapki" - systemowy - będzie w tym przypadku widoczny tylko na obiekcie Label i jeżeli zjedziesz kursorem z tego obiektu to zostanie przywrócony kursor domyślny, czyli nie potrzebujesz żadnego kodu więcej przywracającego kursor domyślny.



Identyfikatory dla innych kursorów:

  • IDC_APPSTARTING - strzaÅ‚ka z małą klepsydrÄ… - praca w tle
  • IDC_ARROW - strzaÅ‚ka - wybór normalny
  • IDC_CROSS - krzyżyk - wybór precyzyjny
  • IDC_HAND - rÄ…czka - wybór łącza
  • IDC_HELP - strzaÅ‚ka z pytajnikiem - wybór pomocy
  • IDC_IBEAM - pionowa kreska - wybór tekstowy
  • IDC_ICON - przestarzaÅ‚y, nie używany - brak kursora
  • IDC_NO - znak zakazu - niedostÄ™pny
  • IDC_SIZE - przestarzaÅ‚y, nie używany - brak kursora
  • IDC_SIZEALL - krzyżak ze strzaÅ‚kami - przenieÅ›
  • IDC_SIZENESW - zmiana wym. po przekÄ…tnej 2
  • IDC_SIZENS - zmiana wymiaru pionowego
  • IDC_SIZENWSE - zmiana wym. po przekÄ…tnej 1
  • IDC_SIZEWE - zmiana wymiaru poziomego
  • IDC_UPARROW - strzaÅ‚ka skierowana do góry - wybór alternatywny
  • IDC_WAIT - klepsydra - zajÄ™ty
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość