2011-12-05 32 views
9

Tôi đang sử dụng delphi 7 và tôi đang cố gắng tạo giao diện thuật sĩ. Tôi không biết liệu có một cách dễ dàng hơn để tạo trình hướng dẫn hay không, vì vậy tôi đã nghĩ đến việc tạo các biểu mẫu riêng cho từng bước của trình hướng dẫn và khi người dùng nhấp vào "Tiếp theo", biểu mẫu đang hoạt động sẽ đóng và biểu mẫu tiếp theo sẽ mở ra.tạo giao diện thuật sĩ trong delphi 7

Dưới đây là một màn hình-shot của hai hình thức tiếp: screen-shot

Tôi đã thực hiện một thủ tục mà phải mất 2 hình thức như thông số: hình thức sẽ được đóng cửa và các hình thức tiếp theo của wizard

class Procedure Tspad.nextForm(showForm, closeForm: TForm); 
begin 
    closeForm.Close; 
    showForm.Showmodal; 
end; 

Khi tôi nhấp vào "Next" nút mã folowing được thực hiện:

Tspad.nextForm(echipContractForm, clientContractForm); 

Khi tôi chạy chương trình, và tôi nhấn nút "Next", hình thức apeare tiếp theo s nhưng curent một không gần.

Tôi có thể thực hiện công việc này như thế nào hoặc có cách nào khác hiệu quả hơn để tạo trình hướng dẫn không?

+4

Sử dụng TPageControl: http://delphi.about.com/od/delphitips2007/qt/hidepagectrltab.htm – SimaWB

+3

Dự án Jedi (JVCL) có thành phần thuật sĩ được gọi là [TJvWizard] (http: //wiki.delphi-jedi. org/wiki/JVCL_Help: TJvWizard). –

Trả lời

20

Một cách rất phổ biến để thực hiện thuật sĩ là sử dụng điều khiển trang. Mỗi trang riêng biệt của trình hướng dẫn là một trang/tabsheet khác trong điều khiển trang. Tôi tin rằng đây là cách Windows thực hiện các trình thuật sĩ hiệu quả.

Tự nhiên bạn muốn ẩn tất cả các tab. Thực hiện việc này bằng cách đặt TabVisible thành False cho mỗi tabsheet. Khi bạn muốn tiến lên và lùi lại qua trình hướng dẫn, ví dụ: khi người dùng nhấp vào các nút tiếp theo hoặc trước đó, hãy thực hiện điều này bằng cách đặt ActivePage hoặc ActivePageIndex tùy thuộc vào tùy chọn của bạn.

+0

Đây là cách tôi đã thực hiện nó trong quá khứ. Có một biểu mẫu riêng cho trình hướng dẫn của bạn, với điều khiển trang và một số nút. –

+0

tôi đồng ý với điều này mà còn với ý tưởng của LaKraven để tạo biểu mẫu trên mỗi trang và gắn các trang vào thời gian chạy. Nếu không, các pháp sư có xu hướng biến thành một quả cầu khổng lồ của spaghetti. –

+0

@Warren LaKraven thực sự đề xuất khung chứ không phải là biểu mẫu và tôi giả định lắp ghép chúng vào thời gian thiết kế. Nhưng cả hai cách hoạt động và có thể là một kỹ thuật rất tốt để giữ cho spaghetti bay, tôi đồng ý. –

14

Phương pháp hay để phân chia nội dung được hiển thị trên một biểu mẫu là sử dụng Khung.

A Khung rất giống như một biểu mẫu, ngoại trừ nó không có Cửa sổ riêng, mà là nằm bên trong Biểu mẫu máy chủ .

Khi kết hợp với (như David Heffernan đã gợi ý) một TPageControl hoặc thậm chí một TNotebook (mà là khá nhiều-chính xác giống như TPageControl, chỉ có nó không có Tabs để bắt đầu với), bạn kết thúc với một Wizard dễ bảo trì.

+2

+1 nhưng 'TNotebook' là một chút kỳ quặc. Có vẻ như di sản đối với tôi và có lẽ hơi khó sử dụng hơn một chút. –

+0

Tôi đề cập đến nó bởi vì tôi không thể nhớ nếu TPageControl thực sự tồn tại trong Delphi 7 (tôi sử dụng nó rất nhiều những ngày này, nhưng không thể nhớ bao giờ nhìn thấy nó circa Delphi 7) – LaKraven

+2

Có nó đã có mặt trong D7 và dài trước đó quá –

2

Bạn có thể kiểm tra một số thành phần có thể giúp bạn thực hiện tác vụ này (sử dụng nội bộ tPageControl hoặc TNotebook). Xem this link.

Trân trọng.

11

JVCL có quyền kiểm soát tốt để thực hiện thuật sĩ theo cách rất đơn giản và hiệu quả (TJvWizard). Xem http://jvcl.delphi-jedi.org/

+0

Đồng ý. Tiết kiệm cho bạn rất nhiều thời gian tái phát minh bánh xe. –

0

Bạn cũng có thể xem xét TMS TAdvSmoothStepControl (không miễn phí!). Một giải pháp khác, nhưng chỉ 'bên ngoài' cho chương trình của bạn, là sử dụng Inno Setup để tạo Trình hướng dẫn, ngay cả đối với mục đích 'không cài đặt cài đặt'. Trong thực tế với Inno Setup bạn có thể thực hiện rất nhiều suy nghĩ (sửa đổi tập tin .ini và đăng ký, bắt đầu/dừng chương trình ...) có thể hữu ích cho một thuật sĩ mà không cần 'cài đặt' một chương trình.

+1

Câu lệnh cuối cùng trong câu trả lời của bạn cho rằng OP đang cố gắng tạo một Trình hướng dẫn cài đặt. Các ảnh chụp màn hình đề xuất khác. Tôi khuyên bạn nên chỉnh sửa phần trả lời của bạn và để lại lời khuyên của TAdvSmoothStepControl (một thành phần tốt cho chắc chắn) – LaKraven

+0

@LaKraven Trong khi việc sử dụng chính cho Cài đặt Inno là tạo một cài đặt cài đặt, bạn cũng có thể sử dụng nó (với một số hack) như một Wizard cho các hoạt động đơn giản, như đóng một chương trình, thay đổi các tệp .ini theo các lựa chọn của người dùng và chạy lại chương trình. Có thể nó không phải là rõ ràng cho tất cả và tôi sẽ chỉnh sửa câu trả lời của tôi. – philnext

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