2009-08-14 37 views
6

Đôi khi, tôi cần một GUI để đặt phạm vi số, nhưng cho đến nay tôi chưa bao giờ thực sự tìm thấy bất kỳ thành phần nào thực hiện điều đó một cách độc đáo.GUI để đặt dãy số trong Delphi

Tôi đã cố gắng như sau:

  • 2 TTrackbars: 1 phút, 1 cho max

  • 2 TTackbars: 1 phút, 1 cho phạm vi

  • 2 TSpinEdit các điều khiển để nhập các số theo cách thủ công

  • ttrackbar with range 1 Điều khiển TTrackbar, với li nút tinh tế để chuyển đổi giữa chế độ tối thiểu và chế độ tối đa. Trong min-mode tôi đặt selStart và ở chế độ max tôi đặt selEnd (với ShowSelRange được đặt thành true).

Hầu hết các tùy chọn chiếm nhiều diện tích màn hình hơn tôi muốn và chúng không trực quan.

Lý tưởng nhất, tôi muốn một cái gì đó hoạt động giống như thanh cuộn trong Sony ACID. Bạn có thể nhấp và kéo 3 điểm khác nhau để các min, max, hoặc cả hai:

Awesome mspaint drawing

Có bất kỳ thành phần miễn phí có sẵn để thiết lập một phạm vi, hoặc một cái gì đó tương tự có thể được thực hiện bằng cách sử dụng out-of-the thành phần VCL -box một cách sáng tạo?


Cập nhật

Tôi đã sửa đổi TMkRangeSlider cho phù hợp với nhu cầu của tôi. Nó hoạt động như một sự quyến rũ bây giờ. Tôi đã gửi thành phần đã sửa đổi và bản trình diễn cho tác giả gốc.

TMkRangeSlider 1.1

Trả lời

5

Làm thế nào về một cái gì đó như Range Slider, by Michael Kochiashvili. Đây là phần mềm miễn phí với nguồn, viết cho Delphi 5 và đi kèm với một bản demo:

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

nó sẽ không di chuyển min và max cùng một lúc, nhưng kể từ khi bạn đã có những nguồn, bạn có thể có thể thêm chức năng đó nếu bạn thực sự cần nó.

+0

Cool, chưa bao giờ thấy cái đó trước đây. Chỉ cần tải về nó, và tôi sẽ được chơi xung quanh với nó. –

+0

Tôi đã lấy lời khuyên của bạn bằng cách lấy TMkRangeSlider và sửa đổi nó. Nó thực hiện chính xác những gì tôi đang tìm kiếm bây giờ. Cảm ơn! –

1

Sử dụng một TScrollBox tiêu chuẩn, nó là kỹ thuật có thể làm một số không quan trọng bằng tay PageSize và Vị trí thuộc tính của nó trong khi kéo ngón tay cái của mình xung quanh (ScrollCode = scTrack trong trường hợp OnScroll của nó) để mô phỏng các loại giao diện người dùng bạn đã thể hiện trong ảnh chụp màn hình ACID. Vấn đề là 1) bạn không thể chủ sở hữu-vẽ một TScrollBar để thêm các dòng kéo, và 2) không có cách trực tiếp để xác định phần nào của ngón tay cái người dùng đang giữ chuột xuống (kết thúc so với giữa). Trừ khi bạn có thể đưa ra một số tính toán khá đáng tin cậy để tìm ra các điểm ảnh bên trái và bên phải của ngón tay cái dựa trên Vị trí và PageSize hiện tại liên quan đến hình chữ nhật của khách hàng tổng thể, thì có lẽ bạn nên viết đơn giản nhất thành phần thay vào đó, và sau đó bạn có thể làm cho nó trông và hành xử dù sao bạn muốn.

+0

Được rồi, cảm ơn lời khuyên. Thật kỳ lạ khi Delphi không có bất cứ thứ gì như thế này, bởi vì việc thiết lập dãy số là thứ tôi cần phải làm mọi lúc, trong tất cả các loại ứng dụng ... –

+0

Loại UI bạn mô tả không phải là tiêu chuẩn. Đó là lý do tại sao TScrollBox không hỗ trợ nó nguyên bản (vì bản thân hệ điều hành bên dưới không hỗ trợ nó nguyên bản) –

Các vấn đề liên quan