2009-08-14 7 views
6

Od czasu do czasu potrzebuję GUI do ustawienia zakresów numerycznych, ale do tej pory nigdy nie znalazłem żadnego komponentu, który ładnie to zrobi.GUI do ustawiania zakresów numerycznych w Delphi

ja próby następujące:

  • TTrackbars 2: 1 do 1 min, przez maksymalnie

  • TTackbars 2: 1 do 1 min, w zakresie

  • 2 TSpinEdit elementy sterujące do ręcznego wpisywania liczb:

  • ttrackbar with range 1 kontrola TTrackbar z użyciem li naciśnij przycisk, aby przełączyć między trybem min i trybem maks. W trybie min ustawiam selStart iw trybie maksymalnym ustawiam selEnd (z ustawieniem ShowSelRange na true).

Większość opcji zajmuje więcej miejsca na ekranie niż chciałbym i nie są one intuicyjne.

Idealnie, chciałbym coś, co działa jak pasek przewijania w Sony ACID. Można kliknąć i przeciągnąć 3 różne punkty do min, max, lub obu:

Awesome mspaint drawing

Czy istnieje bezpłatny komponent dostępny ustawić zakres, lub może coś podobnego zrobić za pomocą out-of-the -box komponenty VCL kreatywnie?


Aktualizacja

Mam zmodyfikowany TMkRangeSlider do moich potrzeb. Teraz działa jak urok. Wysłałem zmodyfikowany komponent i wersję demo do oryginalnego autora.

TMkRangeSlider 1.1

Odpowiedz

5

Co powiecie na coś takiego, jak Range Slider, by Michael Kochiashvili. Jest darmowy ze źródła, napisany dla Delphi 5 i pochodzi z dema:

alt text http://www.kochini.com/dcomp/rs/ttrian.jpg

to nie ruszy min i max jednocześnie, ale skoro masz źródła, prawdopodobnie można dodać tę funkcjonalność jeśli naprawdę tego potrzebujesz.

+0

Fajnie, nigdy go nie widziałem. Po prostu go pobrałem i będę się z nim bawić. –

+0

Podjęłam twoją radę, przyjmując TMkRangeSlider i modyfikując go. Robi dokładnie to, czego szukałem. Dzięki! –

1

Stosując standardową TScrollBox, jest to technicznie możliwe do wykonania ręcznej błahy jej właściwości pageSize i położenie podczas przeciągania jej kciuk dookoła (ScrollCode = scTrack w OnScroll zdarzenia) do symulacji typu UI pokazano na zrzucie ACID. Problem polega na tym, że 1) nie można narysować właściciela TScrollBar, aby dodać linie przeciągania, i 2) nie ma bezpośredniego sposobu na określenie, która część kciuka użytkownik trzyma mysz w dół (końce w stosunku do środka). Jeśli nie uda Ci się wymyślić dość wiarygodnych obliczeń, aby obliczyć przesunięcia pikseli lewej i prawej krawędzi kciuka w oparciu o bieżącą pozycję i rozmiar strony w stosunku do ogólnego prostokąta klienta, to prawdopodobnie najlepiej byłoby po prostu napisać własne zamiast tego komponent, a następnie możesz sprawić, aby wyglądał i zachowywał się tak, jak chcesz.

+0

W porządku, dziękuję za poradę. To dziwne, że Delphi nie ma czegoś takiego, ponieważ ustawianie zakresów liczbowych jest czymś, co muszę robić przez cały czas, we wszystkich rodzajach aplikacji ... –

+0

Rodzaj opisywanego interfejsu użytkownika nie jest standardem. Dlatego TScrollBox nie obsługuje go natywnie (ponieważ sam system operacyjny nie obsługuje go natywnie). –

Powiązane problemy