Chương 12: Làm v iệc với các tập hợp

Một phần của tài liệu Ebook kỹ thuật và thủ thuật lập trình visual basic 2010 2011 tập 2 phần 1 xuân thịnh, nam thuận (Trang 34 - 40)

D i» fta ndAr rệ jt(ộ r© Aí lcoj?

30 Chương 12: Làm v iệc với các tập hợp

Câu lệ n h n ày xác đ ịn h thuộc tín h T ext của đối tượng sau cùng trê n form sa n g "B usiness". (Đối tượng k ế cuối dược tạo có m ột index là 1, đối tượng k ế cuối được tạ o có m ộ t in d ex là 2...). Xem xét logic n ày là điều quan trọ n g là b ạn k h ô n g luôn luôn k ế t hợp m ột đối tượng cụ th ể tr ê n form với m ột đối tượng index, bởi vì n ếu m ột đối tượng được th êm vào tậ p hợp, đối tượng mới m a n g vỊ t r í in d ex 0 v à các đối tượng index còn lại được tă n g lê n 1.

Vòng lặ p F or... N ext sau đây sử dụng m ột hộp th ô n g báo để h iể n th ị các tê n của 4 control sau cùng được th êm vào m ột form:;

Dim i As Iníeger For i = 0 To 3

M sgBox(Controls(i).Nam e) Next i

C hú ý r ằ n g vòng lặ p này được r a lệnh xoay vòng th eo chu kỳ từ 0 đến 3 bởi vì đối tượng control sau cùng được th êm vào m ộ t form n ằm ở vị tr í 0. T ro n g p h ầ n tiế p theo b ạn sè học m ột phương p h áp hiệu quả hơn để v iết m ộ t vòng lặp,

V iế t các vòng lặp For Each ... Next

M ặc dù b ạ n có th ể th a m chiếu các th à n h viên của m ột tậ p hợp m ột cách riê n g lẻ, n h ư n g cách hữu dụng n h ấ t dể làm việc với các đối tượng tro n g m ột tậ p hợp là xử lý chúng dưới dạn g m ột nhóm. Thực tế , lý do các tậ p hợp h iệ n hữu là để b ạ n có th ể xử lý các nhóm đối tượng m ột cách hiệu quả. Ví dụ, có th ể b ạn m uốn h iể n th ị, di chuyển, p hàn loại, đổi tê n hoặc đ ịn h lại kích cỡ cả m ộ t tậ p hợp đối tượng cùng m ột lúc.

Đ ể g iải q u y ết loại tá c vụ này, bạn có th ể sử dụng m ột vòng lặp đặc b iệt được gọi là F o r E ach ... N ext để xoay vòng theo chu k ỳ qua các đối tượng tro n g m ộ t tậ p hợp m ỗi lầ n m ột đối tượng. Một vòng lặ p F o r E ach ... N ext tương tự n h ư m ộ t vòng lặp For.-. N ext. Khi m ột vòng lặ p F o r E ach ... N ex t được sử d ụ n g với m ột tậ p hợp Controls, nó trô n g n h ư sau:

Dim C trlVar As Control

For Each CtrlVar In Controls process object

Next CtrlVar

4 0

B iến C trlV ar được k h a i báo là m ột kiểu C ontrol v à đ ạ i d iệ n cho đối tượng h iệ n h à n h tro n g vòng lặ p For Each ... N ext. C ác C o n tro l là các tậ p hợp được giới th iệ u trước đó đại diện cho tấ t cá đối tư ợ ng control tr ê n form h iệ n h à n h . P h ầ n th â n của vòng lập được sử dụng để xử lý các đối tượng riê n g lẻ của tậ p hợp. Ví dụ, có th ể bạn thay đổi thuộc tín h E n ab le đ , Left, Top, T ext, hoặc V isible của các đôi tượng trong tậ p hợp, hoặc có th ể bạn m uôn liệ t kê tê n của m ỗi đối tượng trong một hộp d a n h sách.

___________________________________________ ChUOng 12: L à m v iệ c v ớ i c á c tậ p hợp

Thử nghiệm với các đối tượng trong tập hợp C on trols

T rong các b ài tậ p sau đây b ạn sẽ sử dụng m ã chương tr ì n h đ ể xử lý các từ tr ê n m ột form b ằn g việc sử dụng tập hợp Controls. P ro je ct m à b ạ n sẽ tạo sẽ có b a đối tượng n ú t (button) v à b ạn sẽ tạ o các th ủ tục sự k iệ n th a y đổi các thuộc tín h T ex t của mỗi đô'i tượng, di chuyển các đối tượng s a n g bên phải v à xử lý đối tượng tro n g nhóm m ột cách đặc biệt. Chương tr ì n h sẽ sử dụng b a vòng lặp F o r E ach ... N ext d ể xử lý các đối tượng m ồi lầ n người dùng n h ấ p m ột tro n g các nút.

S ử d ụ n g m ộ t v ò n g l ặ p F o r E a c h ... N e x t đ ể t h a y đ ổ i c á c t h u ộ c t í n h T e x t

1. Tạo m ộ t prọiect V isual B asic M icrosoít Form s A p p licatio n mới được gọi là M y C o n t r o ls C o lỉe c tỉo n .

2. Sử dụng control B utton d ể vẽ ba đối tượng n ú t n ằ m p h ía bẽn trá i

form n h ư được m in h h ọ a ở đây;

- --

Buỉonl

6gUon2

Buỉlcn3

3. Sử dụng cửa sổ P r o p e r t i e s để xác lập thuộc tín h N am e của đối tượng n ú t th ứ b a (ButtonS) sang ''btnM oveObjects'\

C h ư ơ n g 1 2 : L à m v iệ c v ớ i c á c tậ p h ợ p 41

4. N h ấ p đôi đối tượng n ú t đầu tiê n (B u tto n l) tr ê n form.

T h ủ tục sự kiện B uttonl_C lick x u ất h iệ n tro n g Code E ditor. 5. Gõ n h ậ p các câu lện h chương tr ìn h sau đầy:

For Each Ctrl In Controls ctrl.T ext = ■Click M e!’ Next

Vòng lặp F or E ach ... N ext sau đây bước qua tậ p hợp C ontrols trê n fo rm mỗi lầ n m ột control và xác lậ p thuộc tín h T ex t của control sang "Click Me!”. Vòng lặp sử dụng Ctrl dưới d ạn g m ộ t b iế n đô'i tượng tro n g vòng lặp m à b ạn sẽ k h a i báo ở bước tiế p theọ

6. Cuộn đến p h ần trê n cùng của m ản g chương tr ìn h của form và ngay ở t r ê n câu lệ n h Public C lass F o rm l, gõ n h ậ p câu lệ n h sau đây:

Optìorì Iníer Off

C âu lệ n h n ày cho trìn h biên dịch b iế t rằ n g nó không n ê n cố suy luận kiểu của các biến. Vì b ạn sẽ k h a i báo b iế n m ộ t cách tường m in h , tùy chọn suy lu ậ n n ày không cần th iế t. N ếu O ption In fe r được b ậ t và b ạ n cố chạy m à tro n g chương này, có th ể b ạn th ấ y m ột cản h báo cho b iế t rằ n g kiểu cho m ột biến m à b ạn đ an g sử đụng không th ể được suy luận. (Để b iế t th ê n th ô n g tin , xem chương 1).

7. N gay bên dưới câu lệ n h Public C lass F o rm l, gõ n h ậ p com m ent và p h ầ n k h a i báo biến sau đây;

'Declare a v a r ia b le of t y p e Control to r e p r e s e n t f o r m C o n tro ls

Dim Ctrl As Control

P h ầ n k h a i báo biến to àn cục n ày tạo m ột b iế n tro n g kiểu class C ontrol đại diện cho các control của form h iệ n h à n h tro n g chương tr ìn h . B ạn k h ai báo b iế n n ày tro n g vùng các p h ầ n k h a i báo k h ái q u át của form sao cho nó hợp lệ xuyên suốt qua t ấ t cả th ủ tục sự kiện của form.

B ây giờ b ạn s ẵ n sàng chạy chương tr ìn h v à th a y đổi thuộc tín h T ext cho mỗi n ú t tr ê n form.

8. N h ấ p n ú t S t a r t D e b u g g ỉn g tr ê n th a n h công cụ S ta n d a rd để chạy chương trìn h .

4 2 C h ư ơ n g 12: Làm v iệ c v ớ i các tập hợp

9. N h â p n ú t đầu tiê n tr ê n form (B uttonl).

T hủ tục sự k iệ n B uttonl_C lick th ay đổi thuộc tín h T ext cho mỗi control tro n g tậ p hợp Controls. Form của bạn trô n g tương tự n hư sau: Oy Porml Q ic k M e Ị □ i c k M e ĩ n ■ ■ ■■ i 10. N h ấ p n ú t C ỉo s e tr ê n form. Chương tr ìn h k ế t thúc.

Các thay đồi thuộc tính Text được thực hiện bởi chương trình đã không đưỢc sao chép trên form bên trong Designer, Các thay đổi được thực hiện và thời gian chạy sẽ không thay đổi các xác lập

th uộc tín h cô’t lòi c ủ a chương trình.

11. N h ấp n ú t S a v e A ll tr ê n th a n h công cụ S ta n d a rd đ ể lưu các thay đổị Xác lậ p folder C :\V b l0 s b s \C h a p l2 làni vị trí.

Bây giờ b ạn sẵn s à n g th ử m ột cuộc thứ nịíhiệm k h ác với tậ p hợp C ontrols: sử dụng thuộc tín h L eft để di chuyển mỗi control tro n g tập hợp C ontrols sa n g b ên trá ị

S ử đ ụ n g m ộ t v ò n g l ặ p F o r E a c h ... N e x t d ể d i c h u y ể n c á c c o n tro l. 1. H iển th ị lạ i form v à sau đó n h ấp đôi đối tượng n ú t th ứ h a i (Button2). 2. Gõ n h ập m ã chương tr ìn h sau đây trong th ủ tục sự kiện Button2_Click:

For Each Ctrl In Controls

c trl.L e tt = ctrl.L e ữ + 25 Next

C h ư ơ n g 1 2 : Làm v iệ c với c á c lặ p hợp 4 3

Mỗi lầ n người dùng nh ấp n ú t th ứ hai, vòng lặ p F o r E ach ... N ext bước qua các đối tượng tro n g tậ p hợp C ontrols lầ n lượt từng đối tượng m ột và di chuyển chúng sang bên p h ả i 25 pixel. (Để di chuyển các đôl tượng sa n g b ên trá i 25 pixel, b ạn trừ đi 25). M ột pixel là m ột đơn vị đo độc lậ p với th iế t bị m à qua dó b ạ n có th ể d ịn h vị trí các đối tượng tr ê n m ột form m ột cách chính xác.

N h ư tro n g th ủ tục sự kiện trước m à b ạn đã gõ n h ập , b iế n Ctrl là m ột "người đóng t h ế vai" cho đối tượng h iệ n h à n h tro n g tậ p hợp v à chứa các xác lậ p thuộc tín h giống y n hư đối tượng m à nó đại diện. Trong vòng lặ p n à y b ạ n có th ể điều ch ỉn h thuộc tín h L eft để quyết đ ịn h vị tr í của m ộ t đối tượng tưcmg ứng với p h ía b ên t r á i form.

3. N h ấ p n ú t s t a r t D e b u g g in g .

Chương tr ìn h chạy và ba n ú t xuất h iệ n ở p h ía b ên tr á i form. 4. N h ấ p n ú t đầu tiê n và sau đó n h ấp n ú t th ứ h a i m ộ t vài lần.

Các n ú t tr ê n form th ay đổi th à n h "Click Me!" v à sau đó m ỗi lầ n bạn n h ấ p n ú t th ứ h ai, các đối tượng trê n form dần d ân di chuyển sang b ên p h ảị M àn h ìn h trô n g n h ư sau sau 5 lầ n n h ấp :

5. N h ấ p n ú t C lo s e tr ê n form đ ể dừng chương trìn h . 6. N h ấ p n ú t S a v e A ll để lưu các th a y đổị

B ạ n sẽ không luôn muốn di chuyển t ấ t cả đối tượng tr ê n m ột form dưới d ạn g m ộ t nhóm. Với V isual Basic, b ạ n có th ể xử lý riê n g lẻ các th à n h viên tậ p hợp. Trong bài tậ p tiế p theo b ạ n sẽ học cách giữ đối tượng n ú t th ứ b a ở m ột vị tr í tro n g k h i h a i n ú t còn lạ i di chuyển s a n g b ên phảị

Sử đụng thuộc tín h Name trong m ột vòng lặp For Each ... N ext

Nếu b ạ n m uôn xử lý m ột hoặc nhiều thành viên của m ộ t tậ p hợp m ột cách k h ác với b ạn xử lý những th à n h viên, bạn có th ể sử d ụ n g thuộc tín h N am e, thuộc tín h n ày n h ậ n dạng duy n h ấ t mỗi đòl tượng tr ê n form . B ạn đà xác lậ p thuộc tín h th eo định kỳ trong sách này để làm cho m ã chương tr ìn h dê đọc hơn, nhưĩig N am e cũng có th ể được sử dụng b ằn g lậ p tr ì n h để n h ậ n d ạn g các đô'i tượng riê n g b iệ t tro n g chương trình.

Đ ể sử dụng thuộc tín h N am e bằng lập trình, chọn r a các đối tượng m à b ạn m uốn xử lý đặc b iệ t và sau đó ghi chú các thuộc tín h N am e của chúng. Sau dó k h i b ạ n lặ p lạ i qua các đôì tượng trê n form b ằ n g việc sử dụng m ột vòng lặ p F o r Each... N ext, bạn có th ể sử dụng một hoặc n h iề u câu lệ n h I f để te s t các thuộc tín h N am e quan trọ n g và xử lý những đô'i tượng đó m ộ t cách k h ác nhaụ Ví dụ, b ạ n m uốn tạo một vòng lặp For E ach ... N e x t di chuyển m ột đô'i tượng qua form chậm hơn những đối tượng khác. B ạ n c6 th ể sử dụng m ộ t câu lệ n h I f ... T hen để n h ậ n ra thuộc tín h N am e của đô'i tượng chậm hơn v à sau đó di chuyển đối tượng đó với khoảng cách n g ắ n hơn b ằng cách không g ia tă n g thuộc tín h L eít của nó nhiều b ằng thuộc tín h L eft của nhữ ng đối tượng khác.

Một phần của tài liệu Ebook kỹ thuật và thủ thuật lập trình visual basic 2010 2011 tập 2 phần 1 xuân thịnh, nam thuận (Trang 34 - 40)