System GUI #4 – Przycisk

2007-08-21 14:48

Co można powiedzieć o czymś tak prozaicznym, jak zwykły przycisk? Ano to, że przycisk jest po to, aby go wciskać :) Od strony użytkownika wygląda to więc bardzo prosto – może nawet zbyt prosto, co czasami kończy się źle, jeśli nie czytamy komunikatów przed pochopnym wciśnięciem OK.
Kwestia oprogramowania takiego tworu jak przycisk, aby zachowywał się zgodnie z oczekiwaniami, jest już jednak trochę trudniejsza.

Przy okazji przycisku wychodzi bowiem kwestia tak zwanego mouse capture, które to pojęcie nie ma dobrego tłumaczenia na język polski. Pozwala ono użytkownikowi rozmyślić się i nie dokonać kliknięcia nawet wtedy, gdy zdążył już wcisnąć przycisk myszki. Wystarczy, że – nie puszczając go – odjedzie kursorem poza obszar kontrolki i tam puści przycisk myszy. Wówczas zarówno zdarzenie wciśnięcia, jak i puszczenia przycisku myszy będzie zarejestrowane, lecz to najważniejsze – kliknięcia – już nie.
Ten dość abstrakcyjny byt mouse capture może być przez kontrolkę posiadany lub nie. Jeżeli kontrolka go posiada, wtedy otrzyma ona informacje o zdarzeniach myszy nawet gdy kursor znajduje się poza jej obszarem. Dzięki temu kontrolka przycisku może być poinformowana o tym, że użytkownik zrezygnował z jej wciśnięcia.

Wciśnięcie przycisku i odjechanie kursorem

Pozostaje jeszcze drobna kwestia graficzna. Otóż w Windows kontrolka przycisku “wyciska się”, jeżeli odjedziemy kursorem poza jej obszar (oczywiście cały czas trzymając wciśnięty przycisk myszki). Kiedy znów wrócimy, wciśnie się ponownie, i tak dalej (ciekawym zalecam własnoręczne eksperymenty ;]). Osobiście nie sądzę, żeby takie zachowanie było bardzo intuicyjne, bo chyba bardziej by mi odpowiadało, gdyby kontrolka pozostała cały czas wciśnięta.
Niestety, nie ja ustanawiam standardy interfejsu, więc postanowiłem się dostosować i zaimplementować windowsowe rozwiązanie :)

Tags: , ,
Author: Xion, posted under Programming »


4 comments for post “System GUI #4 – Przycisk”.
  1. spaxio:
    August 21st, 2007 o 16:50

    Tyle tekstu a tak niewiele kodu ;)

  2. Reg:
    August 26th, 2007 o 10:23

    I bardzo słusznie, bo owo “wyciskanie się” po odjechaniu myszą symbolizuje fakt, że po zwolnieniu przycisku myszki poza obszarem nie zaliczy się kliknięcie. Ktoś mądry to wymyślił.

    Jeśli GUI posiada nie tylko grafikę ale i dźwięk, dochodzą nowe sprawy. Na przykład StarCraft ma wielce irytującą cechę, że nawet jeśli klawisz myszy jest wciśnięty nad obszarem przycisku, to po każdorazowym powrocie kursora nad jego obszar od nowa odtwarza się dźwięk wciśnięcia.

  3. Xion:
    August 26th, 2007 o 12:04

    Naprawdę? Nigdy tego nie zauważyłem. Ale to znaczy, że GUI StarCrafta jest wysoce niedorobione. Przecież pierwsze wciśnięcie przycisku powinno generować zdarzenie MouseDown – wtedy odtwarzamy dźwięk – a powroty kursora to już przecież inne zdarzenie – MouseEnter.

  4. krajek:
    July 23rd, 2008 o 21:33

    Hehe, w starcrafcie się gra klawiaturą i nie ma problemów ;).

Comments are disabled.
 


© 2019 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.