Người dùng chọn đối tượng

Một phần của tài liệu Tài liệu hướng dẫn thực tập tốt nghiệp công nghệ thông tin (Trang 111 - 113)

Trong chương trình, ngồi việc vẽ các đối tượng, VDraw còn cho phép ng ười dùng tương

tác với các đối tượng đó. Ví dụ như khi bạn xây dựng một chương trình vẽ sơ đồ kết cấu với VDraw. Sau đó, người dùng chọn các thanh ho ặc nút trong s ơ đồ để nhập các giá tr ị tải

trọng. Để thực hiện được chức năng này, ta dùng ph ương thức Select của đối tượng con

CommandAction trong VDraw với cú pháp sau: VDraw41.CommandAction.CmdSelect( SelectMode ) Trong đó:

- VDraw41: Tên đối tượng VDraw, tên được sử dụng trong ví dụ là tên mặc định của đối tượng đối với phiên bản 4.1

- CommandAction: đối tượng thuộc lớp VDCOMMAND dùng để tương tác v ới

VDraw thông qua các l ệnh tương tự các l ệnh thường sử dụng trong AutoCAD

(Zoom, Select, Copy, Move, Erase, Line, Rectangle, Circle...)

- SelectMode: Tham số xác định cách thức để lựa chọn đối tượng, có thể có các giá trị

như sau:

o "ALL": Chọn tất cả các đối tượng trong Document

o "LAST": Đối tượng được tạo ra sau cùng

o "PREV": Chọn các đối tượng được chọn ở lệnh gần nhất

o "USER": Cho phép ng ười dùng chọn đối tượng bằng chuột (chọn bằng cách

pick đối tượng hoặc bằng cửa sổ - giống AutoCAD). Để xác nh ận các đối

o Một SelectionSet

o Một đối tượng (ví dụ: đoạn thẳng, đường trịn....)

Trong trường hợp để người dùng chọn đối tượng, ta sử dụng tham số SelectMode với giá trị "USER". Tuy nhiên, giải pháp này gặp phải một số vấn đề, xét ví dụ sau:

Tạo mới 1 Project, trên form m ặc định, thêm vào 1 VDraw control (tên là VDRAW41) và

một nút lệnh (tên là Command1), sau đó nhập vào đoạn chương trình sau: Private Sub Form_Load()

VDRAW41.ActiveDocument.Entities.AddLine Array(0, 0), Array(5, 5) VDRAW41.ActiveDocument.Entities.AddCircle Array(0, 0), 2

End Sub

Private Sub Command1_Click()

VDRAW41.CommandAction.CmdSelect "USER" ' Chuyển sang chế độ người dùng chọn MsgBox "Chon xong roi" ' Hộp thoại này sẽ hiện ra khi... ' ...người dùng chọn xong đối tượng

End Sub

Khi chạy chương trình, chúng ta thấy VDraw control có một đoạn thẳng và một đường trịn

(do Sub Form_Load vẽ ra).

Click chuột vào Command1 r ồi di chuột đến đoạn thẳng và click ti ếp, ta thấy đoạn thẳng được chọn nhưng không thấy hộp thoại hiện ra. Nếu tiếp tục click vào đường trịn thì c ả đường tròn cũng được chọn nhưng hộp thoại cũng không hiện ra.

Click phải chuột trong VDraw control thì bạn mới thấy hộp thoại xuất hiện, có nghĩa là lệnh tiếp sau của lệnh CmdSelect chỉ được gọi khi người dùng click phải chuột. Điều này dễ gây hiểu lầm cho người sử dụng, do đó chúng tơi đưa ra một giải pháp khác, xét ví dụ sau: Tạo mới 1 Project, trên form mặc định, thêm vào 1 VDraw control (tên là VDRAW41) và 2

nút lệnh (tên là Command1 và Command2), sau đó nhập vào đoạn chương trình sau: Private Sub Form_Load()

VDRAW41.ActiveDocument.Entities.AddLine Array(0, 0), Array(5, 5) VDRAW41.ActiveDocument.Entities.AddCircle Array(0, 0), 2 (adsbygoogle = window.adsbygoogle || []).push({});

VDRAW41.ActiveDocument.Entities.AddRect Array(2, 2), 2, 2 End Sub

Private Sub Command1_Click()

VDRAW41.CommandAction.CmdSelect "USER" End Sub

Private Sub Command2_Click() Dim ob As VDFIGURE

For Each ob In VDRAW41.ActiveDocument.Entities If ob.HighLight Then

MsgBox ob.Type End If

VDRAW41.CommandAction.Cancel End Sub

Đoạn chương trình trên cũng gần giống ở ví dụ trước:

- Sub Form_Load: Vẽ một đoạn thẳng, một đường tròn và một hình chữ nhật

- Sub Command1_Click: Chuyển sang ch ế độ người dùng ch ọn đối tượng (nhưng

không đợi người dùng click phải chuột)

- Sub Command2_Click: Sử dụng cấu trúc For Each...Next để duyệt qua tất cả các đối tượng của VDraw, tìm xem đối tượng nào đang bđánh dấu (thuộc tính

HighLight) thì hiển thị kiểu (Type) của nó ra bằng MsgBox. Sau khi duyệt xong thì

bỏ chế độ chọn bằng phương thức Cancel của CommandAction.

Bây giờ bạn có thể chạy thử nghiêm chương trình. Click nút Command1 để chọn đối tượng. Sau khi chọn xong đối tượng cần thiết, bạn Click nút Command2 để xem đối tượng nào đang được chọn.

Tóm lại, việc lựa chọn đối tượng theo phương pháp thứ nhất hoặc thứ 2 tùy thuộc vào yêu

cầu của ứng dụng. Yêu cầu đặt ra là ph ải lựa chọn được phương pháp thích h ợp sao cho

người dùng khơng cảm thấy khó chịu khi sử dụng.

Một phần của tài liệu Tài liệu hướng dẫn thực tập tốt nghiệp công nghệ thông tin (Trang 111 - 113)